/* ===== style.css ===== */
:root {
  --bg1: #1b1440;
  --bg2: #2b1d6b;
  --card: rgba(255, 255, 255, 0.08);
  --card-solid: #2a2160;
  --card-border: rgba(255, 255, 255, 0.14);
  --text: #fff;
  --muted: #b9b1e6;
  --primary: #ffc933;
  --primary-dark: #e6a100;
  --secondary: #3d8bff;
  --danger: #ff4d5e;
  --good: #33d17a;
  --radius: 18px;
  --shadow: 0 10px 30px rgba(8, 4, 30, 0.45);
  --font-display: 'Fredoka', 'Nunito', system-ui, sans-serif;
  --font: 'Nunito', system-ui, sans-serif;
}

* { box-sizing: border-box; }
html, body {
  margin: 0; height: 100%; overflow: hidden;
  background: radial-gradient(1200px 800px at 20% 0%, #3b2a8f 0%, transparent 60%),
              radial-gradient(900px 700px at 100% 100%, #6b1f7a 0%, transparent 55%),
              linear-gradient(160deg, var(--bg1), var(--bg2));
  color: var(--text); font-family: var(--font);
  -webkit-font-smoothing: antialiased; user-select: none; -webkit-user-select: none;
  touch-action: manipulation;
}
input { user-select: text; -webkit-user-select: text; }
button { font-family: inherit; }
.hidden { display: none !important; }
.center { text-align: center; }

#bg-deco {
  position: fixed; inset: 0; pointer-events: none; opacity: .5;
  background-image:
    radial-gradient(circle at 10% 20%, rgba(255,201,51,.25) 0 6px, transparent 7px),
    radial-gradient(circle at 80% 30%, rgba(61,139,255,.25) 0 8px, transparent 9px),
    radial-gradient(circle at 30% 80%, rgba(255,107,203,.25) 0 5px, transparent 6px),
    radial-gradient(circle at 70% 85%, rgba(51,209,122,.25) 0 7px, transparent 8px),
    radial-gradient(circle at 50% 50%, rgba(255,255,255,.08) 0 3px, transparent 4px);
  background-size: 420px 420px, 520px 520px, 380px 380px, 460px 460px, 120px 120px;
  animation: drift 60s linear infinite;
}
@keyframes drift { to { background-position: 420px 840px, -520px 520px, 380px -380px, 460px 920px, 120px 240px; } }

.screen { position: fixed; inset: 0; overflow: auto; }

/* ---------- Buttons & Inputs ---------- */
.btn {
  border: none; cursor: pointer; font-family: var(--font-display); font-weight: 600;
  font-size: 17px; padding: 12px 20px; border-radius: 14px; color: #1b1440;
  transition: transform .12s ease, box-shadow .12s ease, filter .12s;
  box-shadow: 0 5px 0 rgba(0,0,0,.25); position: relative; white-space: nowrap;
}
.btn:hover { filter: brightness(1.08); transform: translateY(-1px); }
.btn:active { transform: translateY(3px); box-shadow: 0 2px 0 rgba(0,0,0,.25); }
.btn:disabled { opacity: .45; cursor: not-allowed; transform: none; filter: grayscale(.4); }
.btn-primary { background: linear-gradient(180deg, #ffe066, var(--primary)); }
.btn-secondary { background: linear-gradient(180deg, #7db3ff, var(--secondary)); color: #fff; }
.btn-danger { background: linear-gradient(180deg, #ff8a95, var(--danger)); color: #fff; }
.btn-good { background: linear-gradient(180deg, #7ef0ae, var(--good)); }
.btn-ghost { background: rgba(255,255,255,.1); color: #fff; box-shadow: 0 4px 0 rgba(0,0,0,.2); }
.btn-big { font-size: 21px; padding: 16px 26px; border-radius: 16px; }
.btn-small { font-size: 14px; padding: 8px 12px; border-radius: 11px; }
.wide { width: 100%; }

.input {
  width: 100%; padding: 12px 14px; border-radius: 12px; border: 2px solid rgba(255,255,255,.15);
  background: rgba(10, 6, 35, .45); color: #fff; font-size: 17px; font-family: var(--font-display);
  outline: none; transition: border-color .15s;
}
.input:focus { border-color: var(--primary); }
.code-input { text-transform: uppercase; letter-spacing: 6px; text-align: center; font-weight: 700; }
.field-label { font-size: 13px; color: var(--muted); font-weight: 800; text-transform: uppercase; letter-spacing: 1px; margin: 12px 0 6px; }
.error-msg { color: #ff8a95; font-weight: 700; min-height: 22px; margin-top: 10px; text-align: center; }
.hint { color: var(--muted); font-size: 14px; }

.card {
  background: var(--card); border: 1px solid var(--card-border); border-radius: var(--radius);
  box-shadow: var(--shadow); padding: 20px; backdrop-filter: blur(10px);
}

/* Startseite, Lobby-Liste und Lobby: siehe lobby.css */

@keyframes popIn { from { transform: scale(.6); opacity: 0; } to { transform: scale(1); opacity: 1; } }
.seg { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 16px; }
.seg button { flex: 1; padding: 10px 0; border-radius: 10px; border: 2px solid rgba(255,255,255,.15); background: rgba(255,255,255,.06); color: #fff; font-family: var(--font-display); font-size: 17px; cursor: pointer; min-width: 44px; }
.seg button.sel { background: var(--primary); color: #1b1440; border-color: var(--primary); }
.seg button:disabled { cursor: default; }
/* Geisterschloss: Anzeige über der Standuhr, Schatzkammer */
.castle-clock-label { font-family: var(--font-display); font-weight: 600; font-size: 14px; color: #f3ecff; padding: 3px 11px; border-radius: 10px; background: linear-gradient(180deg, rgba(58,34,90,.92), rgba(28,18,48,.92)); border: 2px solid rgba(200,180,255,.55); box-shadow: 0 3px 0 rgba(0,0,0,.3); white-space: nowrap; pointer-events: none; }
.castle-clock-label b { color: #ffe066; }
.castle-clock-label.midnight { background: linear-gradient(180deg, rgba(30,110,60,.95), rgba(12,50,30,.95)); border-color: #7dffb0; animation: bankPulse 1.2s ease-in-out infinite; }
.castle-clock-label.midnight b { color: #c8ffd8; }
.bank-label.castle { background: linear-gradient(180deg, #b8860b, #7a5200); }

/* Minispiel-Abstimmung & Zwischenstand */
.final-badge { display: inline-block; margin-bottom: 6px; padding: 6px 14px; border-radius: 999px; background: linear-gradient(90deg, #ff4d5e, #ff8a3d); font-family: var(--font-display); font-weight: 700; letter-spacing: .5px; animation: pulseHot 1s ease-in-out infinite; }
@keyframes pulseHot { 50% { transform: scale(1.06); box-shadow: 0 0 24px rgba(255,120,60,.7); } }
.mg-vote, .mg-standings { width: min(760px, calc(100vw - 32px)); text-align: center; animation: popIn .4s cubic-bezier(.2,1.4,.4,1); max-height: calc(100vh - 24px); overflow-y: auto; }
.mg-vote h2, .mg-standings h2 { font-family: var(--font-display); font-size: 38px; margin: 2px 0 4px; color: var(--primary); text-shadow: 0 4px 0 #7a2a9a; }
.mg-vote .sub, .mg-standings .sub { margin: 0 0 14px; color: #ddd8ff; }
.vote-opts { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.vote-card { position: relative; display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 16px 10px 12px; border-radius: 16px; border: 2px solid rgba(255,255,255,.15); background: rgba(255,255,255,.06); color: #fff; font-family: var(--font); cursor: pointer; animation: popIn .4s cubic-bezier(.2,1.5,.4,1) backwards; transition: transform .15s, border-color .15s, background .15s, opacity .3s; }
.vote-card:not(:disabled):hover { transform: translateY(-4px); border-color: rgba(255,201,51,.6); }
.vote-card .vk { position: absolute; top: 8px; left: 10px; font-family: var(--font-display); font-size: 13px; color: var(--muted); }
.vote-card .vi { font-size: 48px; line-height: 1.1; }
.vote-card b { font-family: var(--font-display); font-size: 19px; font-weight: 600; }
.vote-card small { font-size: 12px; color: var(--muted); line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 5; -webkit-box-orient: vertical; overflow: hidden; }
.vote-card .voters { display: flex; flex-wrap: wrap; gap: 4px; justify-content: center; min-height: 26px; margin-top: 6px; }
.vote-card .vd { width: 24px; height: 24px; border-radius: 50%; display: grid; place-items: center; font-size: 12px; font-weight: 800; color: #fff; text-shadow: 0 1px 2px rgba(0,0,0,.6); border: 2px solid rgba(255,255,255,.7); animation: popIn .3s cubic-bezier(.2,1.8,.4,1); }
.vote-card.mine { border-color: var(--primary); background: rgba(255,201,51,.14); }
.vote-card.win { border-color: var(--good); background: rgba(51,209,122,.2); transform: scale(1.06); box-shadow: 0 0 30px rgba(51,209,122,.45); animation: voteWin .6s cubic-bezier(.2,1.6,.4,1); }
.vote-card.lose { opacity: .35; transform: scale(.94); }
.vote-card:disabled { cursor: default; }
@keyframes voteWin { 0% { transform: scale(1); } 60% { transform: scale(1.12); } 100% { transform: scale(1.06); } }
.vote-time { height: 8px; border-radius: 4px; background: rgba(255,255,255,.1); margin-top: 16px; overflow: hidden; }
.vote-time i { display: block; height: 100%; background: linear-gradient(90deg, var(--good), var(--primary), var(--danger)); animation: voteTime 12s linear forwards; transform-origin: left; }
@keyframes voteTime { from { transform: scaleX(1); } to { transform: scaleX(0); } }
.stand-list { display: flex; flex-direction: column; gap: 6px; text-align: left; }
.stand-row { display: grid; grid-template-columns: 40px 44px 1fr auto; align-items: center; gap: 10px; padding: 6px 12px; border-radius: 14px; background: rgba(255,255,255,.06); animation: slideIn .4s backwards; }
.stand-row.me { background: rgba(255,201,51,.16); }
.stand-row canvas { width: 40px; height: 44px; }
.stand-row .pl { font-family: var(--font-display); font-weight: 700; font-size: 22px; text-align: center; }
.stand-row .nm { font-family: var(--font-display); font-weight: 600; font-size: 17px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.stand-row .up { color: var(--good); font-size: 13px; }
.stand-row .down { color: #ff8a95; font-size: 13px; }
.sbar { height: 10px; border-radius: 5px; background: rgba(0,0,0,.25); margin-top: 4px; overflow: hidden; }
.sbar i { display: block; height: 100%; border-radius: 5px; transition: width .9s cubic-bezier(.3,1.2,.5,1); box-shadow: inset 0 -3px 0 rgba(0,0,0,.2); }
.stand-row .pts { font-family: var(--font-display); font-size: 22px; font-weight: 700; white-space: nowrap; min-width: 92px; text-align: right; }
.stand-row .gain { display: inline-block; margin-left: 6px; font-size: 14px; color: var(--good); animation: gainPop .5s .8s cubic-bezier(.2,1.8,.4,1) backwards; }
@keyframes gainPop { from { transform: scale(0) translateY(10px); opacity: 0; } }
.stand-foot { margin-top: 14px; font-family: var(--font-display); font-size: 18px; color: #ffe8a8; }
.stand-foot.hot { color: #fff; }
.stand-foot.hot { display: inline-block; padding: 6px 16px; border-radius: 999px; background: linear-gradient(90deg, #ff4d5e, #ff8a3d); animation: pulseHot 1s ease-in-out infinite; }
.end-row.party { grid-template-columns: 40px 44px 1fr repeat(2, auto); }

/* ---------- HUD ---------- */
#screen-game { overflow: hidden; background: #8fd3ff; }
#board-container { position: absolute; inset: 0; }
#board-container canvas { display: block; }
#hud { position: absolute; inset: 0; pointer-events: none; }
#hud > * { pointer-events: auto; }
#hud-top { position: absolute; top: 12px; left: 50%; transform: translateX(-50%); display: flex; gap: 10px; pointer-events: none; }
.pill { background: rgba(27,20,64,.82); border: 2px solid rgba(255,255,255,.18); padding: 8px 16px; border-radius: 999px; font-family: var(--font-display); font-weight: 600; font-size: 17px; box-shadow: var(--shadow); white-space: nowrap; }
.pill.last { background: linear-gradient(90deg, #ff4d5e, #ff8a3d); animation: pulse 1.2s infinite; }
@keyframes pulse { 50% { transform: scale(1.05); } }

#hud-players { position: absolute; top: 12px; left: 12px; display: flex; flex-direction: column; gap: 8px; width: 250px; pointer-events: none; }
.hp-card {
  display: grid; grid-template-columns: 48px 1fr; gap: 4px 10px; align-items: center;
  background: rgba(27,20,64,.82); border-radius: 14px; padding: 8px 10px; border: 2px solid rgba(255,255,255,.1);
  box-shadow: 0 6px 16px rgba(0,0,0,.3); transition: transform .25s, border-color .25s; position: relative; pointer-events: auto;
}
.hp-card.turn { border-color: var(--primary); transform: translateX(8px); box-shadow: 0 0 0 3px rgba(255,201,51,.25), 0 6px 16px rgba(0,0,0,.3); }
.hp-card.offline { opacity: .6; }
.hp-card canvas { width: 48px; height: 52px; grid-row: span 2; }
.hp-card .row1 { display: flex; justify-content: space-between; align-items: center; gap: 6px; min-width: 0; }
.hp-card .nm { font-family: var(--font-display); font-weight: 600; font-size: 15px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.hp-card .stats { display: flex; gap: 8px; font-weight: 800; font-size: 14px; flex-shrink: 0; }
.hp-card .row2 { display: flex; align-items: center; gap: 6px; }
.hpbar { flex: 1; height: 9px; background: rgba(0,0,0,.4); border-radius: 6px; overflow: hidden; }
.hpbar i { display: block; height: 100%; background: linear-gradient(90deg, #ff4d5e, #ff8a95); border-radius: 6px; transition: width .4s; }
.hpbar.ok i { background: linear-gradient(90deg, #33d17a, #8ff0b8); }
.hpbar.mid i { background: linear-gradient(90deg, #ffb933, #ffe066); }
.hptxt { font-size: 11px; font-weight: 800; color: var(--muted); min-width: 34px; text-align: right; }
.items-mini { display: flex; gap: 2px; font-size: 14px; min-width: 50px; justify-content: flex-end; }
.items-mini span { width: 18px; text-align: center; }
.hp-card .order { position: absolute; left: -8px; top: -8px; width: 22px; height: 22px; border-radius: 50%; background: #fff; color: #1b1440; font-weight: 800; font-size: 12px; display: flex; align-items: center; justify-content: center; }
.hp-card .flash-good { animation: flashG .8s; }
@keyframes flashG { 30% { color: var(--good); transform: scale(1.3); } }
.stat-bump { animation: bump .6s; display: inline-block; }
@keyframes bump { 30% { transform: scale(1.5); color: var(--primary); } }

#hud-banner { position: absolute; top: 24%; left: 0; right: 0; text-align: center; pointer-events: none !important; z-index: 4; }
.banner {
  display: inline-block; max-width: calc(100vw - 24px); font-family: var(--font-display); font-weight: 700; font-size: clamp(32px, 5.6vw, 62px); line-height: 1.1;
  color: #fff; text-shadow: 0 5px 0 #7a2a9a, 0 10px 24px rgba(0,0,0,.45); padding: 10px 28px 12px; border-radius: 26px;
  background: radial-gradient(ellipse at 50% 40%, rgba(27,20,64,.72), rgba(16,11,44,.5) 70%); border: 2px solid rgba(255,255,255,.14);
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); box-shadow: 0 14px 40px rgba(0,0,0,.35);
  animation: bannerIn .5s cubic-bezier(.2,1.6,.4,1), bannerOut .4s ease-in forwards; animation-delay: 0s, var(--out, 1.8s);
}
.banner small { display: block; font-size: max(.4em, 17px); font-weight: 600; color: #ffe8a8; text-shadow: 0 2px 0 #7a2a9a, 0 2px 6px rgba(0,0,0,.6); margin-top: 6px; }
.banner.gold { color: var(--primary); border-color: rgba(255,201,51,.45); }
.banner.red { color: #ff8a95; border-color: rgba(255,77,94,.55); background: radial-gradient(ellipse at 50% 40%, rgba(90,14,40,.78), rgba(40,10,30,.55) 70%); }
.banner .you { display: inline-block; padding: 0 8px; border-radius: 8px; background: var(--danger); color: #fff; text-shadow: none; animation: pulse .6s ease-in-out 3; }
/* Treffer gegen mich: kurzer roter Rand-Blitz */
.hit-flash { position: absolute; inset: 0; pointer-events: none !important; box-shadow: inset 0 0 90px 20px rgba(255,40,70,.6); animation: hitFlash .85s ease-out forwards; z-index: 3; }
@keyframes hitFlash { 0% { opacity: 0; } 15% { opacity: 1; } 100% { opacity: 0; } }
@keyframes bannerIn { from { transform: scale(.3) rotate(-8deg); opacity: 0; } to { transform: scale(1); opacity: 1; } }
@keyframes bannerOut { to { transform: scale(1.3); opacity: 0; } }

#hud-status { position: absolute; bottom: 110px; left: 50%; transform: translateX(-50%); pointer-events: none; }
.status-chip { background: rgba(27,20,64,.85); border-radius: 999px; padding: 8px 18px 8px 10px; display: flex; align-items: center; gap: 10px; font-weight: 700; box-shadow: var(--shadow); white-space: nowrap; }
.status-chip .dot { width: 26px; height: 26px; border-radius: 50%; border: 3px solid #fff; }
.timer-ring { width: 26px; height: 26px; }

#hud-actions { position: absolute; bottom: 20px; left: 50%; transform: translateX(-50%); display: flex; gap: 10px; align-items: flex-end; flex-wrap: wrap; justify-content: center; max-width: calc(100vw - 20px); }
.action-roll { font-size: 26px; padding: 18px 34px; animation: rollPulse 1.4s ease-in-out infinite; }
@keyframes rollPulse { 50% { transform: translateY(-4px) scale(1.04); } }
.item-btn { display: flex; flex-direction: column; align-items: center; gap: 2px; background: rgba(27,20,64,.9); color: #fff; border: 2px solid rgba(255,255,255,.2); border-radius: 14px; padding: 8px 12px; cursor: pointer; font-family: var(--font-display); min-width: 86px; box-shadow: 0 5px 0 rgba(0,0,0,.3); transition: transform .12s; }
.item-btn:hover { transform: translateY(-3px); border-color: var(--primary); }
.item-btn .ic { font-size: 26px; }
.item-btn .nm { font-size: 12px; }
.action-label { width: 100%; text-align: center; font-family: var(--font-display); font-size: 15px; color: #fff; text-shadow: 0 2px 4px rgba(0,0,0,.6); margin-bottom: 2px; }

/* Ereignis-Log: unten links, weicht den Spielerkarten aus (--hpb = deren Unterkante, von social.js gesetzt).
   Neueste Meldung unten, hervorgehoben; ältere blassen ab und verschwinden nach einiger Zeit (controller.js). */
#hud-log {
  position: absolute; left: 12px; bottom: 12px; width: clamp(250px, calc(50vw - 330px), 390px);
  max-height: max(0px, calc(100% - var(--hpb, 330px) - 22px)); overflow: hidden;
  display: flex; flex-direction: column; justify-content: flex-end; gap: 5px; pointer-events: none !important; z-index: 1;
}
.log-line {
  --c: rgba(255,255,255,.45); flex-shrink: 0; align-self: flex-start; max-width: 100%; position: relative;
  background: rgba(16,11,44,.8); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
  border-left: 5px solid var(--c); padding: 6px 12px 6px 10px; border-radius: 12px;
  font-size: 15px; line-height: 1.3; font-weight: 700; color: #f1edff; text-shadow: 0 1px 2px rgba(0,0,0,.65);
  box-shadow: 0 4px 14px rgba(0,0,0,.28); animation: logIn .35s cubic-bezier(.2,1.4,.4,1); transition: opacity .45s, transform .45s;
}
.log-line b { font-weight: 800; }
.log-line:nth-last-child(n+3) { opacity: .78; }
.log-line:nth-last-child(n+4) { opacity: .55; font-size: 14px; }
.log-line:nth-last-child(n+6) { opacity: .35; }
.log-line.new { background: rgba(33,25,88,.94); font-size: 16px; box-shadow: 0 0 0 2px color-mix(in srgb, var(--c) 55%, transparent), 0 6px 20px rgba(0,0,0,.4); animation: logIn .35s cubic-bezier(.2,1.4,.4,1), logNew 1.8s ease-out; }
.log-line.bad { background: linear-gradient(90deg, rgba(128,22,48,.9), rgba(16,11,44,.84)); }
.log-line.gold { background: linear-gradient(90deg, rgba(122,86,0,.9), rgba(16,11,44,.84)); }
.log-line.gold.new { box-shadow: 0 0 0 2px rgba(255,201,51,.7), 0 0 22px rgba(255,201,51,.35), 0 6px 20px rgba(0,0,0,.4); }
.log-line.me { background: linear-gradient(90deg, rgba(200,30,60,.95), rgba(96,16,46,.92)); color: #fff; padding-right: 44px; }
.log-line.me::after { content: 'DU'; position: absolute; right: 8px; top: 50%; transform: translateY(-50%); font: 800 11px/1 var(--font); padding: 3px 6px; border-radius: 6px; background: #fff; color: #c21a3a; text-shadow: none; }
:lang(en) .log-line.me::after { content: 'YOU'; } /* Englisch (html lang, i18n.js) */
.log-line.me.new { box-shadow: 0 0 0 2px #ff8a95, 0 0 26px rgba(255,60,90,.55), 0 6px 20px rgba(0,0,0,.4); animation: logIn .35s cubic-bezier(.2,1.4,.4,1), logShake .5s .35s; }
.log-line.round { align-self: stretch; text-align: center; border-left: 0; padding: 3px 10px; font-family: var(--font-display); font-weight: 600; font-size: 14px; letter-spacing: .5px; color: #ffe8a8; background: rgba(122,86,0,.55); }
.log-line.out { opacity: 0 !important; transform: translateX(-24px); }
@keyframes logIn { from { transform: translateX(-20px); opacity: 0; } }
@keyframes logNew { 0% { filter: brightness(1.7); } 100% { filter: none; } }
@keyframes logShake { 20%, 60% { transform: translateX(-4px); } 40%, 80% { transform: translateX(4px); } }
#hud-actions, #hud-status { z-index: 2; }
/* Schmalere Bildschirme: Während meiner Aktionsleiste (Würfeln/Items) rückt das Log darüber */
@media (max-width: 1279px) and (min-width: 721px) and (min-height: 521px) {
  #hud:has(#hud-actions:not(:empty)) #hud-log { bottom: 150px; max-height: max(0px, calc(100% - var(--hpb, 330px) - 160px)); }
  /* volle Breite (siehe Handy): bei left:50% stünden nur 50vw für Würfel + Items zur Verfügung */
  #hud-actions { left: 10px; right: 10px; transform: none; pointer-events: none; }
  #hud-actions > * { pointer-events: auto; }
}

#hud-tools { position: absolute; right: 12px; bottom: 12px; display: flex; gap: 8px; align-items: center; }
.tool-btn { width: 46px; height: 46px; border-radius: 14px; border: 2px solid rgba(255,255,255,.2); background: rgba(27,20,64,.85); color: #fff; font-size: 22px; cursor: pointer; }
.tool-btn.on { border-color: var(--primary); }

#tile-tip { position: absolute; pointer-events: none; background: rgba(27,20,64,.92); padding: 8px 12px; border-radius: 10px; font-size: 13px; max-width: 220px; border: 1px solid rgba(255,255,255,.2); transform: translate(12px, 12px); }
#tile-tip b { font-family: var(--font-display); font-size: 15px; display: block; }

/* 3D-Labels */
.token-label { font-family: var(--font-display); font-weight: 600; font-size: 13px; color: #fff; padding: 2px 8px; border-radius: 8px; background: rgba(27,20,64,.75); white-space: nowrap; transform: translateY(-4px); pointer-events: none; }
.token-label.turn { background: var(--primary); color: #1b1440; }
/* Lebendiges Brett: Bank, Glücksrad, Duelle */
.bank-label { font-family: var(--font-display); font-weight: 600; font-size: 15px; color: #fff; padding: 3px 10px; border-radius: 10px; background: linear-gradient(180deg, #14b8a6, #0d8a7c); border: 2px solid rgba(255,255,255,.6); box-shadow: 0 3px 0 rgba(0,0,0,.25); white-space: nowrap; pointer-events: none; }
.bank-label b { color: #ffe066; }
.bank-label.pulse { animation: bankPulse .6s cubic-bezier(.2,1.8,.4,1); }
@keyframes bankPulse { 40% { transform: scale(1.35); } }
#hud-wheel { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; pointer-events: none; }
.wheel-card { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 14px 18px 16px; border-radius: 22px; background: linear-gradient(180deg, rgba(51,40,122,.95), rgba(33,25,84,.95)); border: 2px solid rgba(255,255,255,.2); box-shadow: 0 20px 50px rgba(0,0,0,.45); animation: popIn .4s cubic-bezier(.2,1.5,.4,1); }
.wheel-card.out, .vs-card.out { animation: popOut .35s ease-in forwards; }
@keyframes popOut { to { transform: scale(.7); opacity: 0; } }
.wheel-title { font-family: var(--font-display); font-size: 24px; font-weight: 700; color: var(--primary); text-align: center; line-height: 1.1; }
.wheel-title small { display: block; font-size: 15px; }
.wheel-wrap { position: relative; }
.wheel-wrap canvas { display: block; filter: drop-shadow(0 6px 10px rgba(0,0,0,.35)); }
.wheel-ptr { position: absolute; top: -6px; left: 50%; width: 0; height: 0; margin-left: -14px; border-left: 14px solid transparent; border-right: 14px solid transparent; border-top: 26px solid #ff4d5e; filter: drop-shadow(0 2px 2px rgba(0,0,0,.5)); z-index: 1; }
.wheel-result { min-height: 34px; padding: 4px 16px; border-radius: 999px; font-family: var(--font-display); font-size: 22px; font-weight: 700; color: #fff; text-shadow: 0 2px 2px rgba(0,0,0,.4); }
.wheel-card.done .wheel-result { animation: popIn .4s cubic-bezier(.2,1.8,.4,1); }
.vs-card { display: flex; align-items: center; gap: 18px; padding: 18px 26px; border-radius: 26px; background: radial-gradient(circle at 50% 50%, rgba(255,77,94,.35), transparent 60%), linear-gradient(180deg, rgba(51,40,122,.96), rgba(33,25,84,.96)); border: 2px solid rgba(255,255,255,.22); box-shadow: 0 20px 60px rgba(0,0,0,.5); animation: popIn .45s cubic-bezier(.2,1.5,.4,1); }
.vs-side { display: flex; flex-direction: column; align-items: center; gap: 4px; font-family: var(--font-display); font-size: 22px; }
.vs-side canvas { width: 110px; height: 121px; }
.vs-side.l { animation: vsL .5s cubic-bezier(.2,1.4,.4,1); }
.vs-side.r { animation: vsR .5s cubic-bezier(.2,1.4,.4,1); }
@keyframes vsL { from { transform: translateX(-80px); opacity: 0; } }
@keyframes vsR { from { transform: translateX(80px); opacity: 0; } }
.vs-mid { text-align: center; }
.vs { font-family: var(--font-display); font-size: 64px; font-weight: 700; color: var(--primary); text-shadow: 0 5px 0 #b3261e, 0 0 30px rgba(255,120,60,.6); animation: vsPulse .8s ease-in-out infinite; }
@keyframes vsPulse { 50% { transform: scale(1.12) rotate(-4deg); } }
.vs-stake { font-weight: 800; color: #ffe8a8; }
.vs-mg { margin-top: 4px; font-family: var(--font-display); font-size: 17px; }
#hud-duel { position: absolute; top: 64px; left: 50%; transform: translateX(-50%); pointer-events: none; }
.duel-live { display: flex; align-items: center; gap: 8px; padding: 8px 16px; border-radius: 999px; background: rgba(27,20,64,.88); border: 2px solid rgba(255,77,94,.7); font-family: var(--font-display); font-size: 17px; white-space: nowrap; box-shadow: 0 6px 18px rgba(0,0,0,.35); animation: popIn .35s cubic-bezier(.2,1.5,.4,1); }
.duel-live .lv { color: #ff4d5e; font-size: 13px; animation: blink 1s steps(2) infinite; }
.duel-live .mg { color: var(--muted); font-size: 14px; margin-left: 4px; }
@keyframes blink { 50% { opacity: .2; } }
.target-btn.sel { border-color: var(--primary); background: rgba(255,201,51,.16); }
.duel-stakes { margin: 6px 0 12px; }
.duel-wallet { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 6px 10px; margin: 0 auto 12px; padding: 8px 14px; border-radius: 14px; background: rgba(255,201,51,.1); border: 2px solid rgba(255,201,51,.45); font-family: var(--font-display); font-size: 18px; }
.duel-wallet .duel-mine { color: #ffc933; font-size: 22px; }
.duel-wallet .vs { color: var(--muted); font-size: 14px; }
.duel-wallet .duel-foe { font-size: 16px; }
@media (max-width: 560px) { .duel-wallet ~ .modal-actions .btn-big { font-size: 17px; padding: 12px 16px; max-width: 100%; white-space: normal; } }
.final-badge.duel { background: linear-gradient(90deg, #ff4d5e, #a06bff); }
.final-badge.pick { background: linear-gradient(90deg, #ffb020, #ff6bcb); animation: none; }
.res-row .rw.neg { color: #ff8a95; }

.float-text { font-family: var(--font-display); font-weight: 700; font-size: 26px; text-shadow: 0 3px 0 rgba(0,0,0,.45), 0 0 12px rgba(0,0,0,.4); pointer-events: none; animation: floatUp 1.6s ease-out forwards; white-space: nowrap; }
.float-text.good { color: #7ef0ae; }
.float-text.bad { color: #ff8a95; }
.float-text.gold { color: #ffe066; }
.float-text.big { font-size: 40px; }
@keyframes floatUp { 0% { transform: translateY(10px) scale(.5); opacity: 0; } 15% { transform: translateY(0) scale(1.15); opacity: 1; } 70% { opacity: 1; } 100% { transform: translateY(-60px) scale(1); opacity: 0; } }
.branch-label { background: var(--primary); color: #1b1440; font-family: var(--font-display); font-weight: 700; padding: 6px 12px; border-radius: 10px; cursor: pointer; pointer-events: auto; box-shadow: 0 4px 0 rgba(0,0,0,.3); font-size: 15px; }

/* ---------- Modals ---------- */
#modal-root { position: fixed; inset: 0; pointer-events: none; z-index: 50; }
.modal-back { position: absolute; inset: 0; background: rgba(10,6,35,.55); display: flex; align-items: center; justify-content: center; pointer-events: auto; animation: fadeIn .2s; padding: 16px; }
@keyframes fadeIn { from { opacity: 0; } }
.modal { background: linear-gradient(180deg, #33287a, #251c5c); border: 2px solid rgba(255,255,255,.18); border-radius: 22px; padding: 22px; min-width: 300px; max-width: 640px; width: 100%; box-shadow: 0 20px 60px rgba(0,0,0,.5); animation: popIn .3s cubic-bezier(.2,1.5,.4,1); max-height: calc(100vh - 32px); overflow: auto; }
.modal h3 { font-family: var(--font-display); font-size: 26px; margin: 0 0 6px; text-align: center; }
.modal p { text-align: center; color: var(--muted); margin: 0 0 16px; }
.modal-actions { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; margin-top: 16px; }
.shop-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 10px; }
.shop-item { background: rgba(255,255,255,.07); border: 2px solid rgba(255,255,255,.12); border-radius: 14px; padding: 10px; cursor: pointer; text-align: left; color: #fff; display: grid; grid-template-columns: 40px 1fr; gap: 2px 8px; transition: transform .12s, border-color .12s; font-family: var(--font); }
.shop-item:hover:not(:disabled) { transform: translateY(-2px); border-color: var(--primary); }
.shop-item:disabled { opacity: .4; cursor: not-allowed; }
.shop-item .ic { font-size: 30px; grid-row: span 3; align-self: center; text-align: center; }
.shop-item .nm { font-family: var(--font-display); font-weight: 600; }
.shop-item .ds { font-size: 12px; color: var(--muted); line-height: 1.25; }
.shop-item .pr { font-weight: 800; color: var(--primary); }
.target-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 10px; }
.target-btn { background: rgba(255,255,255,.07); border: 2px solid rgba(255,255,255,.12); border-radius: 14px; padding: 8px; cursor: pointer; color: #fff; text-align: center; font-family: var(--font); transition: transform .12s, border-color .12s; }
.target-btn:hover { transform: translateY(-3px); border-color: var(--danger); }
.target-btn canvas { width: 70px; height: 77px; }
.target-btn .nm { font-family: var(--font-display); font-weight: 600; }
.target-btn .st { font-size: 13px; color: var(--muted); font-weight: 700; }
.modal-timer { height: 6px; background: rgba(0,0,0,.3); border-radius: 4px; overflow: hidden; margin-top: 16px; }
.modal-timer i { display: block; height: 100%; background: var(--primary); transform-origin: left; }
.big-emoji { font-size: 64px; text-align: center; display: block; animation: wobble 2s infinite; }

/* ---------- Toasts ---------- */
#toasts { position: fixed; top: 70px; left: 50%; transform: translateX(-50%); display: flex; flex-direction: column; gap: 8px; align-items: center; z-index: 60; pointer-events: none; }
.toast { background: rgba(22,16,56,.94); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); border: 2px solid rgba(255,201,51,.55); padding: 11px 20px; border-radius: 14px; font-weight: 800; font-size: 16px; line-height: 1.3; text-shadow: 0 1px 2px rgba(0,0,0,.5); box-shadow: var(--shadow), 0 0 0 4px rgba(255,201,51,.12); animation: toastIn .3s cubic-bezier(.2,1.5,.4,1); max-width: min(560px, 90vw); text-align: center; }
/* Auf dem Brett unter die Runden-/Pokal-Anzeige (und Duell-Live-Anzeige) */
body[data-social="game"] #toasts { top: 112px; }
.toast.out { animation: toastOut .3s forwards; }
@keyframes toastIn { from { transform: translateY(-20px) scale(.8); opacity: 0; } }
@keyframes toastOut { to { transform: translateY(-20px); opacity: 0; } }
#conn-status { position: fixed; bottom: 16px; left: 50%; transform: translateX(-50%); background: var(--danger); padding: 10px 18px; border-radius: 12px; font-weight: 800; z-index: 70; }

/* ---------- Minispiele ---------- */
#screen-mg { background: #140e33; overflow: hidden; z-index: 20; }
#mg-canvas { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
#mg-ui { position: absolute; inset: 0; pointer-events: none; }
#mg-ui > * { pointer-events: auto; }
#mg-overlay { position: absolute; inset: 0; pointer-events: none; display: flex; align-items: center; justify-content: center; }
#mg-overlay > * { pointer-events: auto; }
/* Karten über hellen Minispielen (z. B. Schnee) lesbar halten */
#mg-overlay > .card { background: linear-gradient(180deg, rgba(51,40,122,.95), rgba(33,25,84,.95)); border-color: rgba(255,255,255,.18); }
.mg-intro { width: min(640px, calc(100vw - 32px)); text-align: center; animation: popIn .4s cubic-bezier(.2,1.4,.4,1); }
.mg-intro .mg-icon { font-size: 80px; display: block; animation: wobble 2s infinite; }
.mg-intro h2 { font-family: var(--font-display); font-size: 44px; margin: 4px 0 8px; color: var(--primary); text-shadow: 0 4px 0 #7a2a9a; }
.mg-intro .desc { font-size: 18px; line-height: 1.4; margin: 0 0 14px; }
.mg-intro .controls { background: rgba(0,0,0,.25); border-radius: 12px; padding: 10px 14px; font-weight: 700; color: #ffe8a8; margin-bottom: 16px; }
/* Duell-Zuschauer: Intro (wer gegen wen) und Live-Plakette während des Spiels */
.spec-vs { display: flex; align-items: center; justify-content: center; gap: 18px; margin: 6px 0 4px; }
.spec-side { display: flex; flex-direction: column; align-items: center; gap: 2px; font-family: var(--font-display); font-size: 20px; min-width: 0; }
.spec-side b { max-width: 150px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.spec-side canvas { width: 80px; height: 87px; }
.spec-vs .vs { font-family: var(--font-display); font-size: 40px; font-weight: 700; color: var(--primary); text-shadow: 0 4px 0 #7a2a9a; }
.spec-note { display: inline-block; padding: 8px 16px; border-radius: 999px; background: rgba(255,255,255,.08); font-weight: 800; color: #ffe8a8; }
.mg-spec-badge { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px; min-width: 52px; padding: 5px 6px; border-radius: 14px;
  background: rgba(27,20,64,.85); border: 2px solid rgba(255,77,94,.7); font-family: var(--font-display); line-height: 1; white-space: nowrap;
  box-shadow: 0 4px 12px rgba(0,0,0,.3); pointer-events: none !important; animation: popIn .35s cubic-bezier(.2,1.5,.4,1); }
.mg-spec-badge .lv { color: #ff6b78; font-size: 10.5px; font-weight: 700; letter-spacing: .3px; animation: blink 1s steps(2) infinite; }
.mg-spec-badge .eye { font-size: 17px; }
#screen-mg > .mg-spec-badge { position: absolute; z-index: 6; top: 12px; left: 12px; }
.ready-row { display: flex; gap: 8px; justify-content: center; flex-wrap: wrap; margin-bottom: 16px; }
.ready-chip { display: flex; align-items: center; gap: 6px; padding: 4px 10px 4px 4px; border-radius: 999px; background: rgba(255,255,255,.08); font-size: 13px; font-weight: 800; }
.ready-chip .d { width: 20px; height: 20px; border-radius: 50%; }
.ready-chip.ok { background: rgba(51,209,122,.3); }
.countdown { font-family: var(--font-display); font-size: 160px; font-weight: 700; color: #fff; text-shadow: 0 8px 0 #7a2a9a, 0 16px 40px rgba(0,0,0,.5); animation: cd .9s ease-out forwards; pointer-events: none !important; }
.countdown.go { color: var(--primary); }
@keyframes cd { 0% { transform: scale(2.2); opacity: 0; } 25% { transform: scale(1); opacity: 1; } 80% { opacity: 1; } 100% { transform: scale(.7); opacity: 0; } }
.mg-results { width: min(560px, calc(100vw - 32px)); animation: popIn .4s cubic-bezier(.2,1.4,.4,1); }
.mg-results h2 { font-family: var(--font-display); text-align: center; margin: 0 0 14px; font-size: 34px; color: var(--primary); }
.res-row { display: grid; grid-template-columns: 44px 52px 1fr auto; align-items: center; gap: 10px; padding: 6px 10px; border-radius: 14px; background: rgba(255,255,255,.06); margin-bottom: 8px; animation: slideIn .4s backwards; }
.res-row.me { background: rgba(255,201,51,.18); }
.res-row .pl { font-family: var(--font-display); font-size: 26px; font-weight: 700; text-align: center; }
.res-row canvas { width: 48px; height: 52px; }
.res-row .nm { font-family: var(--font-display); font-size: 19px; font-weight: 600; }
.res-row .rw { font-weight: 800; font-size: 20px; color: var(--primary); }
.res-note { margin-top: 10px; text-align: center; font-size: 14px; opacity: .8; }
@keyframes slideIn { from { transform: translateX(-30px); opacity: 0; } }
.mg-hud { position: absolute; top: 10px; left: 50%; transform: translateX(-50%); display: flex; gap: 10px; pointer-events: none !important; }

/* Touch-Steuerung */
#mg-touch { position: absolute; inset: 0; pointer-events: none; }
.joy { position: absolute; left: 24px; bottom: 24px; width: 150px; height: 150px; border-radius: 50%; background: rgba(255,255,255,.1); border: 3px solid rgba(255,255,255,.25); pointer-events: auto; touch-action: none; }
.joy i { position: absolute; left: 50%; top: 50%; width: 64px; height: 64px; margin: -32px 0 0 -32px; border-radius: 50%; background: rgba(255,255,255,.55); }
.act-btn { position: absolute; right: 28px; bottom: 36px; width: 120px; height: 120px; border-radius: 50%; border: 4px solid rgba(255,255,255,.4); background: rgba(255,201,51,.75); font-family: var(--font-display); font-weight: 700; font-size: 20px; color: #1b1440; pointer-events: auto; touch-action: none; }
.act-btn.big { width: 100%; height: 34%; right: 0; bottom: 0; border-radius: 0; background: rgba(255,201,51,.12); border: none; border-top: 3px dashed rgba(255,201,51,.4); color: rgba(255,255,255,.7); font-size: 26px; }
.act-btn:active { transform: scale(.94); filter: brightness(1.2); }
.dirpad { position: absolute; left: 50%; bottom: 20px; transform: translateX(-50%); display: grid; grid-template-columns: repeat(3, 84px); grid-template-rows: repeat(2, 84px); gap: 8px; pointer-events: auto; }
.dirpad button { border-radius: 18px; border: 3px solid rgba(255,255,255,.3); font-size: 38px; color: #fff; cursor: pointer; box-shadow: 0 5px 0 rgba(0,0,0,.3); }
.dirpad button:active { transform: translateY(3px); box-shadow: 0 2px 0 rgba(0,0,0,.3); }
.quiz-opts { position: absolute; left: 50%; bottom: 24px; transform: translateX(-50%); display: grid; grid-template-columns: repeat(2, minmax(150px, 240px)); gap: 12px; pointer-events: auto; }
.quiz-opts button { font-family: var(--font-display); font-size: 32px; font-weight: 700; padding: 18px; border-radius: 18px; border: 3px solid rgba(255,255,255,.3); color: #fff; cursor: pointer; box-shadow: 0 6px 0 rgba(0,0,0,.3); }
.quiz-opts button small { font-size: 14px; opacity: .7; margin-right: 6px; vertical-align: middle; }
.quiz-opts button.picked { outline: 4px solid #fff; }
.quiz-opts button.right { background: var(--good) !important; }
.quiz-opts button.wrong { background: var(--danger) !important; opacity: .7; }
.quiz-opts button:disabled { cursor: default; }

/* ---------- Ende ---------- */
#screen-end { z-index: 25; }
#confetti { position: fixed; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.end-wrap { max-width: 900px; margin: 0 auto; padding: 24px 16px 40px; position: relative; }
.end-title { font-family: var(--font-display); text-align: center; font-size: clamp(34px, 6vw, 54px); margin: 6px 0 20px; color: var(--primary); text-shadow: 0 5px 0 #7a2a9a; }
.podium { display: flex; justify-content: center; align-items: flex-end; gap: 14px; margin-bottom: 24px; min-height: 330px; }
.pod { display: flex; flex-direction: column; align-items: center; width: 170px; animation: rise .8s cubic-bezier(.2,1.3,.4,1) backwards; }
.pod canvas { width: 130px; height: 143px; }
.pod .nm { font-family: var(--font-display); font-size: 20px; font-weight: 600; margin: 4px 0; text-align: center; }
.pod .sc { font-weight: 800; margin-bottom: 6px; }
.pod .blk { width: 100%; border-radius: 14px 14px 0 0; display: flex; align-items: flex-start; justify-content: center; font-family: var(--font-display); font-size: 48px; font-weight: 700; padding-top: 8px; color: rgba(0,0,0,.35); box-shadow: inset 0 -10px 0 rgba(0,0,0,.15); }
.pod.p1 .blk { height: 150px; background: linear-gradient(180deg, #ffe066, #e6a100); }
.pod.p2 .blk { height: 105px; background: linear-gradient(180deg, #e6e9f5, #a4a9c2); }
.pod.p3 .blk { height: 75px; background: linear-gradient(180deg, #ffb07a, #c8692a); }
.pod.p1 { animation-delay: 1.2s; } .pod.p2 { animation-delay: .6s; } .pod.p3 { animation-delay: 0s; }
@keyframes rise { from { transform: translateY(80px); opacity: 0; } }
.end-table { padding: 10px; }
.end-row { display: grid; grid-template-columns: 40px 44px 1fr repeat(4, auto); align-items: center; gap: 12px; padding: 8px 10px; border-radius: 12px; }
.end-row:nth-child(odd) { background: rgba(255,255,255,.04); }
.end-row canvas { width: 40px; height: 44px; }
.end-row .pl { font-family: var(--font-display); font-weight: 700; font-size: 22px; text-align: center; }
.end-row .nm { font-family: var(--font-display); font-weight: 600; font-size: 17px; }
.end-row .v { font-weight: 800; font-size: 14px; color: var(--muted); white-space: nowrap; }
.end-row .v b { color: #fff; font-size: 16px; }
.end-actions { display: flex; gap: 12px; justify-content: center; margin-top: 22px; flex-wrap: wrap; }

/* ---------- Responsive ---------- */
@media (max-width: 720px) {
  #hud-players { width: auto; right: 12px; flex-direction: row; flex-wrap: wrap; gap: 4px; }
  .hp-card { grid-template-columns: 30px 1fr; padding: 4px 6px; flex: 1 1 140px; }
  .hp-card canvas { width: 30px; height: 33px; }
  .hp-card.turn { transform: none; }
  .hp-card .nm { font-size: 12px; }
  .hp-card .stats { font-size: 12px; gap: 4px; }
  .items-mini { display: none; }
  #hud-top { top: auto; bottom: 64px; left: 12px; transform: none; }
  #hud-top .pill { font-size: 13px; padding: 5px 10px; }
  /* volle Breite statt left:50% + translate – sonst stehen nur 50vw zur Verfügung und jedes Item rutscht in eine eigene Zeile */
  #hud-actions { bottom: 104px; left: 10px; right: 10px; transform: none; pointer-events: none; }
  #hud-actions > * { pointer-events: auto; }
  #hud-status { bottom: 170px; }
  .action-roll { font-size: 22px; padding: 14px 26px; }
  .item-btn { min-width: 70px; padding: 6px 8px; }
  #hud-tools { right: 8px; bottom: 8px; gap: 4px; }
  .tool-btn { width: 38px; height: 38px; font-size: 18px; }
  /* Log: letzte 2 Meldungen direkt unter den Spielerkarten */
  #hud-log { top: calc(var(--hpb, 90px) + 6px); bottom: auto; left: 8px; right: 8px; width: auto; min-width: 0; max-height: none; justify-content: flex-start; gap: 3px; }
  .log-line, .log-line.new { font-size: 13px; padding: 3px 10px 3px 8px; border-left-width: 4px; border-radius: 10px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .log-line:nth-last-child(n+3) { display: none; }
  .log-line:nth-last-child(2) { opacity: .75; font-size: 12.5px; }
  .log-line.me { padding-right: 38px; }
  body[data-social="game"] #toasts { top: 42%; }
  #hud-banner { top: 33%; }
  .banner { font-size: 30px; padding: 8px 18px 10px; }
  .end-row { grid-template-columns: 30px 36px 1fr auto auto; }
  .end-row .v.opt { display: none; }
  .pod { width: 110px; }
  .pod canvas { width: 90px; height: 99px; }
  .dirpad { grid-template-columns: repeat(3, 70px); grid-template-rows: repeat(2, 70px); }
  .quiz-opts { grid-template-columns: repeat(2, 1fr); width: calc(100vw - 24px); }
}
.rotate-hint { position: absolute; left: 50%; bottom: 190px; transform: translateX(-50%); background: rgba(20,14,51,.85); padding: 8px 14px; border-radius: 12px; font-weight: 700; font-size: 14px; white-space: nowrap; animation: toastIn .3s; pointer-events: none; }

/* ---------- Chat & Emotes (social.js) ---------- */
@property --p { syntax: '<percentage>'; inherits: false; initial-value: 0%; }
#social { position: fixed; inset: 0; pointer-events: none; z-index: 45; }
#social > * { pointer-events: auto; }
#social-dock { position: absolute; right: 16px; bottom: 16px; display: flex; gap: 8px; }
body[data-social="game"] #social-dock { right: 12px; bottom: 68px; }
body[data-social="mg"] #social-dock { top: 60px; right: 10px; bottom: auto; flex-direction: column; }
.soc-btn {
  position: relative; width: 52px; height: 52px; border-radius: 50%; border: 3px solid rgba(255,255,255,.35); padding: 0;
  background: radial-gradient(circle at 35% 30%, #4d3cae, #241a5c); color: #fff; font-size: 26px; cursor: pointer;
  box-shadow: 0 4px 0 rgba(0,0,0,.3), 0 8px 20px rgba(0,0,0,.35); display: grid; place-items: center;
  transition: transform .15s cubic-bezier(.2,1.6,.4,1), border-color .15s;
}
.soc-btn .ic { line-height: 1; pointer-events: none; }
.soc-btn:hover { transform: translateY(-2px) scale(1.07); border-color: var(--primary); }
.soc-btn:active { transform: translateY(2px) scale(.95); }
.soc-btn.on { border-color: var(--primary); background: radial-gradient(circle at 35% 30%, #6a55d8, #33287a); }
.soc-btn.ping { animation: socPing .6s cubic-bezier(.2,1.6,.4,1); }
@keyframes socPing { 30% { transform: scale(1.2) rotate(-10deg); } 60% { transform: scale(.95) rotate(6deg); } }
.soc-badge {
  position: absolute; top: -7px; right: -7px; min-width: 22px; height: 22px; padding: 0 6px; border-radius: 11px;
  background: var(--danger); color: #fff; font: 800 12px/18px var(--font); border: 2px solid #fff; box-shadow: 0 2px 6px rgba(0,0,0,.4);
  animation: popIn .3s cubic-bezier(.2,1.6,.4,1);
}
.soc-btn .cd { position: absolute; inset: -3px; border-radius: 50%; pointer-events: none; }
.soc-btn.cool .cd { background: conic-gradient(rgba(20,14,51,.6) var(--p), transparent 0); animation: cool .7s linear forwards; }
@keyframes cool { from { --p: 100%; } to { --p: 0%; } }

/* Einblendungen neuer Nachrichten */
#chat-feed { position: absolute; right: 16px; bottom: 80px; width: min(340px, calc(100vw - 32px)); display: flex; flex-direction: column; align-items: flex-end; gap: 6px; pointer-events: none; }
body[data-social="game"] #chat-feed { right: 12px; bottom: 130px; }
body[data-social="mg"] #chat-feed { top: 60px; bottom: auto; right: 72px; }
.ctoast {
  pointer-events: auto; cursor: pointer; max-width: 100%; background: rgba(20,14,51,.66);
  border-left: 4px solid var(--c, #fff); padding: 7px 12px; border-radius: 12px; font-weight: 700; font-size: 14px; line-height: 1.3; color: #fff;
  box-shadow: 0 4px 14px rgba(0,0,0,.25); animation: ctIn .35s cubic-bezier(.2,1.5,.4,1); overflow-wrap: anywhere; text-shadow: 0 1px 2px rgba(0,0,0,.5);
}
.ctoast b { font-family: var(--font-display); font-weight: 600; }
.ctoast.sys { border-left-color: rgba(255,255,255,.35); color: #ddd8ff; font-style: italic; font-size: 13px; }
.ctoast.out { animation: ctOut .45s forwards; }
@keyframes ctIn { from { transform: translateX(30px) scale(.9); opacity: 0; } }
@keyframes ctOut { to { transform: translateX(24px); opacity: 0; } }

/* Chat-Panel */
#chat-panel {
  position: absolute; right: 16px; bottom: 80px; width: min(360px, calc(100vw - 32px)); height: min(420px, calc(100vh - 110px));
  display: flex; flex-direction: column; background: rgba(27,20,64,.95); border: 2px solid rgba(255,255,255,.18); border-radius: 18px;
  box-shadow: 0 16px 44px rgba(0,0,0,.5); overflow: hidden; animation: panelIn .25s cubic-bezier(.2,1.4,.4,1); transform-origin: bottom right;
}
body[data-social="game"] #chat-panel { right: 12px; bottom: 130px; height: min(400px, calc(100vh - 200px)); }
body[data-social="mg"] #chat-panel { top: 60px; bottom: auto; right: 72px; transform-origin: top right; height: min(380px, calc(100vh - 80px)); }
@keyframes panelIn { from { transform: scale(.85) translateY(10px); opacity: 0; } }
.chat-head { display: flex; align-items: center; gap: 8px; padding: 9px 10px 9px 14px; border-bottom: 1px solid rgba(255,255,255,.1); font-family: var(--font-display); font-size: 17px; }
.chat-hint { flex: 1; font: 700 11px var(--font); color: var(--muted); text-align: right; }
.chat-x { width: 32px; height: 32px; border-radius: 50%; border: none; background: rgba(255,255,255,.1); color: #fff; cursor: pointer; font-size: 14px; flex-shrink: 0; }
.chat-x:hover { background: rgba(255,255,255,.2); }
.chat-log { flex: 1; min-height: 0; overflow-y: auto; padding: 8px 10px; display: flex; flex-direction: column; gap: 3px; user-select: text; -webkit-user-select: text; overscroll-behavior: contain; }
.cm { font-size: 14px; line-height: 1.35; overflow-wrap: anywhere; padding: 3px 8px; border-radius: 10px; animation: logIn .25s; }
.cm.own { background: rgba(255,201,51,.1); }
.cm-t { font-size: 10.5px; color: rgba(185,177,230,.65); margin-right: 6px; font-weight: 700; }
.cm-n { font-family: var(--font-display); font-weight: 600; margin-right: 6px; }
.cm-n::after { content: ':'; color: rgba(255,255,255,.45); }
.cm.sys { color: var(--muted); font-style: italic; font-size: 12.5px; }
.cm.empty { text-align: center; margin: auto 0; font-size: 14px; }
/* Schnellwahl-Leiste (chipTray in social.js, auch Insel-Chat): eine Zeile, Rest über „+N“ aufklappbar – kein horizontales Scrollen */
.ct { display: flex; }
.ct-list {
  --ct-h: 30px; flex: 1; min-width: 0; display: flex; flex-wrap: wrap; align-content: flex-start; gap: 6px; padding: 3px; margin: -3px;
  max-height: calc(var(--ct-h) + 6px); overflow: hidden; transition: max-height .28s cubic-bezier(.2,.9,.3,1);
}
.ct.open .ct-list {
  max-height: min(calc(var(--ct-h) * 4 + 24px), max(calc(var(--ct-h) + 6px), calc(var(--vvh, 100vh) - 220px))); overflow-y: auto; overscroll-behavior: contain;
  scrollbar-width: thin; scrollbar-color: rgba(255,255,255,.25) transparent;
}
.ct-chip.ct-off { visibility: hidden; }
.ct-more {
  flex-shrink: 0; height: var(--ct-h, 30px); min-width: 42px; padding: 0 10px; border-radius: 999px; cursor: pointer;
  border: 2px dashed rgba(255,201,51,.55); background: rgba(255,201,51,.1); color: var(--primary); font: 800 13px/1 var(--font);
  display: inline-flex; align-items: center; justify-content: center; transition: background .12s, border-color .12s, transform .12s;
}
.ct-more:hover { background: rgba(255,201,51,.22); border-style: solid; }
.ct-more:focus-visible, .ct-chip:focus-visible, .wheel-quick button:focus-visible { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px rgba(255,201,51,.35); }
.ct.open .ct-more { border-style: solid; }
.ct.open .ct-more::before { content: ''; width: 8px; height: 8px; border: solid currentColor; border-width: 2.5px 2.5px 0 0; border-radius: 1px; transform: translateY(2px) rotate(-45deg); }
.ct-more.hidden { display: none; }

/* Chat-Panel: Schnell-Sprüche über der Eingabe */
.chat-quick { padding: 7px 10px 2px; flex-shrink: 0; border-top: 1px solid rgba(255,255,255,.06); }
.chat-quick .ct-list, .chat-quick .ct-more { --ct-h: 30px; }
.chat-quick .ct-chip, .wheel-quick button {
  flex-shrink: 0; border: 2px solid rgba(255,255,255,.18); background: rgba(255,255,255,.08); color: #fff; font: 700 13px var(--font);
  padding: 5px 11px; border-radius: 999px; cursor: pointer; white-space: nowrap; transition: transform .12s, background .12s, border-color .12s;
}
.chat-quick .ct-chip { height: 30px; padding: 0 11px; }
.chat-quick .ct-chip:hover, .wheel-quick button:hover { background: rgba(255,201,51,.22); border-color: var(--primary); transform: translateY(-1px); }
.chat-quick .ct-chip:active, .wheel-quick button:active { transform: translateY(1px) scale(.97); }
@media (pointer: coarse) {
  .chat-quick .ct-list, .chat-quick .ct-more { --ct-h: 36px; }
  .chat-quick .ct-chip { height: 36px; padding: 0 13px; font-size: 14px; }
}
@media (pointer: coarse) and (max-height: 520px) {
  .chat-quick .ct-list, .chat-quick .ct-more { --ct-h: 32px; }
  .chat-quick .ct-chip { height: 32px; padding: 0 11px; font-size: 13px; }
}

/* Team-Abzeichen neben Namen (Chat-Log, Mini-Chat, Einblendungen, Insel-Chat) */
.staff-tag {
  display: inline-block; height: 16px; margin-right: 5px; padding: 0 5px; border-radius: 5px; font: 800 9.5px/16px var(--font); font-style: normal;
  letter-spacing: .7px; vertical-align: 2px; text-shadow: none; white-space: nowrap; box-shadow: 0 1px 0 rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.35);
}
.staff-tag.st-admin { background: linear-gradient(135deg, #ffe066, #ffb02e 45%, #ff5a4e); color: #2b0d00; }
.staff-tag.st-mod { background: linear-gradient(135deg, #7af0d6, #3d8bff); color: #04213a; }
.fw-msg .staff-tag { margin-right: 4px; vertical-align: 1.5px; }
.chat-err { color: #ff8a95; font-size: 12.5px; font-weight: 800; padding: 2px 14px 0; }
.chat-err:empty { display: none; }
.chat-row { display: flex; gap: 8px; align-items: center; padding: 8px 10px 10px; position: relative; flex-shrink: 0; }
.chat-input {
  flex: 1; min-width: 0; height: 44px; border-radius: 12px; border: 2px solid rgba(255,255,255,.18); background: rgba(0,0,0,.28);
  color: #fff; font: 700 16px var(--font); padding: 0 40px 0 12px; outline: none;
}
.chat-input::placeholder { color: rgba(185,177,230,.7); }
.chat-input:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(255,201,51,.18); }
.chat-count { position: absolute; right: 68px; font-size: 11px; font-weight: 800; color: var(--muted); pointer-events: none; }
.chat-send { width: 44px; height: 44px; border-radius: 12px; border: none; background: linear-gradient(180deg, #ffe066, var(--primary)); color: #1b1440; font-size: 20px; cursor: pointer; box-shadow: 0 3px 0 rgba(0,0,0,.25); flex-shrink: 0; }
.chat-send:active { transform: translateY(2px); box-shadow: 0 1px 0 rgba(0,0,0,.25); }

/* Emote-Rad */
#emote-wheel { position: absolute; inset: 0; background: radial-gradient(circle at center, rgba(10,6,35,.6), rgba(10,6,35,.3)); display: flex; align-items: center; justify-content: center; animation: fadeIn .15s; padding: 10px; }
.wheel-wrap { display: flex; align-items: center; gap: 22px; flex-wrap: wrap; justify-content: center; }
.wheel {
  --R: 116px; position: relative; width: 306px; height: 306px; border-radius: 50%; flex-shrink: 0;
  background: radial-gradient(circle, rgba(77,60,174,.97) 0 33%, rgba(27,20,64,.94) 34% 100%);
  border: 3px solid rgba(255,255,255,.2); box-shadow: 0 20px 60px rgba(0,0,0,.5), inset 0 0 0 10px rgba(255,255,255,.04);
  animation: wheelIn .32s cubic-bezier(.2,1.5,.4,1);
}
.wheel-center { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); text-align: center; pointer-events: none; }
.wheel-center .big { display: block; font-size: 50px; line-height: 1; animation: wob 1.2s ease-in-out infinite; }
.wheel-center small { display: block; font-weight: 800; font-size: 11px; color: var(--muted); margin-top: 4px; white-space: nowrap; }
.wheel-btn {
  position: absolute; left: 50%; top: 50%; width: 58px; height: 58px; margin: -29px 0 0 -29px; padding: 0; border-radius: 50%;
  border: 2px solid rgba(255,255,255,.14); background: rgba(255,255,255,.07); cursor: pointer;
  transform: translate(calc(var(--x) * var(--R)), calc(var(--y) * var(--R)));
  animation: wbIn .38s cubic-bezier(.2,1.6,.4,1) backwards; animation-delay: var(--d); transition: background .12s, border-color .12s;
}
.wheel-btn .em { font-size: 32px; line-height: 1; display: block; transition: transform .15s cubic-bezier(.2,1.6,.4,1); pointer-events: none; }
.wheel-btn:hover, .wheel-btn:focus-visible { background: rgba(255,201,51,.3); border-color: var(--primary); outline: none; }
.wheel-btn:hover .em { transform: scale(1.3) rotate(-8deg); }
.wheel-btn:active .em { transform: scale(.9); }
.wheel-btn small { position: absolute; right: -3px; bottom: -3px; width: 18px; height: 18px; border-radius: 50%; background: #fff; color: #1b1440; font: 800 11px/18px var(--font); pointer-events: none; }
@keyframes wbIn { from { transform: translate(0, 0) scale(.2); opacity: 0; } }
@keyframes wheelIn { from { transform: scale(.6) rotate(-20deg); opacity: 0; } }
@keyframes wob { 50% { transform: rotate(9deg) scale(1.08); } }
.wheel-quick { display: flex; flex-direction: column; gap: 7px; background: rgba(27,20,64,.94); border: 2px solid rgba(255,255,255,.16); border-radius: 18px; padding: 12px; box-shadow: var(--shadow); animation: wheelIn .32s .05s cubic-bezier(.2,1.5,.4,1) backwards; }
.wq-title { font-family: var(--font-display); font-weight: 600; font-size: 15px; margin-bottom: 2px; }
.wheel-quick button { font-size: 14px; padding: 7px 14px; text-align: left; }

/* Emote-Karten mit Avatar (Lobby-Fallback, Minispiele ohne Figuren, Siegerehrung) */
#emote-feed { position: absolute; left: 16px; top: 50%; transform: translateY(-50%); display: flex; flex-direction: column; gap: 10px; pointer-events: none; }
.ef {
  position: relative; display: flex; align-items: center; gap: 8px; background: rgba(20,14,51,.82); border: 3px solid var(--c); border-radius: 999px;
  padding: 4px 12px 4px 4px; box-shadow: 0 8px 22px rgba(0,0,0,.35), 0 0 18px color-mix(in srgb, var(--c) 45%, transparent);
  animation: efIn .45s cubic-bezier(.2,1.6,.4,1); width: max-content;
}
.ef canvas { border-radius: 50%; background: rgba(255,255,255,.12); }
.ef-nm { font-family: var(--font-display); font-weight: 600; font-size: 15px; max-width: 120px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-shadow: 0 1px 2px rgba(0,0,0,.6); }
.ef-em { position: relative; font-size: 40px; line-height: 1; animation: efPop .6s .1s cubic-bezier(.2,1.8,.4,1) backwards, wob .9s .7s ease-in-out 2; }
.ef.out { animation: efOut .45s forwards; }
@keyframes efIn { from { transform: translateX(-120%) scale(.7); opacity: 0; } }
@keyframes efPop { from { transform: scale(0) rotate(-30deg); } }
@keyframes efOut { to { transform: translateX(-40px); opacity: 0; } }
.ef-burst span, .emote-bubble i {
  position: absolute; left: 50%; top: 50%; font-size: 18px; font-style: normal; line-height: 1; opacity: 0; pointer-events: none;
  animation: burst .9s ease-out forwards;
}
@keyframes burst {
  0% { opacity: 1; transform: translate(-50%, -50%) scale(.4); }
  100% { opacity: 0; transform: translate(calc(-50% + var(--dx)), calc(-50% + var(--dy))) scale(1) rotate(var(--r, 0deg)); }
}

/* Blasen an den Lobby-Karten */
.card-bubble { position: absolute; left: 50%; z-index: 3; pointer-events: none; }
.card-bubble.cb-emote {
  top: -16px; width: 70px; height: 70px; margin-left: -35px; display: grid; place-items: center; font-size: 42px; line-height: 1;
  background: #fff; border: 4px solid var(--c); border-radius: 50%; box-shadow: 0 8px 20px rgba(0,0,0,.4); animation: bubLife 2.8s ease-out forwards;
}
.card-bubble.cb-chat {
  top: -24px; transform: translateX(-50%); width: max-content; max-width: 190px; background: #fff; color: #1b1440; border: 3px solid var(--c);
  border-radius: 14px; padding: 5px 10px; font-weight: 800; font-size: 13px; line-height: 1.25; overflow-wrap: anywhere;
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
  box-shadow: 0 6px 16px rgba(0,0,0,.35); animation: chatLifeX 5.5s ease-out forwards;
}

/* Blasen über den Figuren auf dem Brett (CSS2D) */
.bubble-stack { display: flex; flex-direction: column; align-items: center; gap: 8px; pointer-events: none; padding-bottom: 14px; }
.emote-bubble {
  position: relative; width: 66px; height: 66px; border-radius: 50%; background: #fff; border: 4px solid var(--c, #fff);
  box-shadow: 0 6px 16px rgba(0,0,0,.4), 0 0 22px color-mix(in srgb, var(--c, #fff) 55%, transparent);
  display: grid; place-items: center; transform-origin: 50% 100%; animation: bubLife 2.9s ease-out forwards;
}
.emote-bubble::after, .chat-bubble::after {
  content: ''; position: absolute; left: 50%; bottom: -11px; margin-left: -9px; border: 9px solid transparent; border-bottom: 0; border-top-color: var(--c, #fff);
}
.chat-bubble .t { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.emote-bubble .em { font-size: 40px; line-height: 1; display: block; animation: wobble 1s .3s ease-in-out 2; }
.chat-bubble {
  position: relative; width: max-content; max-width: 230px; background: #fff; color: #1b1440; border: 3px solid var(--c, #fff); border-radius: 14px;
  padding: 6px 12px; font: 800 14px/1.3 var(--font); text-align: center; overflow-wrap: anywhere; box-shadow: 0 6px 16px rgba(0,0,0,.35);
  transform-origin: 50% 100%; animation: chatLife 5.6s ease-out forwards;
}
@keyframes bubLife {
  0% { transform: scale(0) translateY(16px); opacity: 0; }
  10% { transform: scale(1.28) translateY(-4px); opacity: 1; }
  17% { transform: scale(.92); }
  24% { transform: scale(1.05); }
  30%, 84% { transform: scale(1) translateY(0); opacity: 1; }
  100% { transform: scale(.8) translateY(-24px); opacity: 0; }
}
@keyframes chatLife {
  0% { transform: scale(.3) translateY(10px); opacity: 0; }
  5% { transform: scale(1.1); opacity: 1; }
  9%, 92% { transform: scale(1) translateY(0); opacity: 1; }
  100% { transform: translateY(-14px); opacity: 0; }
}
@keyframes chatLifeX {
  0% { transform: translateX(-50%) scale(.3); opacity: 0; }
  5% { transform: translateX(-50%) scale(1.1); opacity: 1; }
  9%, 92% { transform: translateX(-50%) scale(1); opacity: 1; }
  100% { transform: translateX(-50%) translateY(-12px); opacity: 0; }
}
@keyframes wobble { 25% { transform: rotate(-14deg) scale(1.1); } 75% { transform: rotate(12deg) scale(1.05); } }

/* Handy quer (wenig Höhe) */
@media (max-height: 520px) {
  .mg-intro { max-height: calc(100vh - 16px); overflow-y: auto; padding: 12px 18px; }
  .vs-card { padding: 10px 16px; gap: 10px; }
  .vs-side canvas { width: 70px; height: 77px; }
  .vs-side { font-size: 16px; }
  .vs { font-size: 42px; }
  .wheel-card { padding: 8px 12px 10px; gap: 4px; }
  .wheel-title { font-size: 18px; }
  #hud-duel { top: 50px; }
  .duel-live { font-size: 14px; padding: 5px 12px; }
  .mg-intro .mg-icon { font-size: 40px; }
  .spec-vs { gap: 10px; margin: 0; }
  .spec-side { font-size: 15px; }
  .spec-side canvas { width: 52px; height: 57px; }
  .spec-vs .vs { font-size: 26px; }
  .mg-intro h2 { font-size: 28px; margin: 0 0 4px; }
  .mg-intro .desc { font-size: 14px; line-height: 1.3; margin: 0 0 8px; }
  .mg-intro .controls { padding: 6px 10px; margin-bottom: 8px; font-size: 13px; }
  .mg-intro .btn-big { padding: 10px 22px; font-size: 18px; }
  .ready-row { margin-bottom: 8px; gap: 4px; }
  .ready-chip { font-size: 11px; padding: 2px 8px 2px 2px; }
  .mg-results { max-height: calc(100vh - 16px); overflow-y: auto; }
  .mg-vote, .mg-standings { padding: 10px 14px; max-height: calc(100vh - 12px); width: min(760px, calc(100vw - 130px)); margin-right: 40px; }
  .mg-vote h2, .mg-standings h2 { font-size: 24px; }
  .mg-vote .sub, .mg-standings .sub { font-size: 13px; margin-bottom: 8px; }
  .vote-card { padding: 10px 6px 8px; }
  .vote-card .vi { font-size: 32px; }
  .vote-card b { font-size: 15px; }
  .vote-card small { -webkit-line-clamp: 2; font-size: 11px; }
  .stand-list { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 8px; }
  .stand-row { grid-template-columns: 26px 30px 1fr auto; padding: 3px 8px; gap: 6px; }
  .stand-row canvas { width: 28px; height: 31px; }
  .stand-row .pl { font-size: 16px; }
  .stand-row .nm { font-size: 14px; }
  .stand-row .pts { font-size: 16px; min-width: 64px; }
  .sbar { height: 6px; }
  .stand-foot { margin-top: 8px; font-size: 15px; }
  .soc-btn { width: 44px; height: 44px; font-size: 21px; }
  /* Dock senkrecht am rechten Rand, Panel und Einblendungen links daneben */
  #social-dock { gap: 6px; flex-direction: column; right: 10px; bottom: 12px; }
  body[data-social="mg"] #social-dock { top: 52px; right: 8px; }
  body[data-social="game"] #social-dock { bottom: 64px; right: 10px; }
  #chat-feed { width: min(260px, calc(100vw - 90px)); right: 64px; bottom: 12px; }
  body[data-social="game"] #chat-feed { right: 64px; bottom: 64px; }
  body[data-social="mg"] #chat-feed { top: 52px; right: 60px; }
  .ctoast { font-size: 13px; padding: 5px 10px; }
  #chat-panel, body[data-social] #chat-panel {
    top: calc(var(--vvt, 0px) + 8px); bottom: auto; right: 64px; height: min(370px, calc(var(--vvh, 100vh) - 16px)); transform-origin: top right;
  }
  .chat-head { padding: 5px 8px 5px 12px; font-size: 15px; }
  .chat-row { padding: 6px 8px 8px; }
  .wheel { --R: 96px; width: 256px; height: 256px; }
  .wheel-btn { width: 50px; height: 50px; margin: -25px 0 0 -25px; }
  .wheel-btn .em { font-size: 28px; }
  .wheel-center .big { font-size: 40px; }
  .wheel-quick { display: grid; grid-template-columns: 1fr 1fr; padding: 10px; gap: 6px; }
  .wq-title { grid-column: 1 / -1; }
  .wheel-quick button { font-size: 13px; padding: 6px 10px; }
  .ef-em { font-size: 34px; }
  .card-bubble.cb-emote { width: 58px; height: 58px; margin-left: -29px; font-size: 34px; }
}
/* Handy hoch (schmal) */
@media (max-width: 560px) {
  .vote-opts { grid-template-columns: 1fr; }
  /* Hochkant: Symbol links, Name + kurze Beschreibung daneben, Stimmen rechts */
  .vote-card { display: grid; grid-template-columns: 44px 1fr auto; grid-template-areas: "vi nm vt" "vi ds vt"; column-gap: 12px; row-gap: 2px; align-items: center; text-align: left; padding: 10px 12px; }
  .vote-card .vi { grid-area: vi; font-size: 38px; text-align: center; }
  .vote-card b { grid-area: nm; align-self: end; }
  .vote-card small { grid-area: ds; align-self: start; -webkit-line-clamp: 3; font-size: 12px; }
  .vote-card .voters { grid-area: vt; margin: 0; max-width: 56px; min-height: 0; }
  :root:not(.touch-ui) .vote-card { padding-left: 34px; } /* Platz für die Zifferntaste (nur mit Tastatur sichtbar) */
  .mg-vote h2, .mg-standings h2 { font-size: 28px; }
  #chat-panel, body[data-social] #chat-panel {
    left: 8px; right: 8px; width: auto; top: calc(var(--vvt, 0px) + 8px); bottom: auto; height: min(440px, calc(var(--vvh, 100vh) - 16px)); transform-origin: top center;
  }
  body[data-social="game"] #social-dock { bottom: 52px; right: 8px; }
  .wheel-wrap { flex-direction: column; gap: 12px; }
  .wheel-quick { display: grid; grid-template-columns: 1fr 1fr; width: min(330px, calc(100vw - 20px)); }
  .wq-title { grid-column: 1 / -1; }
  .wheel-quick button { white-space: normal; }
}
@media (pointer: coarse) { .wheel-btn small { display: none; } }
/* Minispiel-Menüs (Intro, Abstimmung, Ergebnis, Zwischenstand) auf schmalen Bildschirmen: Die Karten sind fast so breit
   wie das Fenster – das senkrechte Emote/Chat-Dock oben rechts würde ihre Ecke verdecken. Dock als Zeile in die Ecke
   darüber, Overlay bekommt oben genau so viel Luft. (Querformat mit wenig Höhe hat oben schon eigene Regeln.) */
@media (max-width: 899px) and (min-height: 521px) {
  body[data-social="mg"][data-mgplay="0"] #social-dock { top: 8px; right: 8px; flex-direction: row; gap: 8px; }
  body[data-social="mg"][data-mgplay="0"] .soc-btn { width: 44px; height: 44px; font-size: 21px; }
  body[data-social="mg"][data-mgplay="0"] #chat-feed { top: 60px; right: 8px; }
  body[data-social="mg"][data-mgplay="0"] #mg-overlay { padding: 58px 0 8px; }
  body[data-social="mg"][data-mgplay="0"] .mg-intro,
  body[data-social="mg"][data-mgplay="0"] .mg-vote,
  body[data-social="mg"][data-mgplay="0"] .mg-standings,
  body[data-social="mg"][data-mgplay="0"] .mg-results { max-height: calc(100dvh - 70px); overflow-y: auto; }
}

/* ---------- Mini-Chat (dauerhaft sichtbar auf dem Brett / in Minispiel-Menüs) ---------- */
.chat-pin { width: 32px; height: 32px; border-radius: 50%; border: 2px solid transparent; background: rgba(255,255,255,.08); cursor: pointer; font-size: 14px; flex-shrink: 0; filter: grayscale(1); opacity: .6; transition: all .15s; }
.chat-pin.on { filter: none; opacity: 1; border-color: var(--primary); background: rgba(255,201,51,.18); }
.chat-pin:hover { opacity: 1; }
#chat-mini {
  position: absolute; right: 12px; bottom: 132px; width: 320px; display: flex; flex-direction: column;
  background: rgba(16,11,44,.76); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  border: 2px solid rgba(255,255,255,.16); border-radius: 16px; box-shadow: 0 10px 30px rgba(0,0,0,.4); overflow: hidden;
  transition: opacity .5s, border-color .3s; animation: panelIn .25s cubic-bezier(.2,1.4,.4,1); transform-origin: bottom right;
}
#chat-mini.idle { opacity: .72; }
#chat-mini.idle:hover { opacity: 1; }
#chat-mini.ping { animation: miniPing 1.2s ease-out; }
@keyframes miniPing { 0% { border-color: var(--primary); box-shadow: 0 0 0 4px rgba(255,201,51,.35), 0 10px 30px rgba(0,0,0,.4); } 100% { border-color: rgba(255,255,255,.16); } }
.cmini-head { display: flex; align-items: center; gap: 8px; padding: 5px 6px 5px 12px; font-family: var(--font-display); font-size: 15px; border-bottom: 1px solid rgba(255,255,255,.08); }
.cmini-hint { flex: 1; text-align: right; font: 700 11px var(--font); color: var(--muted); }
.cmini-x { width: 26px; height: 26px; border-radius: 50%; border: none; background: rgba(255,255,255,.1); color: #fff; cursor: pointer; font: 800 16px/1 var(--font); flex-shrink: 0; }
.cmini-x:hover { background: rgba(255,255,255,.22); }
.cmini-log {
  display: flex; flex-direction: column; justify-content: flex-end; gap: 4px; padding: 8px 8px 2px; max-height: 196px; overflow: hidden; cursor: pointer;
  -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 16px); mask-image: linear-gradient(to bottom, transparent 0, #000 16px);
}
.cml {
  flex-shrink: 0; font-size: 14px; line-height: 1.3; font-weight: 700; color: #fff; padding: 4px 9px; border-radius: 9px;
  background: rgba(255,255,255,.06); border-left: 3px solid var(--c, rgba(255,255,255,.3)); overflow-wrap: anywhere; text-shadow: 0 1px 2px rgba(0,0,0,.5);
}
.cml-in { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.cml b { font-family: var(--font-display); font-weight: 600; margin-right: 6px; }
.cml b::after { content: ':'; color: rgba(255,255,255,.45); }
.cml.own { background: rgba(255,201,51,.12); }
.cml.sys { color: var(--muted); font-style: italic; font-size: 12.5px; border-left-color: rgba(255,255,255,.2); }
.cml.empty { text-align: center; border-left: 0; background: none; }
.cml.fresh { animation: cmlFresh 2.4s ease-out; }
@keyframes cmlFresh {
  0% { transform: translateX(16px); opacity: 0; background: color-mix(in srgb, var(--c, #fff) 50%, rgba(16,11,44,.8)); }
  12% { transform: none; opacity: 1; background: color-mix(in srgb, var(--c, #fff) 50%, rgba(16,11,44,.8)); }
  100% { background: rgba(255,255,255,.06); }
}
.cmini-input {
  margin: 6px 8px 8px; height: 38px; display: flex; align-items: center; gap: 8px; padding: 0 7px 0 12px; border-radius: 11px;
  border: 2px solid rgba(255,201,51,.55); background: rgba(0,0,0,.32); color: rgba(221,216,255,.9); font: 700 14px var(--font); cursor: text; text-align: left;
  transition: border-color .15s, box-shadow .15s, color .15s;
}
.cmini-input span { flex: 1; }
.cmini-input::before { content: '✏️'; font-size: 13px; }
.cmini-input kbd { font: 800 11px/1 var(--font); background: var(--primary); color: #1b1440; border-radius: 6px; padding: 4px 7px; box-shadow: 0 2px 0 rgba(0,0,0,.3); }
.cmini-input:hover, .cmini-input:focus-visible { border-color: var(--primary); color: #fff; box-shadow: 0 0 0 3px rgba(255,201,51,.2); outline: none; }
/* Minispiel-Menüs: unten links neben den mittigen Karten, nur wenn genug Platz ist */
body[data-social="mg"] #chat-mini { left: 12px; right: auto; bottom: 12px; width: min(290px, calc((100vw - 800px) / 2)); transform-origin: bottom left; }
@media (max-width: 1239px) { body[data-social="mg"] #chat-mini { display: none; } }
/* Kleinere Desktops/Tablets: schmaler und über Status-Chip/Aktionsleiste */
@media (max-width: 1100px) and (min-width: 721px) and (min-height: 521px) {
  body[data-social="game"] #chat-mini { width: 280px; bottom: 168px; }
  body[data-social="game"] #chat-panel { bottom: 168px; height: min(400px, calc(100vh - 240px)); }
}
/* Chat-Einblendungen (wenn Mini-Chat nicht sichtbar, z. B. während eines Minispiels) etwas kräftiger */
.ctoast { background: rgba(16,11,44,.86); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); font-size: 15px; border-left-width: 5px; }

/* Handy (hoch & quer): nur die letzten 2 Nachrichten als schlankes Overlay, Tippen öffnet den Chat */
@media (max-width: 720px), (max-height: 520px) {
  #chat-mini, body[data-social] #chat-mini {
    background: none; border: 0; box-shadow: none; backdrop-filter: none; -webkit-backdrop-filter: none; border-radius: 0; overflow: visible;
    pointer-events: none; animation: none; width: min(300px, 78vw);
  }
  #chat-mini.ping { animation: none; }
  #chat-mini.idle { opacity: .68; }
  .cmini-head, .cmini-input { display: none; }
  .cmini-log { padding: 0; max-height: none; align-items: flex-end; gap: 3px; -webkit-mask-image: none; mask-image: none; }
  .cml { pointer-events: auto; max-width: 100%; font-size: 13px; padding: 3px 10px 3px 8px; background: rgba(16,11,44,.82); box-shadow: 0 3px 10px rgba(0,0,0,.3); }
  .cml-in { -webkit-line-clamp: 1; }
  .cml:nth-last-child(n+3), .cml.empty { display: none; }
  .cml:nth-last-child(2) { opacity: .8; }
  @keyframes cmlFresh {
    0% { transform: translateX(16px); opacity: 0; background: color-mix(in srgb, var(--c, #fff) 55%, rgba(16,11,44,.85)); }
    12% { transform: none; opacity: 1; background: color-mix(in srgb, var(--c, #fff) 55%, rgba(16,11,44,.85)); }
    100% { background: rgba(16,11,44,.82); }
  }
}
/* Handy hoch: unter Spielerkarten + 2 Log-Zeilen, rechtsbündig */
@media (max-width: 720px) {
  body[data-social="game"] #chat-mini { top: calc(var(--hpb, 90px) + 64px); bottom: auto; right: 8px; }
}
/* Handy quer: Spielerkarten links, Runde/Pokal oben mittig → Log und Chat oben rechts */
@media (max-height: 520px) and (min-width: 721px) {
  #hud-log { top: 8px; right: 8px; left: auto; bottom: auto; width: min(300px, calc(50vw - 160px)); min-width: 0; max-height: none; justify-content: flex-start; gap: 3px; }
  .log-line, .log-line.new { font-size: 13px; padding: 3px 10px 3px 8px; border-left-width: 4px; border-radius: 10px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; align-self: flex-end; }
  .log-line:nth-last-child(n+3) { display: none; }
  .log-line:nth-last-child(2) { opacity: .75; font-size: 12.5px; }
  .log-line.me { padding-right: 38px; }
  body[data-social="game"] #chat-mini { top: 70px; bottom: auto; right: 8px; width: min(300px, calc(50vw - 160px)); }
  body[data-social="game"] #toasts { top: 60px; }
}

/* ---------- Items: Statusanzeige, gesperrte Items, Zielwürfel ---------- */
.status-mini { display: flex; gap: 1px; font-size: 13px; flex-shrink: 0; }
.status-mini:empty { display: none; }
.status-mini sub { font-size: 9px; font-weight: 800; vertical-align: -2px; }
.item-btn.blocked { opacity: .45; filter: grayscale(.7); cursor: not-allowed; }
.item-btn.blocked:hover { transform: none; border-color: rgba(255,255,255,.2); }
.dice-pick-grid { display: grid; grid-template-columns: repeat(5, 46px); gap: 6px; }
.btn.dice-pick { min-width: 0; width: 46px; padding: 10px 0; font-size: 18px; font-weight: 800; }

/* ---------- Gift & Gegenmittel (🍄 Giftpilz, 🌿 Gegengift, 🧪 Heiltrank) ---------- */
.tg-tags { display: flex; justify-content: center; gap: 4px; margin: 2px 0 1px; min-height: 22px; }
.tg-tag { display: inline-flex; align-items: center; font-size: 15px; line-height: 1; padding: 3px 6px; border-radius: 999px; background: rgba(255,255,255,.1); }
.tg-tag sub { font-size: 10px; font-weight: 800; vertical-align: -2px; margin-left: 1px; }
.tg-tag.guard { background: rgba(88,200,255,.2); box-shadow: inset 0 0 0 1px rgba(127,214,255,.55); }
.tg-tag.pz { background: rgba(139,224,78,.18); color: #c9f7a6; }
.tg-tag.pz.max { background: rgba(180,60,255,.25); color: #e7c9ff; box-shadow: inset 0 0 0 1px rgba(217,184,255,.6); }
.target-btn.guarded { border-color: rgba(127,214,255,.45); }
.target-btn.guarded canvas { filter: saturate(.75); }
.tg-hints { display: grid; gap: 3px; margin: -4px 0 10px; font-size: 13px; line-height: 1.35; text-align: left; }
.cure-emoji { animation: cureWob 1.4s ease-in-out infinite; filter: drop-shadow(0 0 12px rgba(139,224,78,.55)); }
@keyframes cureWob { 0%, 100% { transform: rotate(-6deg) scale(1); } 50% { transform: rotate(6deg) scale(1.08); } }
.cure-actions { flex-direction: column; align-items: stretch; max-width: 380px; margin-left: auto; margin-right: auto; }
.btn.cure-btn { display: flex; align-items: center; gap: 12px; text-align: left; padding: 12px 18px; }
.cure-btn .cure-ic { font-size: 30px; line-height: 1; }
.cure-btn .cure-tx { display: flex; flex-direction: column; line-height: 1.15; }
.cure-btn .cure-tx small { font-size: 13px; font-weight: 700; opacity: .8; }
.cure-hint { text-align: center; margin-top: 8px; font-size: 13px; }
@media (max-width: 520px) {
  .btn.cure-btn { padding: 10px 14px; font-size: 18px; }
  .cure-btn .cure-ic { font-size: 26px; }
  .tg-hints { font-size: 12px; }
}

/* Waagerecht scrollende Zeilen (util.js scrollFade): weiche Kante zeigt, dass seitlich noch mehr kommt */
.sfade { --sf: 26px; }
.sfade.sf-r { -webkit-mask-image: linear-gradient(to right, #000 calc(100% - var(--sf)), transparent); mask-image: linear-gradient(to right, #000 calc(100% - var(--sf)), transparent); }
.sfade.sf-l { -webkit-mask-image: linear-gradient(to left, #000 calc(100% - var(--sf)), transparent); mask-image: linear-gradient(to left, #000 calc(100% - var(--sf)), transparent); }
.sfade.sf-l.sf-r { -webkit-mask-image: linear-gradient(to right, transparent, #000 var(--sf), #000 calc(100% - var(--sf)), transparent); mask-image: linear-gradient(to right, transparent, #000 var(--sf), #000 calc(100% - var(--sf)), transparent); }

/* ===== lobby.css ===== */
/* =====================================================================
   Startseite & Lobby (lobby.js)
   Layout, Spielerkarten, Einstellungen, „Regeln anpassen“, Angelwelt-Einstiege
   ===================================================================== */

:root {
  --lb-line: rgba(255, 255, 255, .1);
  --lb-sunk: rgba(8, 4, 30, .34);
  --lb-violet: #a06bff;
  --lb-pink: #ff9be0;
  --lb-ink: #1b1440;
  --lb-ease: cubic-bezier(.3, 1.35, .5, 1);
  --lb-wrap: 1680px;
  --lb-dock: 140px; /* rechts unten liegen Chat- und Emote-Knopf (social.js) */
}

/* ---------- Gemeinsame Bausteine ---------- */
.acct-slot { display: flex; align-items: center; justify-content: flex-end; min-width: 0; }
.acct-slot:empty { display: none; }
.invite-title { font-family: var(--font-display); font-size: 19px; font-weight: 600; margin: 0 0 12px; letter-spacing: .2px; }
.linkish {
  border: 0; background: none; padding: 0; font: inherit; font-weight: 800; color: #ffd76a; cursor: pointer;
  text-decoration: underline; text-decoration-color: rgba(255, 215, 106, .4); text-underline-offset: 3px;
  transition: color .15s, text-decoration-color .15s;
}
.linkish:hover, .linkish:focus-visible { color: #fff; text-decoration-color: currentColor; outline: none; }
.vmark {
  flex: none; display: inline-grid; place-items: center; width: 16px; height: 16px; border-radius: 50%;
  background: linear-gradient(180deg, #8fbfff, #3d8bff); color: #fff; font: 800 10px/1 var(--font);
  box-shadow: 0 0 0 2px rgba(27, 20, 64, .7);
}
.spin { flex: none; width: 18px; height: 18px; border-radius: 50%; border: 3px solid rgba(255, 255, 255, .2); border-top-color: var(--good); animation: lobbySpin .9s linear infinite; }
@keyframes lobbySpin { to { transform: rotate(360deg); } }
@keyframes avatarHop { 0% { transform: scale(.85) rotate(-6deg); } 60% { transform: scale(1.06) rotate(3deg); } 100% { transform: none; } }
canvas.bounce { animation: avatarHop .45s cubic-bezier(.2, 1.6, .4, 1); }

/* Namensfeld + Konto-Hinweis */
.name-input.locked { border-style: dashed; border-color: rgba(143, 191, 255, .45); background: rgba(61, 139, 255, .08); cursor: default; }
.name-input.locked:focus { border-color: rgba(143, 191, 255, .7); }
.name-input.nudge { animation: logShake .4s; border-color: #ff8a95; }
.name-hint { display: flex; flex-wrap: wrap; align-items: center; gap: 3px 6px; margin: 7px 2px 0; font-size: 12.5px; font-weight: 700; color: var(--muted); line-height: 1.35; }
.name-hint:empty { display: none; }
.name-hint.acct { color: #cfe1ff; display: block; } /* Fließtext: das ✓ bleibt beim Umbruch (Handy) am Text */
.name-hint.acct > * + * { margin-left: 5px; }
.name-hint.acct .vmark { vertical-align: -3px; }
.name-hint .dot { opacity: .5; }

/* Avatar-Bühne (Startseite, eigener Charakter) */
.avatar-stage {
  position: relative; display: grid; place-items: end center; width: 180px; height: 208px; border-radius: 24px; overflow: hidden;
  background: radial-gradient(120px 100px at 50% 36%, rgba(255, 255, 255, .15), transparent 70%), linear-gradient(180deg, rgba(255, 255, 255, .07), rgba(255, 255, 255, .02));
  border: 1px solid rgba(255, 255, 255, .09);
}
.avatar-stage::before {
  content: ''; position: absolute; left: 50%; bottom: 12px; width: 128px; height: 26px; margin-left: -64px; border-radius: 50%;
  background: radial-gradient(closest-side, rgba(8, 4, 30, .55), transparent);
}
.avatar-stage canvas { position: relative; width: 166px; height: 189px; margin-bottom: 8px; }
.avatar-stage.small { width: 112px; height: 128px; border-radius: 18px; }
.avatar-stage.small::before { width: 84px; height: 18px; margin-left: -42px; bottom: 8px; }
.avatar-stage.small canvas { width: 102px; height: 116px; margin-bottom: 6px; }

/* ---------- Charakter-Auswahl ---------- */
.char-picker { min-width: 0; container: picker / inline-size; }
.cp-tabs { --i: 0; position: relative; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); padding: 4px; border-radius: 14px; background: var(--lb-sunk); }
.cp-thumb {
  position: absolute; top: 4px; bottom: 4px; left: calc(4px + (100% - 8px) / 4 * var(--i)); width: calc((100% - 8px) / 4);
  border-radius: 10px; background: linear-gradient(180deg, #ffe066, var(--primary)); box-shadow: 0 3px 0 rgba(0, 0, 0, .2);
  transition: left .32s var(--lb-ease);
}
.cp-tab {
  position: relative; z-index: 1; display: flex; align-items: center; justify-content: center; gap: 5px; min-width: 0; padding: 7px 4px;
  border: none; border-radius: 10px; background: transparent; color: var(--muted); font-family: var(--font-display); font-weight: 600; font-size: 14.5px;
  cursor: pointer; transition: color .2s;
}
.cp-tab .ti { font-size: 17px; line-height: 1; flex: none; transition: transform .3s var(--lb-ease); }
.cp-tab .tl { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.cp-tab:hover { color: #fff; }
.cp-tab.sel { color: var(--lb-ink); }
.cp-tab.sel .ti { transform: scale(1.12) rotate(-6deg); }
.cp-cap { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; margin: 9px 2px 7px; font-size: 13px; color: var(--muted); }
.cp-cap b { font-family: var(--font-display); font-weight: 600; font-size: 15px; color: #fff; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.cp-cap span { flex: none; font-weight: 800; font-size: 12px; }
.cp-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(46px, 1fr)); gap: 6px; animation: cpIn .28s ease; }
@keyframes cpIn { from { opacity: 0; transform: translateY(4px); } }
.cp-grid.still { animation: none; }
.cp-grid.cp-color { grid-template-columns: repeat(auto-fill, minmax(34px, 1fr)); gap: 8px; justify-items: center; padding: 3px 0; }
.swatch {
  position: relative; width: 100%; max-width: 38px; aspect-ratio: 1; padding: 0; border-radius: 50%; border: 3px solid rgba(255, 255, 255, .22); cursor: pointer;
  box-shadow: inset 0 -4px 0 rgba(0, 0, 0, .18); transition: transform .2s var(--lb-ease), border-color .15s, box-shadow .2s;
}
.swatch:hover { transform: scale(1.12); }
.swatch.sel { border-color: #fff; transform: scale(1.16); box-shadow: inset 0 -4px 0 rgba(0, 0, 0, .18), 0 0 0 3px rgba(255, 255, 255, .25), 0 4px 12px rgba(0, 0, 0, .35); }
.swatch.taken { opacity: .25; cursor: not-allowed; transform: none; }
.swatch.taken::after { content: '✕'; position: absolute; inset: 0; display: grid; place-items: center; font-size: 13px; font-weight: 800; color: #fff; }
.opt-btn {
  width: 100%; aspect-ratio: 1; min-width: 0; padding: 0; border-radius: 12px; background: rgba(255, 255, 255, .07); border: 2px solid transparent; cursor: pointer;
  transition: transform .18s var(--lb-ease), background .15s, border-color .15s;
}
.opt-btn canvas { width: 100%; height: 100%; display: block; }
.opt-btn:hover { transform: translateY(-2px); background: rgba(255, 255, 255, .13); }
.opt-btn.sel { border-color: var(--primary); background: rgba(255, 201, 51, .18); }
.char-picker:not(.small) .cp-grid { min-height: 98px; align-content: start; }
/* Schmale Auswahl: Reiter mit Icon über dem Text, damit nichts abgeschnitten wird */
@container picker (max-width: 380px) {
  .cp-tab { flex-direction: column; gap: 1px; padding: 5px 2px; font-size: 12.5px; }
}
.char-picker.small .cp-tab { flex-direction: column; gap: 1px; padding: 5px 2px; font-size: 12px; }
.char-picker.small .cp-grid { grid-template-columns: repeat(auto-fill, minmax(40px, 1fr)); gap: 5px; }
.char-picker.small .cp-grid.cp-color { grid-template-columns: repeat(auto-fill, minmax(28px, 1fr)); gap: 6px; }
.char-picker.small .cp-grid .swatch { max-width: 30px; border-width: 2px; }
@media (max-width: 560px) {
  .cp-tab { flex-direction: column; gap: 1px; padding: 5px 2px; font-size: 12.5px; }
  .cp-grid.cp-color, .char-picker.small .cp-grid.cp-color { grid-template-columns: repeat(8, minmax(0, 1fr)); gap: 6px; }
  .cp-grid .swatch { border-width: 2px; }
  .char-picker:not(.small) .cp-grid { min-height: 0; }
}

/* =====================================================================
   Startseite
   ===================================================================== */
.home-wrap { max-width: 1180px; margin: 0 auto; padding: 12px 20px 48px; }
.home-top { display: flex; justify-content: flex-end; align-items: center; min-height: 48px; }

/* Logo mit sanft wippenden Buchstaben */
.home-hero { text-align: center; margin: 0 0 24px; }
.logo { position: relative; display: inline-block; margin: 0; font-family: var(--font-display); line-height: .9; animation: logoFloat 7s ease-in-out infinite; }
@keyframes logoFloat { 0%, 100% { transform: translateY(0) rotate(-1deg); } 50% { transform: translateY(-5px) rotate(1deg); } }
.logo-top { display: block; white-space: nowrap; font-size: clamp(40px, 10.6vw, 104px); font-weight: 700; letter-spacing: 3px; filter: drop-shadow(0 6px 0 #7a2a9a) drop-shadow(0 14px 20px rgba(0, 0, 0, .4)); }
.logo-top i {
  display: inline-block; font-style: normal;
  background: linear-gradient(180deg, #fff6c2 0%, #ffc933 48%, #ff8a3d 100%); -webkit-background-clip: text; background-clip: text; color: transparent;
  animation: letterBob 4.2s ease-in-out infinite;
}
.logo-top i:nth-child(2) { animation-delay: .1s; }
.logo-top i:nth-child(3) { animation-delay: .2s; }
.logo-top i:nth-child(4) { animation-delay: .3s; }
.logo-top i:nth-child(5) { animation-delay: .4s; }
.logo-top i:nth-child(6) { animation-delay: .5s; }
.logo-top i:nth-child(7) { animation-delay: .6s; }
.logo-top i:nth-child(8) { animation-delay: .7s; }
.logo-top i:nth-child(9) { animation-delay: .8s; }
@keyframes letterBob { 0%, 30%, 100% { transform: translateY(0) rotate(0); } 12% { transform: translateY(-8px) rotate(-3deg); } 22% { transform: translateY(1px) rotate(1deg); } }
.logo-bottom { display: block; font-size: clamp(22px, 4.6vw, 36px); font-weight: 600; color: var(--lb-pink); letter-spacing: 4px; margin-top: 8px; text-shadow: 0 3px 0 #4a1a6a; }
.logo-spark {
  position: absolute; width: 16px; height: 16px; background: #fff3b8; pointer-events: none;
  clip-path: polygon(50% 0, 61% 39%, 100% 50%, 61% 61%, 50% 100%, 39% 61%, 0 50%, 39% 39%);
  filter: drop-shadow(0 0 6px rgba(255, 220, 120, .9)); animation: sparkle 3.4s ease-in-out infinite;
}
.logo-spark.s1 { top: 4%; left: -5%; }
.logo-spark.s2 { top: -4%; right: 2%; width: 12px; height: 12px; animation-delay: 1.1s; }
.logo-spark.s3 { bottom: 24%; right: -6%; width: 10px; height: 10px; animation-delay: 2.2s; background: #ffc2ec; }
@keyframes sparkle { 0%, 100% { transform: scale(0) rotate(0); opacity: 0; } 20% { transform: scale(1) rotate(45deg); opacity: 1; } 40% { transform: scale(0) rotate(90deg); opacity: 0; } }
.tagline { color: var(--muted); margin: 14px 0 0; font-size: 17px; line-height: 1.4; }

.home-grid { display: grid; gap: 18px; align-items: start; }
.home-side { display: flex; flex-direction: column; gap: 18px; min-width: 0; }
@media (min-width: 1100px) {
  .home-grid { grid-template-columns: minmax(0, 1.1fr) minmax(400px, .9fr); }
}
.home-card { padding: 22px; min-width: 0; display: flex; flex-direction: column; }
.home-card > .invite-banner { order: -1; margin: 0 0 18px; }
.profile-editor { display: flex; gap: 22px; align-items: flex-start; }
.avatar-col { display: flex; flex-direction: column; align-items: center; gap: 10px; flex: none; }
.dice-btn { align-self: stretch; }
.profile-fields { flex: 1; min-width: 0; }
.profile-fields > .field-label:first-child { margin-top: 0; }
.profile-fields .name-hint + .field-label { margin-top: 14px; }

.home-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-top: 22px; }
.home-actions > .btn { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.home-or { grid-column: 1 / -1; display: flex; align-items: center; gap: 12px; margin: 2px 0 -2px; color: var(--muted); font-size: 11.5px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; }
.home-or::before, .home-or::after { content: ''; flex: 1; height: 1px; background: var(--lb-line); }
.join-row { grid-column: 1 / -1; display: flex; gap: 8px; }
.join-row .input { flex: 1; min-width: 0; }
.home-card.invited .join-row { order: -1; }
.home-card.invited .home-actions > .btn-ghost { font-size: 17px; padding: 12px 16px; }

.invite-banner {
  display: flex; align-items: center; gap: 12px; margin-top: 18px; padding: 12px 16px; border-radius: 14px; text-align: left; line-height: 1.35; font-weight: 700;
  background: linear-gradient(90deg, rgba(255, 201, 51, .18), rgba(255, 107, 203, .16)); border: 1px solid rgba(255, 201, 51, .4); animation: popIn .4s var(--lb-ease);
}
.invite-banner .ib-ic { flex: none; font-size: 28px; line-height: 1; }
.invite-banner b { color: var(--primary); letter-spacing: 3px; }
.invite-banner small { display: block; margin-top: 2px; color: var(--muted); font-weight: 700; }
.invite-banner.blocked { background: linear-gradient(90deg, rgba(255, 77, 94, .2), rgba(122, 42, 154, .22)); border-color: rgba(255, 77, 94, .5); }

/* Angelwelt-Karte */
.fish-card {
  position: relative; overflow: hidden; border-radius: var(--radius); isolation: isolate;
  background: linear-gradient(180deg, #2a2064, #1d1650); border: 1px solid rgba(255, 255, 255, .14); box-shadow: var(--shadow);
  transition: transform .25s var(--lb-ease), box-shadow .25s, border-color .25s;
}
.fish-card:hover { transform: translateY(-3px); border-color: rgba(125, 179, 255, .45); box-shadow: 0 16px 36px rgba(8, 4, 30, .5); }
.fish-art { height: 150px; overflow: hidden; }
.fish-art svg { display: block; width: 100%; height: 100%; transition: transform .8s ease; }
.fish-card:hover .fish-art svg { transform: scale(1.04); }
.fish-body {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: 'k b' 't b' 'p b'; column-gap: 16px; align-items: center;
  padding: 14px 20px 18px;
}
.fish-kicker { grid-area: k; font-size: 11.5px; font-weight: 800; letter-spacing: 1.2px; text-transform: uppercase; color: #9fdcff; }
.fish-title { grid-area: t; margin: 2px 0 0; font-family: var(--font-display); font-size: 24px; font-weight: 600; }
.fish-text { grid-area: p; margin: 4px 0 0; color: var(--muted); font-size: 14px; line-height: 1.4; }
.fish-btn { grid-area: b; }

/* Feature-Leiste */
.home-features { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-top: 22px; }
.hf { display: flex; align-items: center; gap: 12px; min-width: 0; padding: 14px; border-radius: 16px; background: rgba(255, 255, 255, .045); border: 1px solid rgba(255, 255, 255, .07); }
.hf-ic { flex: none; width: 42px; height: 42px; display: grid; place-items: center; border-radius: 12px; background: rgba(255, 255, 255, .08); font-size: 21px; }
.hf > div { min-width: 0; }
.hf > div > b { display: block; font-family: var(--font-display); font-weight: 600; font-size: 16px; }
.hf > div > span { display: block; margin-top: 2px; color: var(--muted); font-size: 12.5px; line-height: 1.3; }

@media (max-width: 960px) {
  .home-features { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 720px) {
  .home-wrap { padding: 8px 14px 40px; }
  .home-hero { margin-bottom: 18px; }
  .tagline { font-size: 15px; margin-top: 10px; }
  .home-card { padding: 16px; }
  .profile-editor { flex-direction: column; align-items: stretch; gap: 14px; }
  .avatar-col { flex-direction: row; justify-content: center; align-items: flex-end; gap: 12px; }
  .avatar-col .dice-btn { align-self: flex-end; }
  .avatar-stage:not(.small) { width: 140px; height: 162px; }
  .avatar-stage:not(.small) canvas { width: 128px; height: 146px; }
  .home-actions { grid-template-columns: minmax(0, 1fr); }
  .fish-body { grid-template-columns: minmax(0, 1fr); grid-template-areas: 'k' 't' 'p' 'b'; padding: 12px 16px 16px; }
  .fish-btn { margin-top: 12px; width: 100%; }
  .fish-art { height: 128px; }
}
@media (max-width: 520px) {
  .home-features { grid-template-columns: minmax(0, 1fr); gap: 8px; }
  .hf { padding: 10px 12px; }
}

/* ---------- Lobby-Liste (Startseite) ---------- */
.lobbies-card { padding: 16px; min-width: 0; }
.lobbies-head { display: flex; justify-content: space-between; align-items: center; gap: 8px 12px; flex-wrap: wrap; margin-bottom: 12px; }
.lobbies-head .invite-title { margin: 0; }
.online-pill { display: inline-flex; align-items: center; gap: 8px; padding: 6px 12px; border-radius: 999px; background: rgba(51, 209, 122, .12); border: 1px solid rgba(51, 209, 122, .35); font-weight: 800; font-size: 12.5px; color: #c9f7dc; min-width: 0; }
.online-pill span { overflow: hidden; text-overflow: ellipsis; }
.live-dot { flex: none; width: 9px; height: 9px; border-radius: 50%; background: var(--good); animation: livePulse 1.8s ease-out infinite; }
.online-pill.off { background: rgba(255, 77, 94, .12); border-color: rgba(255, 77, 94, .35); color: #ffc2c8; }
.online-pill.off .live-dot { background: var(--danger); animation: none; }
@keyframes livePulse { 0% { box-shadow: 0 0 0 0 rgba(51, 209, 122, .65); } 70%, 100% { box-shadow: 0 0 0 8px rgba(51, 209, 122, 0); } }
.lobbies-list { display: flex; flex-direction: column; gap: 8px; max-height: min(420px, 56vh); overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; padding: 2px; }
.lrow { flex: none; border-radius: 14px; background: rgba(255, 255, 255, .06); border: 2px solid rgba(255, 255, 255, .08); animation: popIn .35s cubic-bezier(.2, 1.5, .4, 1); transition: border-color .15s, background .15s, opacity .2s; }
.lrow.pub.s-wait { border-color: rgba(51, 209, 122, .32); }
.lrow.pub.s-wait:hover { border-color: rgba(51, 209, 122, .6); background: rgba(51, 209, 122, .08); }
.lrow.priv.s-wait:hover { border-color: rgba(160, 107, 255, .5); }
.lrow.s-play, .lrow.s-end, .lrow.s-full { opacity: .72; }
.lrow.coding { border-color: rgba(160, 107, 255, .65); background: rgba(160, 107, 255, .12); opacity: 1; }
.lr-top { display: grid; grid-template-columns: 42px minmax(0, 1fr) auto auto; align-items: center; gap: 12px; padding: 10px 12px; }
.lr-vis { width: 42px; height: 42px; border-radius: 12px; display: grid; place-items: center; font-size: 20px; background: rgba(0, 0, 0, .22); }
.lrow.pub .lr-vis { background: rgba(51, 209, 122, .2); }
.lrow.priv .lr-vis { background: rgba(160, 107, 255, .22); }
.lr-main { min-width: 0; }
.lr-host { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 8px; font-family: var(--font-display); font-size: 16px; color: var(--muted); white-space: nowrap; min-width: 0; }
.lr-host b { color: #fff; font-weight: 600; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.lr-hn { display: flex; align-items: baseline; min-width: 0; white-space: pre; } /* Englisch: „Name’s lobby“ ohne Abstand zwischen Name und Text */
.lr-visl { flex: none; font-family: var(--font); font-size: 11px; font-weight: 800; color: var(--muted); }
.lrow.pub .lr-visl { color: #9ff0c2; }
.lrow.priv .lr-visl { color: #d9c4ff; }
.lr-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 5px; }
.lt { font-size: 11.5px; font-weight: 800; padding: 2px 8px; border-radius: 8px; background: rgba(255, 255, 255, .1); color: #ddd8ff; white-space: nowrap; }
.lt.st-wait { background: rgba(51, 209, 122, .2); color: #9ff0c2; }
.lt.st-play { background: rgba(255, 138, 61, .22); color: #ffc59a; }
.lt.st-end { background: rgba(255, 201, 51, .2); color: var(--primary); }
.lt.st-full { background: rgba(255, 77, 94, .22); color: #ff9aa5; }
.lt.mg { background: rgba(160, 107, 255, .25); color: #d9c4ff; }
.lr-count { text-align: center; min-width: 84px; }
.lr-num { font-family: var(--font-display); font-size: 15px; color: var(--muted); line-height: 1; }
.lr-num b { font-size: 23px; color: #fff; font-weight: 700; }
.lr-count small { display: block; font-size: 11px; font-weight: 800; color: var(--muted); margin-top: 3px; white-space: nowrap; }
.lr-pips { display: flex; gap: 3px; justify-content: center; margin-top: 5px; }
.lr-pips i { width: 7px; height: 7px; border-radius: 50%; background: rgba(255, 255, 255, .14); }
.lr-pips i.hu { background: var(--primary); box-shadow: 0 0 6px rgba(255, 201, 51, .5); }
.lr-pips i.bo { background: #7db3ff; }
.lr-btn { min-width: 108px; }
.lr-code { display: none; padding: 0 12px 12px; }
.lrow.coding .lr-code { display: block; animation: fadeIn .2s; }
.lr-code-l { display: block; font-size: 13px; color: #ddd8ff; font-weight: 700; margin-bottom: 7px; line-height: 1.3; }
.lr-code-row { display: flex; gap: 8px; }
.lr-code-row .input { flex: 1; min-width: 0; padding: 9px 12px; font-size: 19px; }
.lr-err { color: #ff8a95; font-weight: 700; font-size: 13px; min-height: 18px; margin-top: 6px; }
.lr-code.shake .lr-code-row { animation: logShake .4s; }
.lrow.skel { display: grid; grid-template-columns: 42px 1fr 108px; gap: 12px; align-items: center; padding: 12px; min-height: 66px; animation: none; }
.lrow.skel i { display: block; height: 14px; border-radius: 7px; background: linear-gradient(90deg, rgba(255, 255, 255, .05), rgba(255, 255, 255, .14), rgba(255, 255, 255, .05)); background-size: 200% 100%; animation: lobbyShimmer 1.4s linear infinite; }
.lrow.skel i:first-child { height: 42px; border-radius: 12px; }
.lrow.skel i:last-child { height: 34px; border-radius: 11px; }
@keyframes lobbyShimmer { from { background-position: 200% 0; } to { background-position: -200% 0; } }
.lobbies-empty { display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center; padding: 22px 14px 18px; border-radius: 14px; border: 2px dashed rgba(255, 255, 255, .14); background: radial-gradient(circle at 50% 30%, rgba(51, 209, 122, .08), transparent 70%); }
.le-icon { font-size: 46px; line-height: 1.1; animation: leBob 3.2s ease-in-out infinite; }
@keyframes leBob { 0%, 100% { transform: translateY(0) rotate(-4deg); } 50% { transform: translateY(-5px) rotate(4deg); } }
.lobbies-empty b { font-family: var(--font-display); font-size: 18px; font-weight: 600; }
.lobbies-empty span { color: var(--muted); font-size: 14px; max-width: 400px; margin-bottom: 8px; line-height: 1.35; }
.lobbies-more { flex: none; text-align: center; color: var(--muted); font-size: 13px; font-weight: 700; padding: 6px; }
@media (max-width: 560px) {
  .lobbies-card { padding: 12px; }
  .lr-top { grid-template-columns: 36px minmax(0, 1fr) auto; gap: 8px 10px; padding: 10px; }
  .lr-vis { width: 36px; height: 36px; font-size: 17px; }
  .lr-count { min-width: 0; }
  .lr-btn { grid-column: 1 / -1; width: 100%; }
  .lr-code { padding: 0 10px 10px; }
}

/* =====================================================================
   Lobby
   ===================================================================== */
#screen-lobby { display: flex; flex-direction: column; }
.lobby-wrap { flex: 1 0 auto; width: 100%; max-width: var(--lb-wrap); margin: 0 auto; padding: 16px 24px 4px; }

/* Kopfzeile */
.lobby-header { display: flex; align-items: center; gap: 14px; min-height: 52px; margin-bottom: 18px; }
.logo-small { font-family: var(--font-display); font-size: 30px; margin: 0; color: var(--primary); text-shadow: 0 3px 0 #7a2a9a; white-space: nowrap; }
.logo-small span { color: var(--lb-pink); font-weight: 500; }
.code-chip {
  display: inline-flex; align-items: center; gap: 10px; height: 46px; padding: 0 7px 0 14px; border-radius: 14px; cursor: pointer; color: #fff; font-family: var(--font);
  border: 1px solid rgba(255, 201, 51, .35); background: linear-gradient(180deg, rgba(255, 201, 51, .16), rgba(255, 201, 51, .05));
  transition: transform .18s var(--lb-ease), border-color .15s, background .15s;
}
.code-chip small { font-size: 10.5px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; color: #ffe8a8; opacity: .8; }
.code-chip b { font-family: var(--font-display); font-size: 22px; font-weight: 700; letter-spacing: 4px; color: var(--primary); }
.cc-copy { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 10px; background: rgba(255, 201, 51, .18); color: #ffe8a8; }
.cc-copy > * { grid-area: 1 / 1; transition: transform .3s var(--lb-ease), opacity .2s; }
.cc-copy svg { width: 16px; height: 16px; }
.cc-ok { opacity: 0; transform: scale(.3); color: #8ff0b8; font: 800 16px/1 var(--font); font-style: normal; }
.code-chip.copied { border-color: rgba(51, 209, 122, .6); background: linear-gradient(180deg, rgba(51, 209, 122, .18), rgba(51, 209, 122, .05)); }
.code-chip.copied .cc-ic { opacity: 0; transform: scale(.3) rotate(-30deg); }
.code-chip.copied .cc-ok { opacity: 1; transform: none; }
.code-chip:hover { transform: translateY(-1px); border-color: rgba(255, 201, 51, .7); }
.code-chip:active { transform: translateY(1px); }
.lh-gap { flex: 1; }
.lobby-header > .lang-sw { flex: none; } /* Sprachschalter (lobby.js) – auf dem Handy über Konto-Menü/Anmelde-Fenster */
.btn-leave { display: inline-flex; align-items: center; gap: 8px; }
.bl-ic { font-size: 18px; line-height: 1; }

/* Raster: Desktop = Hauptbereich + Einstellungs-Spalte; darunter gestapelt mit Reitern */
.lobby-grid { display: grid; gap: 20px; align-items: start; }
.lobby-main { display: flex; flex-direction: column; gap: 20px; min-width: 0; }
.lobby-sub { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; align-items: start; }
.lobby-side { min-width: 0; }
.lobby-tabs { display: none; }
@media (min-width: 1200px) {
  .lobby-grid { grid-template-columns: minmax(0, 1fr) clamp(430px, 31vw, 520px); }
}

/* Spieler */
.players-card { padding: 20px 20px 18px; }
.players-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 16px; }
.players-head .invite-title { margin: 0; }
#lobby-count { color: var(--muted); font-weight: 500; margin-left: 2px; }
.quick-hint {
  display: flex; align-items: center; gap: 10px; margin: -4px 0 14px; padding: 10px 12px; border-radius: 12px; font-size: 14px; color: #dff9ea; line-height: 1.3;
  background: linear-gradient(90deg, rgba(51, 209, 122, .18), rgba(61, 139, 255, .14)); border: 1px solid rgba(51, 209, 122, .4); animation: popIn .35s cubic-bezier(.2, 1.5, .4, 1);
}
.quick-hint b { color: #fff; }
.lobby-players { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }

.pcard {
  --c: #8a8fa3; position: relative; display: flex; flex-direction: column; align-items: center; min-width: 0; padding: 10px 10px 12px; border-radius: 18px; text-align: center;
  background: linear-gradient(180deg, color-mix(in srgb, var(--c) 17%, rgba(255, 255, 255, .05)), rgba(255, 255, 255, .035) 70%);
  border: 1px solid color-mix(in srgb, var(--c) 30%, rgba(255, 255, 255, .1));
  box-shadow: 0 6px 18px rgba(8, 4, 30, .25), inset 0 1px 0 rgba(255, 255, 255, .08);
  animation: lpcIn .5s var(--lb-ease) backwards; transition: transform .2s var(--lb-ease), border-color .25s, box-shadow .25s;
}
@keyframes lpcIn { from { transform: translateY(14px) scale(.8); opacity: 0; } }
.pcard.me { border-color: rgba(255, 201, 51, .75); box-shadow: 0 0 0 3px rgba(255, 201, 51, .15), 0 8px 22px rgba(8, 4, 30, .3), inset 0 1px 0 rgba(255, 255, 255, .1); }
.pcard.acct { cursor: pointer; }
.pcard.acct:hover { transform: translateY(-3px); box-shadow: 0 12px 26px rgba(8, 4, 30, .38), inset 0 1px 0 rgba(255, 255, 255, .1); }
.pcard.acct:focus-visible { outline: 3px solid rgba(143, 191, 255, .8); outline-offset: 2px; }
.lpc-stage { position: relative; width: 100%; aspect-ratio: 1 / .9; max-height: 170px; }
.lpc-glow { position: absolute; inset: 6% 14% 10%; border-radius: 50%; background: radial-gradient(closest-side, color-mix(in srgb, var(--c) 60%, transparent), transparent); opacity: .5; filter: blur(8px); transition: opacity .3s; }
.lpc-stage::after { content: ''; position: absolute; left: 50%; bottom: 3%; width: 60%; height: 12%; transform: translateX(-50%); border-radius: 50%; background: radial-gradient(closest-side, rgba(8, 4, 30, .5), transparent); }
.pcard canvas { position: absolute; z-index: 1; left: 50%; bottom: 0; height: 100%; width: auto; max-width: 100%; aspect-ratio: 200 / 220; transform: translateX(-50%); }
.pcard canvas.bounce { animation: lpcHop .45s cubic-bezier(.2, 1.6, .4, 1); }
@keyframes lpcHop { 0% { transform: translateX(-50%) scale(.85) rotate(-6deg); } 60% { transform: translateX(-50%) scale(1.06) rotate(3deg); } 100% { transform: translateX(-50%); } }
.pcard .pname { display: flex; align-items: center; justify-content: center; gap: 6px; max-width: 100%; margin-top: 6px; font-family: var(--font-display); font-weight: 600; font-size: 17px; line-height: 1.2; }
.pcard .pn { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lpc-badges { flex: none; display: inline-flex; align-items: center; gap: 4px; }
.lpc-badges:empty { display: none; }
.lpc-badge { font-size: 15px; line-height: 1; filter: drop-shadow(0 1px 2px rgba(0, 0, 0, .45)); }
.pcard .ptags { display: flex; flex-wrap: wrap; gap: 4px; justify-content: center; margin-top: 6px; min-height: 21px; }
.tag { font-size: 11px; font-weight: 800; line-height: 17px; padding: 2px 8px; border-radius: 999px; background: rgba(255, 255, 255, .12); white-space: nowrap; }
.tag.you { background: var(--primary); color: var(--lb-ink); }
.tag.host { background: rgba(255, 201, 51, .2); color: var(--primary); }
.tag.bot { background: rgba(61, 139, 255, .22); color: #a9cbff; }
.tag.off { background: rgba(255, 77, 94, .22); color: #ff9aa5; }
.tag.fish { background: rgba(47, 211, 224, .18); color: #a6f3fa; }
.pcard .kick {
  position: absolute; top: 8px; right: 8px; z-index: 2; width: 26px; height: 26px; padding: 0; border: 0; border-radius: 50%; cursor: pointer;
  background: rgba(255, 77, 94, .88); color: #fff; font: 800 12px/1 var(--font); box-shadow: 0 2px 6px rgba(0, 0, 0, .3);
  opacity: .55; transform: scale(.9); transition: opacity .15s, transform .2s var(--lb-ease), background .15s;
}
.pcard:hover .kick, .pcard .kick:focus-visible { opacity: 1; transform: none; }
.pcard .kick:hover { background: var(--danger); transform: scale(1.1); }
@media (hover: none) { .pcard .kick { opacity: 1; transform: none; } }
.pcard.off canvas { filter: grayscale(.85) opacity(.55); }
.pcard.off .lpc-glow { opacity: .15; }
/* Angelt gerade: Podest wird zur Wasserfläche mit Ringen */
.lpc-ripple { display: none; position: absolute; left: 50%; bottom: 1%; width: 70%; height: 16%; transform: translateX(-50%); }
.lpc-ripple i { position: absolute; inset: 0; border-radius: 50%; border: 2px solid rgba(130, 225, 255, .7); animation: lpcRipple 2.6s ease-out infinite; }
.lpc-ripple i + i { animation-delay: 1.3s; }
@keyframes lpcRipple { 0% { transform: scale(.35); opacity: .9; } 100% { transform: scale(1.15); opacity: 0; } }
.pcard.fishing .lpc-ripple { display: block; }
.pcard.fishing .lpc-stage::after { background: radial-gradient(closest-side, rgba(47, 160, 224, .55), transparent); }

/* Freie Plätze */
.pcard.empty { background: rgba(255, 255, 255, .015); border: 2px dashed rgba(255, 255, 255, .1); box-shadow: none; animation: none; color: rgba(255, 255, 255, .35); justify-content: flex-start; }
.lpc-ghost { position: relative; z-index: 1; width: 44%; aspect-ratio: .84; margin-bottom: 9%; border-radius: 48% 48% 42% 42% / 56% 56% 44% 44%; border: 2px dashed rgba(255, 255, 255, .15); background: rgba(255, 255, 255, .025); }
.pcard.empty .lpc-stage { display: grid; place-items: end center; }
.pcard.empty .lpc-stage::after { opacity: .5; }
.pe-tx { margin-top: 6px; font-family: var(--font-display); font-weight: 600; font-size: 14.5px; line-height: 1.2; }
.pe-act { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; margin-top: 8px; }
.pe-btn { border: 1px solid rgba(255, 255, 255, .18); background: rgba(255, 255, 255, .08); color: #fff; font: 800 12px var(--font); padding: 5px 10px; border-radius: 999px; cursor: pointer; transition: background .15s, border-color .15s, transform .18s var(--lb-ease); white-space: nowrap; }
.pe-btn:hover { background: rgba(255, 201, 51, .2); border-color: var(--primary); transform: translateY(-1px); }
.pe-btn.copied { background: rgba(51, 209, 122, .25); border-color: var(--good); }
.pcard.empty.next { border-color: rgba(255, 201, 51, .32); color: rgba(255, 232, 168, .85); background: radial-gradient(circle at 50% 40%, rgba(255, 201, 51, .07), transparent 70%); }
.pcard.empty.next .lpc-ghost { border-color: rgba(255, 201, 51, .45); animation: ghostPulse 2.4s ease-in-out infinite; }
@keyframes ghostPulse { 0%, 100% { transform: scale(1); opacity: .7; } 50% { transform: scale(1.06); opacity: 1; } }

/* Angel-Hinweis unter den Spielern */
.fish-strip {
  display: flex; align-items: center; gap: 14px; margin-top: 16px; padding: 10px 12px 10px 10px; border-radius: 16px;
  background: linear-gradient(100deg, rgba(47, 160, 224, .16), rgba(160, 107, 255, .1)); border: 1px solid rgba(110, 200, 255, .22);
  transition: border-color .3s, background .3s;
}
.fish-strip.busy { border-color: rgba(110, 220, 255, .5); background: linear-gradient(100deg, rgba(47, 160, 224, .24), rgba(160, 107, 255, .12)); }
.fs-art { flex: none; width: 54px; height: 54px; }
.fs-art svg { display: block; width: 100%; height: 100%; }
.fs-tx { flex: 1; min-width: 0; }
.fs-tx b { display: block; font-family: var(--font-display); font-weight: 600; font-size: 16px; }
.fs-tx span { display: block; margin-top: 2px; font-size: 13px; line-height: 1.35; color: #cfe6ff; opacity: .85; }
.fs-btn { flex: none; }
/* Lobby-Duell (Agent Gemeinsam) */
.fish-strip:has(.fs-duel:not(.hidden)) { flex-wrap: wrap; }
.fs-duel {
  flex-basis: 100%; display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 12px;
  background: rgba(255, 201, 51, .14); border: 1px solid rgba(255, 201, 51, .45); animation: fsDuelIn .4s cubic-bezier(.2, 1.5, .4, 1) both;
}
.fs-duel > span { flex: 1; min-width: 0; }
.fs-duel b { display: block; font-family: var(--font-display); font-weight: 600; font-size: 15px; color: #ffd34d; }
.fs-duel small { display: block; font-size: 12.5px; color: #fff3cf; opacity: .85; }
@keyframes fsDuelIn { from { transform: translateY(-6px); opacity: 0; } }

/* Reiter (Tablet & Handy) */
.lobby-tabs {
  --i: 0; position: sticky; top: 8px; z-index: 6; grid-template-columns: repeat(3, minmax(0, 1fr)); padding: 5px; border-radius: 16px;
  background: rgba(24, 17, 62, .86); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(255, 255, 255, .12); box-shadow: 0 8px 24px rgba(8, 4, 30, .35);
}
.lobby-wrap[data-tab="invite"] .lobby-tabs { --i: 1; }
.lobby-wrap[data-tab="char"] .lobby-tabs { --i: 2; }
.lt-thumb {
  position: absolute; top: 5px; bottom: 5px; left: calc(5px + (100% - 10px) / 3 * var(--i)); width: calc((100% - 10px) / 3); border-radius: 12px;
  background: linear-gradient(180deg, #ffe066, var(--primary)); box-shadow: 0 3px 0 rgba(0, 0, 0, .22); transition: left .34s var(--lb-ease);
}
.lobby-tabs button {
  position: relative; z-index: 1; min-width: 0; padding: 10px 6px; border: 0; border-radius: 12px; background: none; cursor: pointer;
  color: var(--muted); font: 600 15px var(--font-display); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; transition: color .2s;
}
.lobby-tabs button:hover { color: #fff; }
.lobby-tabs button.sel { color: var(--lb-ink); }

/* Einladen */
.invite-code {
  font-family: var(--font-display); font-size: 46px; font-weight: 700; letter-spacing: 10px; text-align: center; color: var(--primary);
  background: var(--lb-sunk); border: 1px solid rgba(255, 201, 51, .14); border-radius: 14px; padding: 8px 0 8px 10px; margin-bottom: 12px; text-shadow: 0 3px 0 #7a2a9a;
}
.invite-link-row { display: flex; gap: 8px; margin-bottom: 10px; }
.invite-link-row .input { min-width: 0; font-size: 13px; font-family: var(--font); }
.copy-btn { flex: none; display: grid; }
.copy-btn > span { grid-area: 1 / 1; transition: opacity .2s, transform .3s var(--lb-ease); }
.copy-btn .cb-b { opacity: 0; transform: translateY(8px); }
.copy-btn.copied { background: linear-gradient(180deg, #7ef0ae, var(--good)); }
.copy-btn.copied .cb-a { opacity: 0; transform: translateY(-8px); }
.copy-btn.copied .cb-b { opacity: 1; transform: none; }
.invite-card .hint { margin: 4px 0 2px; line-height: 1.4; }
.vis-pick { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.vis-card {
  display: flex; align-items: center; gap: 10px; min-width: 0; padding: 10px 12px; text-align: left; border-radius: 14px; cursor: pointer; color: #fff; font-family: var(--font);
  border: 2px solid rgba(255, 255, 255, .12); background: rgba(255, 255, 255, .04); transition: transform .18s var(--lb-ease), border-color .15s, background .2s, box-shadow .2s;
}
.vis-card .vi { flex: none; font-size: 22px; line-height: 1; transition: transform .3s var(--lb-ease); }
.vis-card .vt { min-width: 0; }
.vis-card b { display: block; font-family: var(--font-display); font-size: 15.5px; font-weight: 600; }
.vis-card small { display: block; font-size: 11.5px; color: var(--muted); line-height: 1.25; }
.vis-card:not(:disabled):hover { transform: translateY(-2px); border-color: rgba(255, 255, 255, .32); }
.vis-card.sel .vi { transform: scale(1.15) rotate(-8deg); }
.vis-card.vis-private.sel { border-color: var(--lb-violet); background: linear-gradient(180deg, rgba(160, 107, 255, .26), rgba(160, 107, 255, .08)); box-shadow: 0 0 0 3px rgba(160, 107, 255, .15); }
.vis-card.vis-public.sel { border-color: var(--good); background: linear-gradient(180deg, rgba(51, 209, 122, .24), rgba(51, 209, 122, .07)); box-shadow: 0 0 0 3px rgba(51, 209, 122, .15); }
.vis-card.sel small { color: #fff; opacity: .85; }
.vis-card:disabled { cursor: default; }
.vis-card:disabled:not(.sel) { opacity: .5; }
.vis-hint { font-size: 12.5px; color: var(--muted); margin: 8px 2px 0; line-height: 1.4; }

/* Eigener Charakter */
.lobby-profile { display: flex; gap: 14px; align-items: center; margin-bottom: 12px; }
.lobby-profile-fields { flex: 1; display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.lobby-profile-fields .field-label { margin: 0; }
.lobby-profile-fields .name-hint { margin-top: -3px; }

/* So wird gespielt */
.rules ul { list-style: none; padding: 0; margin: 0; column-gap: 32px; }
.rules li { color: #ddd8ff; font-size: 14.5px; line-height: 1.4; margin: 0 0 9px; break-inside: avoid; }
.lp-rules ul { columns: 2 340px; }

/* ---------- Einstellungen ---------- */
.settings-card { container: settings / inline-size; padding: 20px 20px 6px; }
.ls-top { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 12px; margin-bottom: 4px; }
.ls-top .invite-title { margin: 0; }
.host-hint { font-size: 12px; font-weight: 800; color: #d9d2ff; padding: 5px 11px; border-radius: 999px; background: rgba(255, 255, 255, .07); border: 1px solid rgba(255, 255, 255, .1); line-height: 1.3; }
.ls-grid { display: grid; grid-template-columns: minmax(0, 1fr); column-gap: 32px; }
.ls-sec { min-width: 0; padding: 16px 0 18px; border-top: 1px solid var(--lb-line); }
.ls-grid > .ls-sec:first-child { border-top: 0; padding-top: 12px; }
.ls-h { display: flex; align-items: center; gap: 9px; margin: 0 0 12px; font-family: var(--font-display); font-weight: 600; font-size: 15.5px; color: #fff; }
.ls-ic { flex: none; width: 28px; height: 28px; display: grid; place-items: center; border-radius: 9px; background: rgba(255, 255, 255, .08); font-size: 15px; }
.ls-note { margin: 9px 2px 0; font-size: 12.5px; line-height: 1.4; color: var(--muted); }
.ls-note:empty { display: none; }
.ls-after { margin-top: 10px; }
@container settings (min-width: 680px) {
  .ls-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ls-sec.wide { grid-column: 1 / -1; }
}

/* Segment-Schalter mit gleitendem Marker */
.sgm { --pad: 4px; --i: 0; --n: 1; position: relative; display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); padding: var(--pad); border-radius: 14px; background: var(--lb-sunk); border: 1px solid rgba(255, 255, 255, .06); }
.sgm-thumb {
  position: absolute; top: var(--pad); bottom: var(--pad); left: calc(var(--pad) + (100% - 2 * var(--pad)) / var(--n) * var(--i)); width: calc((100% - 2 * var(--pad)) / var(--n));
  border-radius: 10px; background: linear-gradient(180deg, #ffe066, var(--primary)); box-shadow: 0 3px 0 rgba(0, 0, 0, .2), 0 0 16px rgba(255, 201, 51, .22);
  transition: left .34s var(--lb-ease);
}
.sgm.none .sgm-thumb { opacity: 0; }
.sgm button {
  position: relative; z-index: 1; min-width: 0; padding: 9px 4px; border: 0; border-radius: 10px; background: none; color: #fff; cursor: pointer;
  font: 600 16px var(--font-display); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; transition: color .2s, background .15s;
}
.sgm button:not(.sel):not(:disabled):hover { background: rgba(255, 255, 255, .08); }
.sgm button.sel { color: var(--lb-ink); }
.sgm button:disabled { cursor: default; }
.sgm.ro button:not(.sel) { color: rgba(255, 255, 255, .42); }
.sgm.mini { --pad: 3px; border-radius: 11px; }
.sgm.mini .sgm-thumb { border-radius: 8px; box-shadow: 0 2px 0 rgba(0, 0, 0, .2); }
.sgm.mini button { padding: 6px 8px; font-size: 13.5px; border-radius: 8px; }

/* Spielmodus */
.mode-pick { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.mode-card {
  display: flex; align-items: center; gap: 12px; min-width: 0; padding: 12px 14px; text-align: left; border-radius: 16px; cursor: pointer; color: #fff; font-family: var(--font);
  border: 2px solid rgba(255, 255, 255, .12); background: rgba(255, 255, 255, .04); transition: transform .18s var(--lb-ease), border-color .15s, background .2s, box-shadow .2s;
}
.mode-card .mi { flex: none; font-size: 30px; line-height: 1; transition: transform .35s var(--lb-ease); }
.mode-card .mt { min-width: 0; }
.mode-card b { display: block; font-family: var(--font-display); font-size: 17px; font-weight: 600; }
.mode-card small { display: block; margin-top: 2px; font-size: 12px; line-height: 1.3; color: var(--muted); }
.mode-card:not(:disabled):hover { transform: translateY(-2px); border-color: rgba(255, 201, 51, .5); }
.mode-card.sel { border-color: var(--primary); background: linear-gradient(180deg, rgba(255, 201, 51, .2), rgba(255, 138, 61, .07)); box-shadow: 0 0 0 3px rgba(255, 201, 51, .12); }
.mode-card.sel .mi { transform: scale(1.14) rotate(-8deg); }
.mode-card.sel small { color: #ffe8a8; }
.mode-card:disabled { cursor: default; }
.mode-card:disabled:not(.sel) { opacity: .5; }
@container settings (max-width: 359px) {
  .mode-card { flex-direction: column; text-align: center; gap: 6px; padding: 12px 8px 10px; }
}

/* Spielbrett-Kacheln mit Illustration */
#ls-board { container: boards / inline-size; }
.board-pick { display: grid; grid-template-columns: 1.3fr 1.3fr .9fr; gap: 10px; }
.board-tile {
  position: relative; display: flex; flex-direction: column; min-width: 0; padding: 0; overflow: hidden; text-align: left; border-radius: 16px; cursor: pointer; color: #fff; font-family: var(--font);
  border: 2px solid rgba(255, 255, 255, .12); background: rgba(255, 255, 255, .04); transition: transform .18s var(--lb-ease), border-color .15s, box-shadow .25s;
}
.bt-art { display: block; aspect-ratio: 16 / 10; overflow: hidden; background: #1b1440; }
.bt-art svg { display: block; width: 100%; height: 100%; transition: transform .6s ease, filter .3s; }
.ba-fallback { display: grid; place-items: center; height: 100%; font-size: 40px; background: linear-gradient(135deg, #3f9cf0, #2a1650); }
.bt-name { display: block; padding: 8px 10px 9px; font-family: var(--font-display); font-weight: 600; font-size: 15px; white-space: nowrap; transition: background .25s; }
.bt-check {
  position: absolute; top: 7px; right: 7px; width: 22px; height: 22px; display: grid; place-items: center; border-radius: 50%;
  background: var(--primary); color: var(--lb-ink); font: 800 12px/1 var(--font); box-shadow: 0 2px 6px rgba(0, 0, 0, .35);
  transform: scale(0); transition: transform .35s var(--lb-ease);
}
.board-tile:not(:disabled):hover { transform: translateY(-2px); border-color: rgba(255, 201, 51, .5); }
.board-tile:not(:disabled):hover .bt-art svg { transform: scale(1.06); }
.board-tile.sel { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(255, 201, 51, .15), 0 8px 20px rgba(8, 4, 30, .35); }
.board-tile.sel .bt-check { transform: scale(1); }
.board-tile.sel .bt-name { background: linear-gradient(180deg, rgba(255, 201, 51, .2), rgba(255, 201, 51, .06)); }
.board-tile:disabled { cursor: default; }
.board-tile:disabled:not(.sel) .bt-art svg { filter: saturate(.55) brightness(.8); }
/* Nur das gewählte (oder überfahrene) Brett ist „lebendig“ */
.board-tile:not(.sel):not(:hover) .bt-art * { animation-play-state: paused !important; }
@container boards (max-width: 389px) {
  .board-pick { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .board-tile.bt-random { grid-column: 1 / -1; flex-direction: row; align-items: stretch; }
  .board-tile.bt-random .bt-art { width: 42%; aspect-ratio: 16 / 7; }
  .board-tile.bt-random .bt-name { display: flex; align-items: center; }
}

/* Schalter-Zeilen */
.extras { display: grid; gap: 8px; }
.tgl-row {
  display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-radius: 14px; cursor: pointer;
  background: rgba(255, 255, 255, .04); border: 1px solid rgba(255, 255, 255, .06); transition: background .2s, border-color .2s;
}
.tgl-row:not(.ro):hover { background: rgba(255, 255, 255, .07); }
.tgl-row.on { background: rgba(51, 209, 122, .08); border-color: rgba(51, 209, 122, .24); }
.tgl-row.ro { cursor: default; }
.tr-ic { flex: none; width: 34px; height: 34px; display: grid; place-items: center; border-radius: 10px; background: rgba(255, 255, 255, .07); font-size: 18px; transition: transform .35s var(--lb-ease); }
.tgl-row.on .tr-ic { transform: rotate(-8deg) scale(1.08); }
.tr-tx { flex: 1; min-width: 0; }
.tr-tx b { display: block; font-size: 14.5px; font-weight: 800; }
.tr-tx small { display: block; margin-top: 1px; font-size: 12px; line-height: 1.3; color: var(--muted); }
.tr-tx small:empty { display: none; }
.tgl { flex: none; position: relative; width: 48px; height: 28px; padding: 0; border: 0; border-radius: 14px; cursor: pointer; background: rgba(255, 255, 255, .18); box-shadow: inset 0 2px 4px rgba(0, 0, 0, .25); transition: background .25s; }
.tgl i { position: absolute; top: 3px; left: 3px; width: 22px; height: 22px; border-radius: 50%; background: #fff; box-shadow: 0 2px 5px rgba(0, 0, 0, .35); transition: transform .32s var(--lb-ease); }
.tgl.on { background: var(--good); }
.tgl.on i { transform: translateX(20px); }
.tgl:disabled { cursor: default; }
.ro .tgl:not(.on) { opacity: .6; }

/* Minispiel-Pool */
.pool { margin-top: 12px; border-radius: 14px; background: rgba(255, 255, 255, .04); border: 1px solid rgba(255, 255, 255, .07); }
.pool summary, .mods-more summary { list-style: none; cursor: pointer; }
.pool summary::-webkit-details-marker, .mods-more summary::-webkit-details-marker { display: none; }
.pool summary { display: flex; align-items: center; gap: 10px; padding: 11px 14px; border-radius: 14px; font-weight: 800; font-size: 14.5px; }
.pool summary span { flex: 1; }
.pool summary b { padding: 1px 9px; border-radius: 999px; background: rgba(255, 201, 51, .14); color: var(--primary); font-family: var(--font-display); font-weight: 600; }
.pool summary::after, .mods-more summary::after {
  content: ''; flex: none; width: 8px; height: 8px; margin: -4px 2px 0 0; border-right: 2.5px solid currentColor; border-bottom: 2.5px solid currentColor;
  opacity: .7; transform: rotate(45deg); transition: transform .3s var(--lb-ease), margin .3s;
}
.pool[open] summary::after, .mods-more[open] summary::after { transform: rotate(-135deg); margin-top: 4px; }
.pool summary:hover, .mods-more summary:hover { color: #fff; }
.pool-presets { display: flex; flex-wrap: wrap; gap: 6px; padding: 0 12px 10px; }
.chip { padding: 5px 11px; border-radius: 999px; border: 1.5px solid rgba(255, 255, 255, .18); background: transparent; color: #fff; font-weight: 800; font-size: 12px; cursor: pointer; font-family: var(--font); max-width: 100%; white-space: normal; text-align: center; transition: background .15s, border-color .15s; }
.chip:not(:disabled):not(.sel):hover { border-color: rgba(255, 255, 255, .4); }
.chip.sel { background: rgba(255, 201, 51, .2); border-color: var(--primary); color: var(--primary); }
.chip:disabled, .mgchip:disabled { cursor: default; }
.pool-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 104px), 1fr)); gap: 6px; padding: 0 10px 10px; max-height: min(520px, 70vh); overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; }
.mgchip {
  min-width: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; padding: 6px 4px 5px; border-radius: 10px; cursor: pointer;
  border: 1.5px solid rgba(255, 255, 255, .1); background: rgba(0, 0, 0, .15); color: rgba(255, 255, 255, .45); font-family: var(--font); font-weight: 700; font-size: 12px; line-height: 1.15; text-align: center;
  transition: background .15s, border-color .15s, color .15s;
}
.mgchip .ic { flex: none; font-size: 19px; line-height: 1.1; filter: grayscale(1); opacity: .5; transition: filter .2s, opacity .2s, transform .3s var(--lb-ease); }
.mgchip .nm { max-width: 100%; overflow: hidden; overflow-wrap: break-word; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.mgchip:not(:disabled):hover { border-color: rgba(255, 255, 255, .3); }
.mgchip.on { background: rgba(51, 209, 122, .16); border-color: rgba(51, 209, 122, .6); color: #fff; }
.mgchip.on .ic { filter: none; opacity: 1; transform: scale(1.08); }

/* ---------- Regeln anpassen (Modifikatoren) ---------- */
#lobby-mods { container: mods / inline-size; }
.mods-badge { margin-left: auto; padding: 3px 10px; border-radius: 999px; background: rgba(255, 255, 255, .08); color: var(--muted); font: 800 11.5px var(--font); white-space: nowrap; transition: background .3s, color .3s; }
.mods-badge.on { background: rgba(160, 107, 255, .24); color: #ece2ff; }
.mod-presets { display: flex; flex-wrap: wrap; gap: 8px; }
.mpreset {
  display: inline-flex; align-items: center; gap: 6px; padding: 7px 14px 7px 10px; border-radius: 999px; cursor: pointer; color: #fff; font: 600 14px var(--font-display);
  border: 2px solid rgba(255, 255, 255, .14); background: rgba(255, 255, 255, .04); transition: transform .18s var(--lb-ease), border-color .15s, background .2s, box-shadow .2s;
}
.mpreset .mp-ic { font-size: 15px; line-height: 1; transition: transform .35s var(--lb-ease); }
.mpreset:not(:disabled):not(.sel):hover { transform: translateY(-2px); border-color: rgba(160, 107, 255, .6); }
.mpreset.sel { border-color: var(--lb-violet); background: rgba(160, 107, 255, .24); box-shadow: 0 0 0 3px rgba(160, 107, 255, .14); }
.mpreset.sel .mp-ic { transform: scale(1.18) rotate(-10deg); }
.mpreset:disabled { cursor: default; }
.mpreset:disabled:not(.sel) { opacity: .5; }
.mpreset.custom { cursor: default; border-style: dashed; border-color: rgba(255, 201, 51, .6); background: rgba(255, 201, 51, .12); color: #ffe8a8; animation: popIn .35s var(--lb-ease); }
.mod-sum { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
.mchip {
  display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px 4px 7px; border-radius: 10px; cursor: pointer;
  border: 1px solid rgba(255, 201, 51, .32); background: rgba(255, 201, 51, .1); color: #fff0c4; font: 800 12.5px var(--font);
  animation: popIn .32s var(--lb-ease); transition: background .15s, border-color .15s;
}
.mchip:hover { background: rgba(255, 201, 51, .18); border-color: rgba(255, 201, 51, .6); }
.mods-more { margin-top: 12px; }
.mods-more summary { display: inline-flex; align-items: center; gap: 9px; padding: 6px 2px; color: #d9c4ff; font-weight: 800; font-size: 14px; }
.mod-list { display: grid; gap: 16px; margin-top: 8px; animation: fadeIn .25s; }
.mg-h { display: flex; align-items: center; gap: 7px; margin: 0 0 8px; color: var(--muted); font: 800 11.5px var(--font); letter-spacing: 1.1px; text-transform: uppercase; }
.mg-rows { display: grid; gap: 6px; }
.mod-row {
  display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; align-items: center; gap: 4px 12px; padding: 9px 10px; border-radius: 14px;
  background: rgba(255, 255, 255, .04); border: 1px solid rgba(255, 255, 255, .06); transition: background .25s, border-color .25s;
}
.mod-row.mod-toggle:not(.ro) { cursor: pointer; }
.mod-row:not(.ro):hover { background: rgba(255, 255, 255, .065); }
.mod-ic { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 10px; background: rgba(255, 255, 255, .07); font-size: 17px; }
.mod-tx { min-width: 0; }
.mod-tx b { display: flex; align-items: center; gap: 7px; font-size: 14px; font-weight: 800; }
.mod-tx small { display: block; margin-top: 1px; font-size: 12px; line-height: 1.3; color: var(--muted); }
.mod-dot { flex: none; width: 7px; height: 7px; border-radius: 50%; background: var(--primary); box-shadow: 0 0 8px rgba(255, 201, 51, .7); transform: scale(0); transition: transform .35s var(--lb-ease); }
.mod-row.changed { background: rgba(255, 201, 51, .07); border-color: rgba(255, 201, 51, .26); }
.mod-row.changed .mod-dot { transform: scale(1); }
.mod-row.flash { animation: modFlash 1.4s ease; }
@keyframes modFlash { 0%, 35% { box-shadow: 0 0 0 3px rgba(255, 201, 51, .6); } 100% { box-shadow: 0 0 0 0 rgba(255, 201, 51, 0); } }
.mod-row.mod-choice { grid-template-columns: 34px minmax(0, 1fr); grid-template-areas: 'ic tx' 'ic ctl'; }
.mod-row.mod-choice .mod-ic { grid-area: ic; align-self: start; }
.mod-row.mod-choice .mod-tx { grid-area: tx; }
.mod-row.mod-choice .mod-ctl { grid-area: ctl; margin-top: 6px; }
.mod-ctl .sgm { max-width: 300px; }
.mod-group { container: modgroup / inline-size; min-width: 0; }
/* Breite Gruppe: Segment-Schalter rechts in der Zeile statt darunter */
@container modgroup (min-width: 540px) {
  .mod-row.mod-choice { grid-template-columns: 34px minmax(0, 1fr) auto; grid-template-areas: 'ic tx ctl'; }
  .mod-row.mod-choice .mod-ic { align-self: center; }
  .mod-row.mod-choice .mod-ctl { margin-top: 0; }
  .mod-ctl .sgm.mini { min-width: 190px; }
}
@container mods (min-width: 900px) {
  .mod-list { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 24px; align-items: start; }
}

/* ---------- Leiste unten (Zusammenfassung + Start) ---------- */
.lobby-bar {
  position: sticky; bottom: 0; z-index: 8; margin-top: 20px; padding-bottom: env(safe-area-inset-bottom, 0px);
  background: rgba(20, 14, 52, .86); backdrop-filter: blur(14px) saturate(1.2); -webkit-backdrop-filter: blur(14px) saturate(1.2);
  border-top: 1px solid rgba(255, 255, 255, .12); box-shadow: 0 -12px 32px rgba(8, 4, 30, .35);
}
.lobby-bar::before { content: ''; position: absolute; left: 0; right: 0; top: -1px; height: 1px; background: linear-gradient(90deg, transparent, rgba(255, 201, 51, .55), transparent); }
.lb-in {
  position: relative; max-width: var(--lb-wrap); min-height: 84px; margin: 0 auto; display: flex; align-items: center; gap: 16px;
  padding: 14px 24px; padding-right: max(24px, calc(var(--lb-dock) + 12px - (100vw - min(100vw, var(--lb-wrap))) / 2));
}
.lb-sum {
  flex: 1; min-width: 0; display: flex; flex-wrap: nowrap; align-items: center; gap: 8px; overflow: hidden;
  -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 28px), transparent); mask-image: linear-gradient(90deg, #000 calc(100% - 28px), transparent);
}
.lb-item { flex: none; display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border-radius: 999px; background: rgba(255, 255, 255, .07); color: #e9e4ff; font: 700 13.5px var(--font); white-space: nowrap; }
.lb-item i { font-style: normal; }
.lb-item.mods { background: rgba(160, 107, 255, .22); color: #efe6ff; }
.lb-wait { flex: none; display: flex; align-items: center; gap: 10px; padding: 10px 16px; border-radius: 14px; background: rgba(255, 255, 255, .06); font-family: var(--font-display); font-weight: 600; font-size: 16px; color: #ece8ff; }
.lb-wait .dots i { font-style: normal; animation: dotBlink 1.4s infinite; }
.lb-wait .dots i:nth-child(2) { animation-delay: .2s; }
.lb-wait .dots i:nth-child(3) { animation-delay: .4s; }
@keyframes dotBlink { 0%, 60%, 100% { opacity: .2; } 30% { opacity: 1; } }
.start-btn { flex: none; min-width: 270px; overflow: hidden; }
.start-btn.ready::after {
  content: ''; position: absolute; top: 0; bottom: 0; left: -40%; width: 28%; pointer-events: none;
  background: linear-gradient(100deg, transparent, rgba(255, 255, 255, .6), transparent); transform: skewX(-18deg); animation: startShine 3.6s ease-in-out infinite;
}
@keyframes startShine { 0%, 55% { left: -40%; } 85%, 100% { left: 130%; } }
.lb-err { position: absolute; left: 50%; bottom: calc(100% + 10px); transform: translateX(-50%); min-height: 0; margin: 0; padding: 8px 14px; border-radius: 12px; white-space: nowrap; background: rgba(60, 12, 36, .94); border: 1px solid rgba(255, 77, 94, .6); box-shadow: var(--shadow); animation: popIn .3s var(--lb-ease); }
.lb-err:empty { display: none; }

/* Chat/Emotes (social.js) in der Lobby über der Leiste */
body[data-social="lobby"] #chat-feed { bottom: 104px; }
@media (min-width: 561px) and (min-height: 521px) {
  body[data-social="lobby"] #chat-panel { bottom: 104px; height: min(420px, calc(100vh - 130px)); }
}
/* Wenig Höhe (Handy quer): schlankere Leiste, Knöpfe nebeneinander */
@media (max-height: 520px) {
  body[data-social="lobby"] #social-dock { flex-direction: row; right: 16px; bottom: 10px; }
  body[data-social="lobby"] #chat-feed { right: 16px; bottom: 76px; }
  .lb-in { min-height: 64px; padding-top: 8px; padding-bottom: 8px; }
  .start-btn { padding: 10px 22px; font-size: 18px; }
  .lobby-header { margin-bottom: 10px; }
  .lobby-wrap { padding-top: 10px; }
}

/* ---------- Gestapelt: Tablet & Handy ---------- */
@media (max-width: 1199px) {
  .lobby-grid { display: flex; flex-direction: column; align-items: stretch; gap: 16px; }
  .lobby-main, .lobby-side, .lobby-sub { display: contents; }
  .players-card { order: 1; }
  .lobby-tabs { order: 2; display: grid; }
  .lp { order: 3; animation: lpIn .3s ease; }
  .lp-rules { order: 4; }
  .lobby-wrap:not([data-tab="invite"]) .lp-invite,
  .lobby-wrap:not([data-tab="char"]) .lp-char,
  .lobby-wrap:not([data-tab="settings"]) .lp-settings,
  .lobby-wrap:not([data-tab="settings"]) .lp-rules { display: none; }
  .lp-invite, .lp-char { max-width: 720px; width: 100%; margin: 0 auto; }
}
@keyframes lpIn { from { opacity: 0; transform: translateY(8px); } }

@media (max-width: 900px) {
  .fish-strip { flex-wrap: wrap; }
  .fs-btn { width: 100%; }
}

@media (max-width: 767px) {
  .lobby-wrap { padding: 10px 14px 4px; }
  .lobby-header { gap: 8px; min-height: 46px; margin-bottom: 12px; }
  .logo-small { display: none; }
  .btn-leave { order: -1; width: 46px; height: 46px; padding: 0; justify-content: center; border-radius: 14px; }
  .btn-leave .bl-tx { display: none; }
  .lobby-header > .lang-sw { display: none; }
  .code-chip { padding: 0 6px 0 12px; }
  .code-chip b { font-size: 20px; letter-spacing: 3px; }
  .players-card { padding: 14px 12px; }
  .players-head { margin-bottom: 12px; }
  .lobby-players { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
  .pcard { padding: 6px 4px 8px; border-radius: 15px; }
  .pcard .pname { font-size: 14.5px; margin-top: 4px; gap: 4px; }
  .pcard .ptags { gap: 3px; margin-top: 4px; min-height: 18px; }
  .tag { font-size: 10px; line-height: 14px; padding: 1px 6px; }
  .pcard .kick { top: 4px; right: 4px; width: 24px; height: 24px; }
  .pe-tx { font-size: 12.5px; }
  .pe-act { gap: 4px; margin-top: 6px; }
  .pe-btn { font-size: 11px; padding: 4px 8px; }
  .settings-card { padding: 16px 14px 4px; }
  .lp-invite, .lp-char, .lp-rules { padding: 16px; }
  .invite-code { font-size: 38px; letter-spacing: 8px; }
  .lb-in { min-height: 80px; gap: 10px; padding: 12px 14px; padding-right: calc(var(--lb-dock) + 2px); }
  .lb-sum { display: none; }
  .start-btn { flex: 1; min-width: 0; padding: 14px 10px; font-size: 18px; }
  .lb-wait { flex: 1; min-width: 0; font-size: 14.5px; padding: 10px 12px; }
  .lb-err { white-space: normal; width: max-content; max-width: calc(100vw - 28px); text-align: center; }
}
@media (max-width: 480px) {
  .lobby-tabs button { font-size: 14px; padding: 10px 2px; }
  .lobby-tabs button span[aria-hidden="true"] { display: none; } /* nur das Icon – der Text steht seit i18n auch in einem <span data-i18n> */
  .vis-pick { grid-template-columns: minmax(0, 1fr); }
  .lobby-profile { gap: 10px; }
}
@media (max-width: 380px) {
  .pcard .pname { font-size: 13.5px; }
}

/* ---------- Illustrationen (Brett-Kacheln, Angelwelt) ---------- */
.ba-cloud { animation: baCloud 9s ease-in-out infinite alternate; }
@keyframes baCloud { to { transform: translateX(14px); } }
.ba-wave { animation: baWave 3.6s linear infinite; }
@keyframes baWave { to { transform: translateX(20px); } }
.ba-puff { transform-box: fill-box; transform-origin: center; animation: baPuff 3.3s ease-out infinite; opacity: 0; }
.ba-puff.p2 { animation-delay: 1.1s; }
.ba-puff.p3 { animation-delay: 2.2s; }
@keyframes baPuff { 0% { transform: translateY(5px) scale(.5); opacity: 0; } 25% { opacity: .95; } 100% { transform: translateY(-8px) scale(1.2); opacity: 0; } }
.ba-palm { animation: baSway 4.2s ease-in-out infinite alternate; }
@keyframes baSway { from { transform: rotate(-5deg); } to { transform: rotate(5deg); } }
.ba-crab { animation: baCrab 3s ease-in-out infinite; }
@keyframes baCrab { 0%, 100% { transform: translateX(-4px); } 50% { transform: translateX(4px); } }
.ba-tw { transform-box: fill-box; transform-origin: center; animation: baTw 2.6s ease-in-out infinite; }
.ba-tw.t2 { animation-delay: .9s; }
.ba-tw.t3 { animation-delay: 1.7s; }
@keyframes baTw { 50% { opacity: .25; transform: scale(.55); } }
.ba-win { animation: baWin 4s steps(1) infinite; }
.ba-win.w2 { animation-delay: 1.3s; }
.ba-win.w3 { animation-delay: 2.5s; }
@keyframes baWin { 0%, 100% { opacity: 1; } 44% { opacity: .45; } 47% { opacity: 1; } 71% { opacity: .7; } 74% { opacity: 1; } }
.ba-bat { animation: baBat 4.6s ease-in-out infinite; }
.ba-bat.b2 { animation-duration: 5.4s; animation-direction: reverse; }
@keyframes baBat { 0%, 100% { transform: translate(0, 0) scaleY(1); } 25% { transform: translate(7px, -3px) scaleY(.5); } 50% { transform: translate(14px, 0) scaleY(1); } 75% { transform: translate(7px, 3px) scaleY(.5); } }
.ba-ghost { animation: baGhost 3.6s ease-in-out infinite; }
@keyframes baGhost { 0%, 100% { transform: translate(0, 0); opacity: .95; } 50% { transform: translate(5px, -5px); opacity: .6; } }
.ba-flag { transform-box: fill-box; transform-origin: left center; animation: baFlag 1.1s ease-in-out infinite alternate; }
@keyframes baFlag { to { transform: scaleX(.78) skewY(8deg); } }
.ba-fog { animation: baFog 7s ease-in-out infinite alternate; }
@keyframes baFog { to { transform: translateX(10px); opacity: .6; } }
.ba-die { animation: baDie 3.2s ease-in-out infinite; }
@keyframes baDie { 0%, 62%, 100% { transform: rotate(0) translateY(0); } 72% { transform: rotate(-18deg) translateY(-7px); } 84% { transform: rotate(10deg) translateY(0); } 92% { transform: rotate(-4deg); } }
.fa-bob { animation: faBob 2.6s ease-in-out infinite; }
@keyframes faBob { 0%, 100% { transform: translateY(0) rotate(-5deg); } 50% { transform: translateY(2.5px) rotate(5deg); } }
.fa-rip { transform-box: fill-box; transform-origin: center; animation: faRip 2.6s ease-out infinite; opacity: 0; }
.fa-rip.r2 { animation-delay: 1.3s; }
@keyframes faRip { 0% { transform: scale(.3); opacity: .9; } 100% { transform: scale(1.4); opacity: 0; } }
.fa-jump { animation: faJump 6s ease-in-out infinite; opacity: 0; }
@keyframes faJump {
  0% { transform: translate(0, 8px) rotate(30deg); opacity: 0; }
  5% { opacity: 1; }
  18% { transform: translate(-32px, -30px) rotate(0); }
  32% { transform: translate(-64px, 8px) rotate(-32deg); opacity: 1; }
  35%, 100% { transform: translate(-66px, 12px) rotate(-32deg); opacity: 0; }
}
.fa-glint { animation: faGlint 3s ease-in-out infinite; }
@keyframes faGlint { 50% { opacity: .5; transform: translateX(3px); } }
.fa-fly { transform-box: fill-box; transform-origin: center; animation: faFly 4s ease-in-out infinite; }
.fa-fly.y2 { animation-delay: 1.3s; }
.fa-fly.y3 { animation-delay: 2.6s; }
@keyframes faFly { 0%, 100% { opacity: .15; transform: translate(0, 0); } 50% { opacity: 1; transform: translate(5px, -6px); } }
.fa-swim { animation: faSwim 7s linear infinite; }
@keyframes faSwim {
  0% { transform: translateX(-12px) scaleX(-1); }
  47% { transform: translateX(12px) scaleX(-1); }
  50% { transform: translateX(12px) scaleX(1); }
  97% { transform: translateX(-12px) scaleX(1); }
  100% { transform: translateX(-12px) scaleX(-1); }
}

@media (prefers-reduced-motion: reduce) {
  .logo, .logo-top i, .logo-spark, .le-icon, .start-btn.ready::after, .pcard.empty.next .lpc-ghost, .lpc-ripple i,
  .bt-art *, .fish-art *, .fs-art * { animation: none !important; }
  .pcard, .lp, .cp-grid { animation: none; }
}

/* Handy: von den freien Plätzen nur den nächsten zeigen (spart eine ganze Bildschirmhöhe) */
@media (max-width: 767px) {
  .pcard.empty:not(.next) { display: none; }
  .pcard.empty.next .pe-act { flex-direction: column; align-items: stretch; width: 100%; padding: 0 4px; }
}
.lpc-badges .acc-badge, .lpc-badge-em { flex: none; filter: drop-shadow(0 1px 2px rgba(0, 0, 0, .45)); }
@media (max-width: 767px) {
  /* Nächster freier Platz mit Knöpfen: ohne Silhouette, damit die Reihe nicht höher wird als die Spielerkarten */
  .pcard.empty.next:has(.pe-act:not(.hidden)) { justify-content: center; }
  .pcard.empty.next:has(.pe-act:not(.hidden)) .lpc-stage { display: none; }
}
@media (max-width: 420px) {
  .code-chip small { display: none; }
  .code-chip { gap: 8px; }
}
/* Start noch nicht möglich: ruhig statt ausgegraut-gelb */
.start-btn:disabled { opacity: 1; filter: none; background: rgba(255, 255, 255, .08); color: #cfc8f5; box-shadow: 0 4px 0 rgba(0, 0, 0, .22), inset 0 0 0 1px rgba(255, 255, 255, .1); }

/* Profil-Rahmen (p.frame) und Team-Rolle (p.staff) auf Spielerkarten – Zeichnung/Optik in account/frames.js + account.css */
.lpc-stage .pfr { width: auto; height: 90%; aspect-ratio: 1; top: 54%; }
.pcard .tag.role-tag { padding: 2px 8px 2px 4px; }
@media (max-width: 640px) { .pcard .tag.role-tag { padding: 1px 6px 1px 3px; } .pcard .tag.role-tag .role-em { width: 11px !important; height: 11px !important; } }

/* ---------- Angelwelt auf der Spielerkarte (Phase 3, Brücke: lobby.js fishRow) ---------- */
.lpc-fish { display: flex; flex-direction: column; align-items: center; gap: 3px; max-width: 100%; margin-top: 4px; }
.lpc-fish.hidden { display: none; }
.lpc-ftitle {
  max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 700 11.5px/1.25 var(--font);
  color: var(--tc, #e0915a); letter-spacing: .2px; text-shadow: 0 1px 2px rgba(0, 0, 0, .35);
}
.lpc-ftitle::before { content: '„'; opacity: .7; } .lpc-ftitle::after { content: '“'; opacity: .7; }
:lang(en) .lpc-ftitle::before { content: '“'; } :lang(en) .lpc-ftitle::after { content: '”'; } /* englische Anführungszeichen */
.lpc-fchips { display: flex; flex-wrap: wrap; justify-content: center; gap: 4px; max-width: 100%; }
.lpc-fc {
  display: inline-flex; align-items: center; gap: 4px; min-width: 0; max-width: 100%; height: 19px; padding: 0 7px; border-radius: 999px;
  font: 800 11px/1 var(--font); white-space: nowrap; background: rgba(47, 211, 224, .12); color: #bdf6fb; box-shadow: inset 0 0 0 1px rgba(47, 211, 224, .22);
}
.lpc-fc i { font-style: normal; font-size: 11px; }
.lpc-fc .lpc-star { color: #ffd23f; font-weight: 900; text-shadow: 0 0 6px rgba(255, 210, 63, .55); }
.lpc-fc.rec { background: color-mix(in srgb, var(--rc) 16%, transparent); color: color-mix(in srgb, var(--rc) 55%, white); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--rc) 40%, transparent); }
.lpc-fc.rec .dot { width: 7px; height: 7px; flex: none; border-radius: 50%; background: var(--rc); box-shadow: 0 0 6px var(--rc); }
.lpc-fc.rec .nm { min-width: 0; max-width: 92px; overflow: hidden; text-overflow: ellipsis; }
/* Haustier sitzt neben der Figur */
.lpc-pet {
  position: absolute; z-index: 2; right: 9%; bottom: 2%; font: 22px/1 "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif;
  filter: drop-shadow(0 2px 2px rgba(0, 0, 0, .4)); transform-origin: 50% 100%; animation: lpcPet 3.2s ease-in-out infinite;
}
.lpc-pet.st-baby { font-size: 17px; }
.lpc-pet.st-adult { font-size: 25px; }
.lpc-pet.hidden { display: none; }
@keyframes lpcPet { 0%, 100% { transform: translateY(0) rotate(0); } 45% { transform: translateY(0) rotate(0); } 55% { transform: translateY(-4px) rotate(-6deg); } 65% { transform: translateY(0) rotate(3deg); } }
@media (max-width: 640px) {
  .lpc-ftitle { font-size: 10px; }
  .lpc-fc { height: 17px; padding: 0 5px; font-size: 10px; gap: 3px; }
  .lpc-fc.rec .nm { display: none; }
  .lpc-pet { font-size: 17px; right: 4%; }
  .lpc-pet.st-adult { font-size: 19px; }
}
@media (prefers-reduced-motion: reduce) { .lpc-pet { animation: none; } }

/* ===== awards.css ===== */
/* ---------- Bonus-Pokale (public/js/awards.js) ---------- */
#hud-award { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; pointer-events: none !important; z-index: 6; padding: 12px; }
/* Während der Enthüllung nichts über die Karte legen: Namensschilder der Figuren und Chat-Einblendungen ausblenden */
.board-labels, #chat-feed { transition: opacity .3s, visibility .3s; }
body:has(#hud-award .aw-intro, #hud-award .aw-card) .board-labels,
body:has(#hud-award .aw-intro, #hud-award .aw-card) #chat-feed { opacity: 0; visibility: hidden; }
.aw-confetti { position: fixed; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 2; }
.aw-intro, .aw-card {
  position: relative; isolation: isolate; width: min(560px, calc(100vw - 24px)); max-height: calc(100vh - 24px); overflow: hidden; text-align: center;
  padding: 18px 20px 20px; border-radius: 28px; border: 2px solid rgba(255,201,51,.45);
  background: radial-gradient(ellipse at 50% 0%, rgba(255,201,51,.28), transparent 60%), linear-gradient(180deg, rgba(51,40,122,.97), rgba(25,18,66,.97));
  box-shadow: 0 24px 70px rgba(0,0,0,.55), inset 0 1px 0 rgba(255,255,255,.2);
  animation: awIn .55s cubic-bezier(.2,1.5,.4,1);
}
.aw-intro.out, .aw-card.out { animation: popOut .35s ease-in forwards; }
@keyframes awIn { from { transform: translateY(40px) scale(.7) rotate(-3deg); opacity: 0; } }
/* Lichtstrahlen hinter dem Inhalt */
.aw-intro::before, .aw-card::before {
  content: ''; position: absolute; left: 50%; top: 70px; width: 900px; height: 900px; margin: -450px 0 0 -450px; pointer-events: none; opacity: .13; z-index: -1;
  background: repeating-conic-gradient(from 0deg, #ffe066 0 8deg, transparent 8deg 20deg); animation: awRays 14s linear infinite;
}
@keyframes awRays { to { transform: rotate(360deg); } }
.aw-kicker, .aw-count { display: inline-block; padding: 3px 14px; border-radius: 999px; background: rgba(255,201,51,.18); color: #ffe8a8; font-weight: 800; font-size: 13px; letter-spacing: .08em; text-transform: uppercase; }
.aw-headline { font-family: var(--font-display); font-size: clamp(24px, 5vw, 36px); font-weight: 700; color: var(--primary); text-shadow: 0 4px 0 #7a2a9a; margin: 8px 0 14px; line-height: 1.1; }
.aw-sub { margin-top: 12px; color: var(--muted); font-weight: 700; }
.aw-slots { display: flex; justify-content: center; gap: 12px; }
.aw-slot { position: relative; flex: 0 1 150px; min-width: 0; }
.aw-slot-in {
  height: 150px; border-radius: 18px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; padding: 8px;
  background: linear-gradient(180deg, #4a3aa8, #2d2275); border: 2px solid rgba(255,255,255,.18); box-shadow: 0 8px 0 rgba(0,0,0,.25);
  transition: transform .25s, background .25s, border-color .25s;
}
.aw-slot .ic { font-size: 50px; line-height: 1; filter: drop-shadow(0 4px 4px rgba(0,0,0,.35)); }
.aw-slot .tt { font-family: var(--font-display); font-weight: 600; font-size: 15px; line-height: 1.1; min-height: 2.2em; display: flex; align-items: center; }
.aw-slot:not(.hit) .ic { animation: awBlur .15s linear infinite; }
@keyframes awBlur { 50% { transform: translateY(-3px); opacity: .7; } }
.aw-slot.hit .aw-slot-in { background: linear-gradient(180deg, #ffe066, #e6a100); border-color: #fff6c2; color: #3a1d63; transform: translateY(-6px) scale(1.06); animation: awHit .5s cubic-bezier(.2,1.8,.4,1); }
@keyframes awHit { 0% { transform: scale(.8) rotateY(90deg); } 100% { transform: translateY(-6px) scale(1.06); } }
.aw-fix { position: absolute; left: 50%; bottom: -10px; transform: translateX(-50%); white-space: nowrap; padding: 2px 8px; border-radius: 999px; background: #ff4d5e; font-size: 11px; font-weight: 800; box-shadow: 0 2px 6px rgba(0,0,0,.4); }

.aw-icon { font-size: 64px; line-height: 1; margin: 8px 0 2px; filter: drop-shadow(0 6px 8px rgba(0,0,0,.4)); animation: awIcon .8s cubic-bezier(.2,1.6,.4,1) .15s backwards; }
@keyframes awIcon { from { transform: scale(0) rotate(-180deg); } }
.aw-title { font-family: var(--font-display); font-size: clamp(28px, 6vw, 42px); font-weight: 700; color: var(--primary); text-shadow: 0 4px 0 #7a2a9a; line-height: 1.05; }
.aw-desc { color: #ffe8a8; font-weight: 700; margin: 4px 0 12px; }
.aw-rows { display: flex; flex-direction: column; gap: 6px; text-align: left; }
.aw-row { display: grid; grid-template-columns: 34px minmax(60px, 120px) 1fr 44px; align-items: center; gap: 8px; padding: 3px 8px; border-radius: 12px; background: rgba(255,255,255,.06); position: relative; animation: awRow .4s cubic-bezier(.2,1.4,.4,1) backwards; transition: opacity .4s, transform .4s, background .4s; }
.aw-row:nth-child(1) { animation-delay: .7s; } .aw-row:nth-child(2) { animation-delay: .78s; } .aw-row:nth-child(3) { animation-delay: .86s; } .aw-row:nth-child(4) { animation-delay: .94s; }
.aw-row:nth-child(5) { animation-delay: 1.02s; } .aw-row:nth-child(6) { animation-delay: 1.1s; } .aw-row:nth-child(7) { animation-delay: 1.18s; } .aw-row:nth-child(8) { animation-delay: 1.26s; }
@keyframes awRow { from { transform: translateX(-30px); opacity: 0; } }
.aw-row canvas { width: 34px; height: 37px; }
.aw-row .nm { font-family: var(--font-display); font-weight: 600; font-size: 16px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.aw-row.me .nm::after { content: ' (du)'; color: var(--muted); font-size: 12px; }
html:lang(en) .aw-row.me .nm::after { content: ' (you)'; }
.aw-row .bar { height: 16px; border-radius: 999px; background: rgba(0,0,0,.3); overflow: hidden; box-shadow: inset 0 2px 3px rgba(0,0,0,.35); }
.aw-row .bar i { display: block; height: 100%; width: 0; border-radius: 999px; box-shadow: inset 0 -4px 0 rgba(0,0,0,.2), inset 0 3px 0 rgba(255,255,255,.35); }
.aw-row .num { font-family: var(--font-display); font-size: 20px; text-align: right; font-variant-numeric: tabular-nums; }
.aw-row .crown { position: absolute; left: -6px; top: -14px; font-size: 22px; opacity: 0; transform: scale(0) rotate(-30deg); transition: all .45s cubic-bezier(.2,1.8,.4,1); }
.aw-card.rolling .aw-rows { animation: awShake .12s linear infinite; }
@keyframes awShake { 25% { transform: translate(1px, -1px); } 75% { transform: translate(-1px, 1px); } }
.aw-row.win { background: linear-gradient(90deg, rgba(255,201,51,.45), rgba(255,201,51,.12)); box-shadow: 0 0 0 2px #ffc933, 0 0 22px rgba(255,201,51,.5); transform: scale(1.03); z-index: 1; }
.aw-row.win .crown { opacity: 1; transform: none; }
.aw-row.win .num { color: var(--primary); }
.aw-row.lose { opacity: .45; }
.aw-winner { min-height: 0; }
.aw-card.revealed .aw-winner { margin-top: 12px; animation: popIn .5s cubic-bezier(.2,1.8,.4,1); }
.aw-wlabel { color: var(--muted); font-weight: 800; font-size: 13px; text-transform: uppercase; letter-spacing: .08em; }
.aw-wnames { display: flex; flex-wrap: wrap; justify-content: center; gap: 4px 14px; font-family: var(--font-display); font-size: clamp(24px, 5vw, 34px); font-weight: 700; text-shadow: 0 3px 0 rgba(0,0,0,.35); }
.aw-wnames span { display: inline-flex; align-items: center; gap: 6px; }
.aw-wnames canvas { width: 44px; height: 48px; }
.aw-plus { display: inline-block; margin-top: 6px; padding: 4px 14px; border-radius: 999px; background: linear-gradient(180deg, #ffe066, #e6a100); color: #3a1d63; font-weight: 800; box-shadow: 0 3px 0 rgba(0,0,0,.25); }
.aw-plus.you { background: linear-gradient(180deg, #7ef0ae, #1f9d55); color: #fff; animation: pulse .6s ease-in-out 3; }

/* Endbildschirm */
#end-extras { margin-top: 18px; }
.end-sec { font-family: var(--font-display); font-size: 24px; font-weight: 700; color: var(--primary); margin: 22px 4px 10px; display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.end-sec small { font-family: var(--font); font-size: 13px; font-weight: 700; color: var(--muted); }
.ea-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; }
.ea-card {
  position: relative; overflow: hidden; text-align: center; padding: 14px 12px 12px; border-radius: 20px; border: 2px solid rgba(255,201,51,.4);
  background: radial-gradient(ellipse at 50% 0%, rgba(255,201,51,.22), transparent 65%), rgba(255,255,255,.06); box-shadow: var(--shadow);
  animation: awIn .6s cubic-bezier(.2,1.5,.4,1) backwards;
}
.ea-ic { font-size: 44px; line-height: 1; filter: drop-shadow(0 4px 6px rgba(0,0,0,.35)); }
.ea-tt { font-family: var(--font-display); font-size: 22px; font-weight: 700; color: var(--primary); margin-top: 4px; }
.ea-ds { color: var(--muted); font-size: 13px; font-weight: 700; min-height: 2.4em; }
.ea-win { display: flex; flex-wrap: wrap; justify-content: center; gap: 4px 12px; margin-top: 6px; }
.ea-p { display: flex; flex-direction: column; align-items: center; font-family: var(--font-display); font-size: 16px; }
.ea-p canvas { width: 44px; height: 48px; }
.ea-p.me b::after { content: ' (du)'; color: var(--muted); font-size: 12px; }
html:lang(en) .ea-p.me b::after { content: ' (you)'; }
.ea-val { display: inline-block; margin-top: 6px; padding: 2px 12px; border-radius: 999px; background: rgba(255,201,51,.18); color: #ffe8a8; font-weight: 800; font-size: 14px; }
.es-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 10px; }
.es-card { padding: 10px 12px 12px; border-radius: 18px; background: rgba(255,255,255,.06); border: 1px solid var(--card-border); border-top: 4px solid var(--c, #fff); animation: rise .6s cubic-bezier(.2,1.3,.4,1) backwards; }
.es-card.me { background: rgba(255,255,255,.1); }
.es-head { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.es-head canvas { width: 36px; height: 40px; }
.es-head b { display: block; font-family: var(--font-display); font-size: 17px; font-weight: 600; }
.es-head small { color: var(--muted); font-weight: 700; font-size: 12px; }
.es-aw { margin-left: auto; font-size: 20px; letter-spacing: 2px; }
.es-chips { display: grid; grid-template-columns: repeat(auto-fill, minmax(64px, 1fr)); gap: 5px; }
.es-chip { display: flex; flex-direction: column; align-items: center; padding: 4px 2px; border-radius: 10px; background: rgba(0,0,0,.2); line-height: 1.15; }
.es-chip span { font-size: 15px; }
.es-chip b { font-family: var(--font-display); font-size: 18px; }
.es-chip small { font-size: 10.5px; font-weight: 700; color: var(--muted); white-space: nowrap; }
.es-chip.best { background: linear-gradient(180deg, rgba(255,201,51,.4), rgba(255,201,51,.15)); box-shadow: inset 0 0 0 1px rgba(255,201,51,.8); }
.es-chip.best b { color: var(--primary); }

@media (max-width: 720px) {
  .aw-intro, .aw-card { padding: 14px 12px 16px; border-radius: 22px; }
  .aw-slots { gap: 8px; }
  .aw-slot-in { height: 118px; }
  .aw-slot .ic { font-size: 38px; }
  .aw-slot .tt { font-size: 13px; }
  .aw-icon { font-size: 48px; }
  .aw-row { grid-template-columns: 28px minmax(50px, 90px) 1fr 36px; gap: 6px; padding: 2px 6px; }
  .aw-row canvas { width: 28px; height: 31px; }
  .aw-row .nm { font-size: 14px; }
  .aw-row .num { font-size: 17px; }
  .aw-row .bar { height: 12px; }
  /* Endbildschirm: Pokal-Karten kompakt nebeneinander (Symbol links) */
  .ea-grid { gap: 8px; }
  .ea-card { display: grid; grid-template-columns: 46px 1fr; column-gap: 10px; align-items: center; text-align: left; padding: 10px 12px; border-radius: 16px; }
  .ea-card > * { grid-column: 2; }
  .ea-ic { grid-column: 1; grid-row: 1 / span 4; font-size: 36px; text-align: center; }
  .ea-tt { font-size: 19px; margin: 0; }
  .ea-ds { min-height: 0; font-size: 12px; }
  .ea-win { justify-content: flex-start; gap: 2px 10px; margin-top: 4px; }
  .ea-p { flex-direction: row; gap: 4px; font-size: 15px; }
  .ea-p canvas { width: 26px; height: 29px; }
  .ea-val { justify-self: start; margin-top: 4px; font-size: 13px; }
  .es-grid { grid-template-columns: 1fr; }
  .es-chips { grid-template-columns: repeat(5, 1fr); }
  .end-sec { font-size: 21px; }
}
@media (max-height: 560px) {
  .aw-icon { font-size: 36px; margin: 2px 0 0; }
  .aw-desc { margin-bottom: 6px; }
  .aw-rows { gap: 3px; }
  .aw-row canvas { width: 24px; height: 26px; }
  .aw-slot-in { height: 104px; }
}

/* ===== keys.css ===== */
/* Steuerungshinweise als Symbole (siehe public/js/keys.js): Tastenkappen, Maus, Touch-Gesten, Bildschirm-Knöpfe */

/* Nur passende Hinweise zeigen – <html> trägt .touch-ui bzw. .kbd-ui */
.touch-ui .kbd-only { display: none !important; }
.kbd-ui .touch-only { display: none !important; }

/* Größen: --u = Höhe einer Tastenkappe, --ug = Kappen in WASD-/Pfeil-Gruppen (zwei Reihen) */
.kc-xs { --u: 17px; --ug: 14px; }
.kc-sm { --u: 22px; --ug: 18px; }
.kc-md { --u: 27px; --ug: 21px; }
.kc-lg { --u: 32px; --ug: 25px; }

/* ---------- Tastenkappe ---------- */
kbd.kc {
  --d: calc(var(--u, 26px) * .13);
  --sh-up: 0 var(--d) 0 #8f84c9, 0 calc(var(--d) + 2px) calc(var(--u, 26px) * .32) rgba(8, 4, 30, .55), inset 0 1px 0 #fff;
  --sh-dn: 0 1px 0 #8f84c9, 0 2px 3px rgba(8, 4, 30, .5), inset 0 1px 0 #fff;
  box-sizing: border-box; position: relative; flex: none;
  display: inline-flex; align-items: center; justify-content: center;
  min-width: var(--u, 26px); height: var(--u, 26px); padding: 0 calc(var(--u, 26px) * .26); margin: 0;
  border: 0; border-radius: calc(var(--u, 26px) * .24);
  background: linear-gradient(180deg, #fff 0%, #f3f0fd 50%, #e3ddf8 100%);
  color: #2a2160; font: 600 calc(var(--u, 26px) * .55)/1 var(--font-display, 'Fredoka', sans-serif);
  letter-spacing: 0; text-transform: none; white-space: nowrap; vertical-align: middle; text-shadow: none;
  box-shadow: var(--sh-up);
}
kbd.kc svg { display: block; width: calc(var(--u, 26px) * .56); height: calc(var(--u, 26px) * .56); flex: none; }
kbd.kc.kc-space { min-width: calc(var(--u, 26px) * 2.7); }
kbd.kc.kc-space svg { width: calc(var(--u, 26px) * .72); color: rgba(42, 33, 96, .5); }
kbd.kc.kc-wide { min-width: calc(var(--u, 26px) * 1.5); }
kbd.kc.kc-word { font-size: max(9px, calc(var(--u, 26px) * .42)); font-weight: 700; }
kbd.kc.kc-word.kc-wide { min-width: max(26px, calc(var(--u, 26px) * 1.5)); }

/* Gruppen: WASD / Pfeiltasten als umgedrehtes T, Paare nebeneinander */
.kc-grp { display: inline-flex; align-items: center; gap: calc(var(--u, 26px) * .14); flex: none; vertical-align: middle; }
.kc-grp-t { --u: var(--ug, 21px); display: inline-grid; grid-template-columns: repeat(3, auto); gap: calc(var(--u) * .24) calc(var(--u) * .14); }
.kc-grp-t > :first-child { grid-column: 2; grid-row: 1; }
.kc-grp-t > :nth-child(n+2) { grid-row: 2; }
.kc-range, .kc-combo { display: inline-flex; align-items: center; gap: calc(var(--u, 26px) * .16); flex: none; white-space: nowrap; vertical-align: middle; }
.kc-dash { color: rgba(221, 216, 255, .7); font: 700 calc(var(--u, 26px) * .55)/1 var(--font-display); }
.kc-plus { color: #ffe066; font: 700 calc(var(--u, 26px) * .6)/1 var(--font-display); margin: 0 1px; }
.kc-or { color: rgba(221, 216, 255, .42); font: 500 calc(var(--u, 26px) * .62)/1 var(--font-display); margin: 0 1px; flex: none; }

/* ---------- Maus ---------- */
.km { display: inline-flex; flex: none; height: calc(var(--u, 26px) * 1.2); vertical-align: middle; filter: drop-shadow(0 2px 3px rgba(8, 4, 30, .5)); }
.km svg { height: 100%; width: auto; overflow: visible; }
.km-body { fill: #f6f3ff; stroke: #8f84c9; stroke-width: 1.3; }
.km-btn { fill: #ffc933; }
.km-line { fill: none; stroke: #8f84c9; stroke-width: 1.1; }
.km-move { fill: none; stroke: #ffe066; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }

/* ---------- Touch: Gesten in Glas-Kacheln (wie Joystick & Knöpfe im Spiel) ---------- */
.kt {
  box-sizing: border-box; display: inline-grid; place-items: center; flex: none; vertical-align: middle;
  width: calc(var(--u, 26px) * 1.34); height: calc(var(--u, 26px) * 1.34); border-radius: 30%;
  background: rgba(255, 255, 255, .1); border: 1.5px solid rgba(255, 255, 255, .26);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .12), 0 3px 10px rgba(8, 4, 30, .35);
}
.kt svg { width: 84%; height: 84%; overflow: visible; }
.kt-dirpad { width: calc(var(--u, 26px) * 1.7); }
.kt-dirpad svg { width: 80%; height: auto; }
.kt-halo { fill: rgba(255, 255, 255, .28); }
.kt-dot { fill: #fff; }
.kt-track { fill: none; stroke: rgba(255, 255, 255, .38); stroke-width: 2; stroke-dasharray: 1.5 3.5; stroke-linecap: round; }
.kt-chev { fill: none; stroke: #ffe066; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
.kt-ripple { fill: none; stroke: #ffe066; stroke-width: 2; transform-box: fill-box; transform-origin: center; animation: ktRipple 1.6s ease-out infinite; }
.kt-tapring { fill: none; stroke: rgba(255, 255, 255, .22); stroke-width: 1.6; }
.kt-ring { fill: none; stroke: rgba(255, 255, 255, .2); stroke-width: 2.6; }
.kt-prog { fill: none; stroke: #ffe066; stroke-width: 2.6; stroke-linecap: round; stroke-dasharray: 72.3; stroke-dashoffset: 72.3; transform: rotate(-90deg); transform-origin: 16px 16px; animation: ktProg 2.2s ease-in-out infinite; }
.kt-mv { animation: ktSwipe 1.6s cubic-bezier(.5, 0, .3, 1) infinite; }
.kt-mvx { animation: ktSwipeX 2.4s ease-in-out infinite; }
.kt-joy { fill: rgba(255, 255, 255, .1); stroke: rgba(255, 255, 255, .6); stroke-width: 1.8; }
.kt-knob { fill: rgba(255, 255, 255, .88); animation: ktJoy 3s ease-in-out infinite; }
@keyframes ktRipple { 0% { transform: scale(.6); opacity: .9; } 100% { transform: scale(2.1); opacity: 0; } }
@keyframes ktProg { 0%, 8% { stroke-dashoffset: 72.3; opacity: 1; } 66% { stroke-dashoffset: 0; opacity: 1; } 80%, 100% { stroke-dashoffset: 0; opacity: 0; } }
@keyframes ktSwipe { 0% { transform: translateX(0); opacity: 0; } 14% { opacity: 1; } 66% { transform: translateX(14px); opacity: 1; } 82%, 100% { transform: translateX(15px); opacity: 0; } }
@keyframes ktSwipeX { 0%, 100% { transform: translateX(-8px); } 50% { transform: translateX(8px); } }
@keyframes ktJoy { 0%, 100% { transform: translate(0, 0); } 22% { transform: translate(5.5px, -2px); } 48% { transform: translate(-1px, 5.5px); } 74% { transform: translate(-5.5px, -1.5px); } }

/* Bildschirm-Knopf – gleiche Farbe & Beschriftung wie im Spiel */
.kt-btn {
  --bc: rgba(255, 201, 51, .8);
  box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center; flex: none; vertical-align: middle;
  height: calc(var(--u, 26px) * 1.34); min-width: calc(var(--u, 26px) * 1.34); padding: 0 calc(var(--u, 26px) * .44);
  border-radius: 999px; background: var(--bc); border: 2px solid rgba(255, 255, 255, .45);
  color: #1b1440; font: 700 calc(var(--u, 26px) * .42)/1 var(--font-display); letter-spacing: .03em; white-space: nowrap;
  box-shadow: 0 3px 10px rgba(8, 4, 30, .35);
}
.kt-btn.kt-round { padding: 0; width: calc(var(--u, 26px) * 1.34); font-size: calc(var(--u, 26px) * .62); }
.kt-btn.kt-ghost { background: rgba(255, 255, 255, .1); border-color: rgba(255, 255, 255, .3); color: rgba(255, 255, 255, .85); font-weight: 700; }
.kt-sides { gap: calc(var(--u, 26px) * .2); }

/* ---------- Zeilen: [Symbole] → Verb ---------- */
.kc-list.kc-list { display: grid; grid-template-columns: auto auto; justify-content: center; align-items: center; column-gap: 16px; row-gap: 11px; }
.kc-list .kc-row { display: contents; }
.kc-syms { display: inline-flex; align-items: center; justify-content: flex-end; flex-wrap: nowrap; gap: 6px; justify-self: end; min-height: var(--u); }
.kc-label { justify-self: start; text-align: left; font: 700 15px/1.25 var(--font); color: #f3efff; }
.kc-tag {
  display: inline-block; margin-left: 7px; padding: 2px 7px; border-radius: 999px; vertical-align: 1px;
  background: rgba(255, 255, 255, .09); border: 1px solid rgba(255, 255, 255, .14);
  color: var(--muted, #b9b1e6); font: 800 10px/1.3 var(--font); letter-spacing: .07em; text-transform: uppercase; white-space: nowrap;
}
.kc-is-touch.kc-list { row-gap: 12px; }
.kc-is-touch.kc-md { --u: 30px; } /* Touch-Zeilen haben je ein Symbol – darf größer sein */

/* Nebeneinander (Start-Hinweis) */
.kc-list.kc-inline { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; row-gap: 10px; column-gap: 0; }
.kc-inline .kc-row { display: inline-flex; align-items: center; gap: 9px; padding: 0 15px; }
.kc-inline .kc-row + .kc-row { border-left: 1px solid rgba(255, 255, 255, .14); }
.kc-inline .kc-syms { justify-content: center; flex-wrap: nowrap; }
.kc-inline .kc-label { white-space: nowrap; font-size: 14.5px; }

/* Halten & loslassen: Taste bleibt gedrückt, Ladebalken füllt sich, beim Loslassen leert er sich */
.kc-meter { position: relative; flex: none; width: calc(var(--u, 26px) * .22); height: calc(var(--u, 26px) * .95); margin-left: 1px; border-radius: 99px; background: rgba(255, 255, 255, .13); overflow: hidden; }
.kc-meter i { position: absolute; inset: 0; border-radius: inherit; background: linear-gradient(0deg, #ffc933, #ff7a3c); transform-origin: bottom; transform: scaleY(0); animation: kcCharge 2.2s ease-in infinite; }
.kc-hold kbd.kc { animation: kcHold 2.2s ease-in-out infinite; }
.kc-hold .kt-btn { animation: ktBtnHold 2.2s ease-in-out infinite; }
.kc-hold .km .km-btn { animation: kmHold 2.2s ease-in-out infinite; }
@keyframes kcCharge { 0%, 10% { transform: scaleY(0); } 66% { transform: scaleY(1); filter: none; } 70% { transform: scaleY(1); filter: brightness(1.7); } 78%, 100% { transform: scaleY(0); } }
@keyframes kcHold { 0%, 7% { transform: none; box-shadow: var(--sh-up); } 11%, 66% { transform: translateY(calc(var(--d) - 1px)); box-shadow: var(--sh-dn); } 71%, 100% { transform: none; box-shadow: var(--sh-up); } }
@keyframes ktBtnHold { 0%, 7% { transform: none; filter: none; } 11%, 66% { transform: scale(.9); filter: brightness(1.15); } 71%, 100% { transform: none; filter: none; } }
@keyframes kmHold { 0%, 7% { fill: #ffc933; } 11%, 66% { fill: #ff8a3d; } 71%, 100% { fill: #ffc933; } }

/* Schnell hämmern */
.kc-rapid kbd.kc { animation: kcTap .3s ease-in-out infinite alternate; }
.kc-rapid .km .km-btn { animation: kmTap .3s ease-in-out infinite alternate; }
.kc-rapid .kt-ripple { animation-duration: .6s; }
@keyframes kcTap { from { transform: none; box-shadow: var(--sh-up); } to { transform: translateY(calc(var(--d) - 1px)); box-shadow: var(--sh-dn); } }
@keyframes kmTap { from { fill: #ffc933; } to { fill: #ff8a3d; } }

/* Kleiner Inline-Hinweis „[T] öffnen“ */
.kc-hint { display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; vertical-align: middle; }
.kc-hint .kc-or { font-size: calc(var(--u, 17px) * .7); }
.kc-hint-t { font: 700 11px/1 var(--font); color: var(--muted, #b9b1e6); }

/* ---------- Minispiel-Intro ---------- */
.mg-intro { max-height: calc(100dvh - 20px); overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; } /* lange Beschreibung + Steuerung: lieber scrollen als abschneiden */
.mg-ctl { margin: 0 0 16px; padding: 12px 16px 15px; border-radius: 16px; background: rgba(0, 0, 0, .24); border: 1px solid rgba(255, 255, 255, .07); }
.mg-ctl-cap { margin: 0 0 11px; font: 800 11px/1 var(--font); letter-spacing: .16em; text-transform: uppercase; color: var(--muted, #b9b1e6); }
.mg-ctl .kc-label { font-size: 15.5px; }
.mg-intro .btn .kc-hint { margin-left: 10px; vertical-align: 1px; }
.mg-intro .btn:disabled .kc-hint { display: none; }

/* ---------- Start-Hinweis im Minispiel ---------- */
.kc-toast {
  position: absolute; left: 0; right: 0; bottom: max(92px, 10.5vh); z-index: 4; margin: 0 auto; width: max-content;
  max-width: calc(100% - 24px); box-sizing: border-box; padding: 11px 4px;
  border-radius: 18px; background: rgba(20, 14, 51, .8); border: 1px solid rgba(255, 255, 255, .14);
  box-shadow: 0 12px 34px rgba(0, 0, 0, .45); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
  animation: kcToastIn .55s cubic-bezier(.2, 1.3, .4, 1) both;
}
#mg-ui > .kc-toast { pointer-events: none; }
.kc-toast-foot { margin: 10px 14px 0; padding-top: 8px; border-top: 1px solid rgba(255, 255, 255, .1); text-align: center; font: 700 12.5px/1.3 var(--font); color: var(--muted, #b9b1e6); }
.kc-toast.mid { bottom: auto; top: calc(50% + 112px); }
.touch-ui .kc-toast { bottom: max(176px, 23vh); }
.touch-ui .kc-toast.mid { bottom: auto; top: calc(50% + 84px); }
/* Platz vom Manager (placeHint): Spiel-Wunsch, Handy quer = seitlich, Ausweichen vor hintAvoid() */
#mg-ui > .kc-toast.at-top { top: 10px; bottom: auto; }
#mg-ui > .kc-toast.at-bottom { top: auto; bottom: 10px; }
/* Seitlich: kompakte Tabelle am Rand (Handy quer – Spielfeld mittig, Joystick/Knöpfe unten, Emote/Chat oben rechts) */
#mg-ui > .kc-toast.at-side, #mg-ui > .kc-toast.at-side-r {
  top: 58px; bottom: auto; margin: 0; width: max-content; max-width: min(232px, calc(50% - 160px)); min-width: 150px; padding: 9px 11px; border-radius: 14px;
}
#mg-ui > .kc-toast.at-side { left: max(10px, env(safe-area-inset-left)); right: auto; }
#mg-ui > .kc-toast.at-side-r { right: max(74px, env(safe-area-inset-right)); left: auto; }
.kc-toast.at-side .kc-list.kc-inline, .kc-toast.at-side-r .kc-list.kc-inline {
  display: grid; grid-template-columns: auto minmax(0, 1fr); justify-content: start; align-items: center; column-gap: 9px; row-gap: 7px;
}
.kc-toast.at-side .kc-inline .kc-row, .kc-toast.at-side-r .kc-inline .kc-row { display: contents; }
.kc-toast.at-side .kc-inline .kc-syms, .kc-toast.at-side-r .kc-inline .kc-syms { justify-content: flex-end; justify-self: end; }
.kc-toast.at-side .kc-inline .kc-label, .kc-toast.at-side-r .kc-inline .kc-label { white-space: normal; font-size: 12px; line-height: 1.22; }
.kc-toast.at-side .kc-list.kc-md, .kc-toast.at-side-r .kc-list.kc-md { --u: 20px; --ug: 16px; }
.kc-toast.at-side .kc-toast-foot, .kc-toast.at-side-r .kc-toast-foot { margin: 7px 0 0; font-size: 11px; }
.kc-toast.out { animation: kcToastOut .7s ease forwards; }
@keyframes kcToastIn { from { opacity: 0; transform: translateY(16px) scale(.96); } }
@keyframes kcToastOut { to { opacity: 0; transform: translateY(10px) scale(.98); } }

/* ---------- Weitere Stellen ---------- */
/* Abstimmung: Kappe statt Ziffer */
.vote-card .vk { line-height: 0; }
.vote-card .vk .kc { --u: 22px; }
/* Chat-/Emote-Knöpfe und Emote-Rad: kleine Kappen in der Ecke */
.soc-btn > .kc { position: absolute; left: -7px; bottom: -6px; pointer-events: none; }
.wheel-btn > .kc { position: absolute; right: -5px; bottom: -6px; pointer-events: none; }
.cmini-input .kc, .cmini-hint .kc { --u: 19px; }
.chat-hint .kc-hint + .kc-hint { margin-left: 10px; }
/* Brett: Würfeln-Knopf und Kartenübersicht */
.action-roll .kc-hint { margin-left: 12px; vertical-align: 3px; }
#btn-cam { position: relative; }
#btn-cam > .kc { position: absolute; right: -6px; bottom: -6px; pointer-events: none; }
/* Quiz-Antworten: Zifferntaste als Kappe */
.quiz-opts button .kc { margin-right: 10px; vertical-align: 4px; }

/* ---------- Kleine Bildschirme ---------- */
@media (max-width: 560px), (max-height: 520px) {
  .kc-md { --u: 23px; --ug: 18px; }
  .kc-list.kc-list { column-gap: 11px; row-gap: 9px; }
  .kc-label, .mg-ctl .kc-label { font-size: 13.5px; }
  .kc-syms { gap: 5px; }
  .mg-ctl { padding: 9px 10px 11px; margin-bottom: 10px; }
  .mg-ctl-cap { margin-bottom: 8px; font-size: 10px; }
  .kc-inline .kc-row { padding: 0 10px; gap: 7px; }
  .kc-inline .kc-label { font-size: 13px; }
  .kc-toast { padding: 9px 2px; border-radius: 15px; }
}
/* Handy hoch: Start-Hinweis als kleine Tabelle statt nebeneinander; Intro passt ohne Abschneiden auf den Schirm */
@media (max-width: 560px) {
  .kc-toast .kc-list.kc-md { --u: 22px; --ug: 17px; }
  /* Touch hoch: oben zwischen HUD und Spielfeld, links neben Emote-/Chat-Knöpfen – Spielfeld & Steuerung bleiben frei */
  .touch-ui .kc-toast:not(.mid) { top: 122px; bottom: auto; left: 12px; right: 74px; max-width: none; }
  .kc-toast .kc-label { font-size: 13px; }
  .kc-toast .kc-list.kc-inline { row-gap: 7px; }
  .kc-toast-foot { margin-top: 8px; padding-top: 6px; font-size: 11.5px; }
  .kc-is-touch.kc-md { --u: 26px; }
  .mg-intro .mg-icon { font-size: 54px; }
  .mg-intro h2 { font-size: 32px; margin: 2px 0 6px; }
  .mg-intro .desc { font-size: 14.5px; line-height: 1.38; margin-bottom: 12px; }
  .kc-list.kc-inline { display: grid; grid-template-columns: auto auto; justify-content: center; align-items: center; column-gap: 11px; row-gap: 9px; }
  .kc-inline .kc-row { display: contents; }
  .kc-inline .kc-syms { justify-content: flex-end; justify-self: end; }
  .kc-toast { padding: 10px 16px; }
}

@media (prefers-reduced-motion: reduce) {
  .kt-ripple, .kt-prog, .kt-mv, .kt-mvx, .kt-knob, .kc-meter i, .kc-hold kbd.kc, .kc-hold .kt-btn, .kc-hold .km .km-btn,
  .kc-rapid kbd.kc, .kc-rapid .km .km-btn { animation: none !important; }
  .kc-meter i { transform: scaleY(.6); }
  .kt-prog { stroke-dashoffset: 24; }
}

/* Brawl-Auswahl: Kappen-Hinweis im Fließtext */
.brp-sub .kc-hint { margin: 0 2px; }
.brp-sub .kc-hint-t { font: inherit; color: inherit; }

/* ===== items.css ===== */
/* Item-System: Rang-Optik, Belohnungsrunde (Truhen), Überraschungskiste, Minispiel-Wahl, Sonderregeln.
   JS: public/js/board/items-fx.js · Rangfarben kommen als --tc aus META.ITEM_TIERS (S gold, A lila, B blau, C grün, D grau). */

/* ---------- Rang-Abzeichen & Log ---------- */
.it-tier-badge {
  --tc: #9aa0b8;
  display: inline-flex; align-items: center; justify-content: center; min-width: 18px; height: 18px; padding: 0 5px;
  border-radius: 6px; background: var(--tc); color: #1b1440; font: 800 11px/1 var(--font); letter-spacing: .3px;
  text-transform: uppercase; vertical-align: 2px; text-shadow: none; white-space: nowrap;
  box-shadow: 0 2px 0 rgba(0,0,0,.25), inset 0 1px 0 rgba(255,255,255,.45);
}
.it-tier-badge.it-tier-S { background: linear-gradient(135deg, #fff1a8, var(--tc) 45%, #e6a100); }
.it-tier-badge.it-tier-A { background: linear-gradient(135deg, #e6d2ff, var(--tc) 50%, #8a4fe0); color: #fff; text-shadow: 0 1px 1px rgba(0,0,0,.35); }
.it-tier-badge .it-tn { margin-left: .32em; }
.modal h3 .it-tier-badge { font-size: 13px; height: 22px; padding: 0 7px; vertical-align: 4px; }

.it-log-item { --tc: #9aa0b8; white-space: nowrap; box-shadow: inset 0 -2px 0 color-mix(in srgb, var(--tc) 70%, transparent); }
.it-log-item i {
  font-style: normal; font: 800 10px/1 var(--font); padding: 2px 4px; border-radius: 5px; background: var(--tc); color: #1b1440;
  vertical-align: 2px; margin-left: 2px; text-shadow: none;
}

/* Spielerkarten: Item-Icons mit Rangfarbe */
.items-mini .it-mi {
  --tc: #9aa0b8; width: 20px; height: 20px; line-height: 20px; border-radius: 6px; font-size: 13px;
  background: color-mix(in srgb, var(--tc) 26%, rgba(0,0,0,.25)); box-shadow: inset 0 0 0 1.5px color-mix(in srgb, var(--tc) 85%, transparent);
}
.status-mini .it-st-skip { display: inline-block; animation: it-skipSpin 2.4s linear infinite; }
@keyframes it-skipSpin { to { transform: rotate(-360deg); } }

/* Aktionsleiste: Item-Knöpfe als Rangkarten */
.item-btn.it-tiered {
  --tc: #9aa0b8; position: relative;
  border-color: color-mix(in srgb, var(--tc) 75%, transparent);
  background: linear-gradient(180deg, color-mix(in srgb, var(--tc) 30%, rgba(27,20,64,.92)) 0%, rgba(27,20,64,.94) 70%);
  box-shadow: 0 5px 0 rgba(0,0,0,.3), 0 0 16px color-mix(in srgb, var(--tc) 22%, transparent);
}
.item-btn.it-tiered:hover { border-color: var(--tc); box-shadow: 0 8px 0 rgba(0,0,0,.3), 0 0 22px color-mix(in srgb, var(--tc) 45%, transparent); }
.item-btn.it-tiered .it-tl {
  position: absolute; top: -8px; right: -8px; width: 20px; height: 20px; border-radius: 50%; display: grid; place-items: center;
  background: var(--tc); color: #1b1440; font: 800 11px/1 var(--font); border: 2px solid #1b1440;
}
.item-btn.it-tiered.blocked { box-shadow: 0 5px 0 rgba(0,0,0,.3); }

/* Laden */
.shop-item.it-tiered { --tc: #9aa0b8; position: relative; border-color: color-mix(in srgb, var(--tc) 45%, rgba(255,255,255,.12)); background: linear-gradient(100deg, color-mix(in srgb, var(--tc) 18%, transparent), rgba(255,255,255,.05) 60%); }
.shop-item.it-tiered:hover:not(:disabled) { border-color: var(--tc); box-shadow: 0 0 18px color-mix(in srgb, var(--tc) 35%, transparent); }
.shop-item.it-tiered .ic { filter: drop-shadow(0 0 8px color-mix(in srgb, var(--tc) 70%, transparent)); }
.shop-item .nm .it-tier-badge { margin-left: 4px; }
.shop-item .pr s { color: var(--muted); font-weight: 700; margin-right: 6px; opacity: .8; }
.it-shop-factor { color: var(--primary); font-weight: 800; }

/* Banner beim Benutzen eines S-/A-Items */
.banner.it-tier-S { color: var(--primary); border-color: rgba(255,201,51,.65); box-shadow: 0 0 34px rgba(255,201,51,.35), 0 14px 40px rgba(0,0,0,.35); }
.banner.it-tier-A { color: #e0c8ff; border-color: rgba(181,123,255,.65); box-shadow: 0 0 30px rgba(181,123,255,.35), 0 14px 40px rgba(0,0,0,.35); }

/* Kurzer Bildschirm-Schimmer bei Legendär */
.it-tier-flash { --tc: #ffc933; position: absolute; inset: 0; pointer-events: none !important; z-index: 6; background: radial-gradient(circle at 50% 45%, color-mix(in srgb, var(--tc) 45%, transparent), transparent 60%); animation: it-tierFlash .9s ease-out forwards; }
@keyframes it-tierFlash { 0% { opacity: 0; } 18% { opacity: 1; } 100% { opacity: 0; } }

/* ---------- Sonderregeln: HUD-Chip, Liste, Intro-Karte ---------- */
#hud-top .it-mods-pill {
  pointer-events: auto; cursor: pointer; color: #fff; display: inline-flex; align-items: center; gap: 2px;
  transition: transform .15s, border-color .15s;
}
#hud-top .it-mods-pill:hover { transform: translateY(-2px); border-color: var(--primary); }
.it-mods-pill .it-mp-ic { margin-right: 6px; }
.it-mods-pill .it-mp-lb { margin-left: 5px; }
.it-mods-pill b { color: var(--primary); }
.it-mods-pop {
  position: absolute; top: 64px; left: 50%; transform: translateX(-50%); z-index: 30; width: min(440px, calc(100vw - 24px));
  background: linear-gradient(180deg, rgba(51,40,122,.97), rgba(33,25,84,.97)); border: 2px solid rgba(255,255,255,.18);
  border-radius: 20px; padding: 12px 14px 14px; box-shadow: 0 18px 50px rgba(0,0,0,.45); animation: popIn .28s cubic-bezier(.2,1.5,.4,1);
  max-height: calc(100% - 140px); overflow: auto;
}
.it-mods-pop .it-mp-head { font-family: var(--font-display); font-weight: 600; font-size: 17px; color: var(--primary); margin: 0 4px 8px; }
.it-mods-pop .it-mp-row { display: grid; grid-template-columns: 30px 1fr auto; gap: 10px; align-items: center; padding: 8px 6px; border-top: 1px solid rgba(255,255,255,.08); }
.it-mods-pop .it-mp-i { font-size: 22px; text-align: center; }
.it-mods-pop .it-mp-t b { display: block; font-family: var(--font-display); font-weight: 600; font-size: 15px; }
.it-mods-pop .it-mp-t small { display: block; color: var(--muted); font-size: 12.5px; line-height: 1.3; }
.it-mods-pop .it-mp-v { font-family: var(--font-display); font-weight: 700; font-size: 14px; padding: 4px 10px; border-radius: 999px; background: var(--primary); color: #1b1440; white-space: nowrap; }

.it-mods-intro {
  position: absolute; left: 50%; top: calc(24% + 150px); transform: translateX(-50%); z-index: 4; pointer-events: none !important;
  width: max-content; max-width: min(640px, calc(100vw - 24px)); padding: 12px 16px 14px; border-radius: 22px;
  background: linear-gradient(180deg, rgba(51,40,122,.92), rgba(33,25,84,.92)); border: 2px solid rgba(255,201,51,.35);
  box-shadow: 0 16px 44px rgba(0,0,0,.4); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
  animation: it-modsIntroIn .5s .25s cubic-bezier(.2,1.5,.4,1) both;
}
.it-mods-intro.it-out { animation: popOut .4s ease-in forwards; }
.it-mods-intro .it-mi-head { text-align: center; font-family: var(--font-display); font-weight: 700; font-size: 18px; color: var(--primary); letter-spacing: .4px; margin-bottom: 8px; }
.it-mods-intro .it-mi-list { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; }
.it-mods-intro .it-mi-chip {
  display: inline-flex; align-items: center; gap: 6px; padding: 5px 10px 5px 7px; border-radius: 999px;
  background: rgba(255,255,255,.08); border: 1.5px solid rgba(255,255,255,.14); font-weight: 700; font-size: 14px; white-space: nowrap;
  animation: it-chipIn .4s cubic-bezier(.2,1.6,.4,1) both;
}
.it-mods-intro .it-mi-chip .it-i { font-size: 17px; }
.it-mods-intro .it-mi-chip b { color: var(--primary); font-family: var(--font-display); font-weight: 600; }
@keyframes it-modsIntroIn { from { transform: translate(-50%, 16px) scale(.85); opacity: 0; } }
@keyframes it-chipIn { from { transform: translateY(10px) scale(.7); opacity: 0; } }

/* ---------- 🎁 Belohnungsrunde ---------- */
#it-loot { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; pointer-events: none !important; z-index: 5; padding: 12px; }
#it-loot.it-out .it-loot-panel { animation: popOut .4s ease-in forwards; }
.it-loot-panel {
  position: relative; max-width: min(1080px, calc(100vw - 24px)); padding: 16px 20px 18px; border-radius: 26px; text-align: center;
  background: radial-gradient(ellipse at 50% 0%, rgba(255,201,51,.16), transparent 55%), linear-gradient(180deg, rgba(51,40,122,.96), rgba(33,25,84,.96));
  border: 2px solid rgba(255,255,255,.2); box-shadow: 0 24px 70px rgba(0,0,0,.5);
  animation: popIn .45s cubic-bezier(.2,1.5,.4,1);
}
.it-loot-head { margin-bottom: 12px; }
.it-lh-title { font-family: var(--font-display); font-weight: 700; font-size: 30px; line-height: 1.1; color: var(--primary); text-shadow: 0 3px 0 #7a2a9a, 0 6px 16px rgba(0,0,0,.4); }
.it-lh-ic { display: inline-block; margin-right: 8px; animation: it-giftHop 1.2s ease-in-out infinite; }
@keyframes it-giftHop { 0%, 100% { transform: translateY(0) rotate(0); } 30% { transform: translateY(-5px) rotate(-8deg); } 60% { transform: translateY(0) rotate(6deg); } }
.it-lh-sub { color: var(--muted); font-weight: 700; font-size: 14px; margin-top: 2px; }
.it-loot-row { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; }
.it-loot-panel.it-many .it-loot-row { gap: 10px; }

.it-loot-card {
  --tc: rgba(255,255,255,.18); --tg: #fff; position: relative; width: 118px; padding: 9px 7px 10px; border-radius: 18px;
  background: rgba(255,255,255,.06); border: 2px solid rgba(255,255,255,.1); overflow: visible;
  display: flex; flex-direction: column; align-items: center; gap: 4px;
  transition: border-color .3s, box-shadow .3s, background .3s, transform .3s;
  animation: it-cardIn .4s cubic-bezier(.2,1.5,.4,1) both;
}
.it-loot-panel.it-many .it-loot-card { width: 108px; }
.it-loot-card:nth-child(2) { animation-delay: .05s; } .it-loot-card:nth-child(3) { animation-delay: .1s; } .it-loot-card:nth-child(4) { animation-delay: .15s; }
.it-loot-card:nth-child(5) { animation-delay: .2s; } .it-loot-card:nth-child(6) { animation-delay: .25s; } .it-loot-card:nth-child(7) { animation-delay: .3s; } .it-loot-card:nth-child(8) { animation-delay: .35s; }
@keyframes it-cardIn { from { transform: translateY(18px) scale(.8); opacity: 0; } }
.it-loot-card.it-me { border-color: rgba(255,255,255,.35); }
.it-loot-card.it-me::before { content: 'DU'; position: absolute; top: -9px; right: 10px; font: 800 10px/1 var(--font); padding: 3px 6px; border-radius: 6px; background: #fff; color: #1b1440; z-index: 3; }
html:lang(en) .it-loot-card.it-me::before { content: 'YOU'; }
.it-loot-card.it-open {
  border-color: var(--tc); transform: translateY(-3px);
  background: radial-gradient(circle at 50% 38%, color-mix(in srgb, var(--tc) 38%, transparent), transparent 70%), rgba(255,255,255,.06);
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--tc) 35%, transparent), 0 10px 28px color-mix(in srgb, var(--tc) 40%, transparent);
}
.it-lc-top { position: relative; z-index: 2; display: flex; flex-direction: column; align-items: center; gap: 0; width: 100%; min-width: 0; }
.it-lc-top canvas { width: 32px; height: 35px; flex-shrink: 0; margin-top: -2px; }
.it-lc-place { position: absolute; top: -9px; left: -7px; z-index: 3; width: 24px; height: 24px; border-radius: 50%; background: #fff; color: #1b1440; font: 800 11px/24px var(--font); text-align: center; box-shadow: 0 2px 0 rgba(0,0,0,.3); }
.it-loot-card:first-child .it-lc-place { background: var(--primary); }
.it-lc-pn { text-shadow: 0 1px 3px rgba(10,6,35,.9); font-family: var(--font-display); font-weight: 600; font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; text-align: center; }
.it-lc-stage { position: relative; width: 100%; height: 86px; display: flex; align-items: flex-end; justify-content: center; }
.it-lc-item {
  position: absolute; left: 50%; bottom: 26px; font-size: 38px; line-height: 1; opacity: 0; transform: translate(-50%, 18px) scale(.2);
  filter: drop-shadow(0 0 10px var(--tg)) drop-shadow(0 3px 2px rgba(0,0,0,.4)); z-index: 4; pointer-events: none;
}
.it-loot-card.it-open .it-lc-item { animation: it-itemUp .65s .12s cubic-bezier(.2,1.7,.4,1) forwards; }
@keyframes it-itemUp { 0% { opacity: 0; transform: translate(-50%, 18px) scale(.2); } 60% { opacity: 1; transform: translate(-50%, -22px) scale(1.25); } 100% { opacity: 1; transform: translate(-50%, -12px) scale(1); } }
.it-lc-name { min-height: 17px; max-width: 100%; font-family: var(--font-display); font-weight: 600; font-size: 13px; line-height: 1.12; opacity: 0; hyphens: manual; }
.it-lc-tag { min-height: 20px; display: flex; gap: 4px; align-items: center; justify-content: center; flex-wrap: wrap; opacity: 0; }
.it-lc-name.it-long { font-size: 11.5px; letter-spacing: -.2px; }
.it-loot-card.it-open .it-lc-name, .it-loot-card.it-open .it-lc-tag { animation: it-fadeUp .35s .3s ease-out forwards; }
@keyframes it-fadeUp { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
.it-lc-full { font-size: 11px; font-weight: 800; color: #ffe8a8; white-space: nowrap; }
.it-lc-tag .it-tier-badge { text-transform: none; font-size: 10.5px; letter-spacing: 0; padding: 0 6px; }
.it-lc-boost { font-size: 13px; }
.it-lc-spark {
  position: absolute; left: 50%; bottom: 40px; width: 8px; height: 8px; margin-left: -4px; z-index: 5; pointer-events: none;
  background: #fff3b0; border-radius: 2px; transform: rotate(45deg); box-shadow: 0 0 8px #ffc933, 0 0 2px #fff;
  animation: it-sparkFly .9s cubic-bezier(.15,.8,.3,1) forwards;
}
@keyframes it-sparkFly { 0% { transform: translate(0, 0) rotate(45deg) scale(.4); opacity: 1; } 100% { transform: translate(var(--dx), var(--dy)) rotate(225deg) scale(1); opacity: 0; } }
/* Legendär: Glanz läuft einmal über die Karte (als Hintergrundebene – Platz-Abzeichen bleiben sichtbar) */
.it-loot-card.it-open.it-tier-S {
  background-image: linear-gradient(105deg, transparent 40%, rgba(255,255,255,.42) 50%, transparent 60%), radial-gradient(circle at 50% 38%, color-mix(in srgb, var(--tc) 38%, transparent), transparent 70%);
  background-size: 300% 100%, auto; background-repeat: no-repeat; background-color: rgba(255,255,255,.06);
  animation: it-shineSweep 1.2s .2s ease-out both;
}
@keyframes it-shineSweep { from { background-position: 130% 0, 0 0; } to { background-position: -30% 0, 0 0; } }
.it-loot-card.it-tier-S .it-lc-name { color: #ffe58a; }
.it-loot-card.it-tier-A .it-lc-name { color: #e2ccff; }

/* Truhe (reines CSS) */
.it-chest { position: relative; width: 64px; height: 52px; margin-bottom: 2px; animation: it-chestIdle 1.6s ease-in-out infinite; }
.it-loot-card:nth-child(even) .it-chest { animation-delay: -.8s; }
@keyframes it-chestIdle { 0%, 100% { transform: rotate(0); } 50% { transform: rotate(-2.5deg) translateY(-1px); } }
.it-ch-base {
  position: absolute; left: 3px; right: 3px; bottom: 0; height: 31px; border-radius: 5px 5px 9px 9px; z-index: 1;
  background: repeating-linear-gradient(180deg, rgba(0,0,0,0) 0 9px, rgba(0,0,0,.14) 9px 10px), linear-gradient(180deg, #ad6a31, #7d4519);
  border: 2px solid #46230d; box-shadow: inset 0 3px 0 rgba(255,255,255,.14), inset 0 -4px 0 rgba(0,0,0,.22), 0 4px 0 rgba(0,0,0,.28);
}
.it-ch-base::after { content: ''; position: absolute; top: 0; bottom: 0; left: 50%; width: 9px; margin-left: -4.5px; background: linear-gradient(90deg, #c8901a, #ffe27a, #c8901a); }
.it-ch-lid {
  position: absolute; left: 0; right: 0; top: 3px; height: 22px; z-index: 3; transform-origin: 18% 100%;
  border-radius: 26px 26px 4px 4px / 15px 15px 4px 4px; border: 2px solid #46230d;
  background: linear-gradient(180deg, #c98547, #8f5326); box-shadow: inset 0 3px 0 rgba(255,255,255,.2);
}
.it-ch-lid::after { content: ''; position: absolute; top: -2px; bottom: 0; left: 50%; width: 9px; margin-left: -4.5px; border-radius: 4px 4px 0 0; background: linear-gradient(90deg, #c8901a, #ffe27a, #c8901a); }
.it-ch-lock { position: absolute; left: 50%; top: 19px; width: 12px; height: 13px; margin-left: -6px; z-index: 4; border-radius: 3px; background: linear-gradient(180deg, #ffe27a, #d29a12); border: 2px solid #6e4708; }
.it-ch-lock::after { content: ''; position: absolute; left: 50%; top: 3px; width: 3px; height: 5px; margin-left: -1.5px; border-radius: 2px; background: #46230d; }
.it-ch-glow { position: absolute; left: 50%; bottom: 14px; width: 90px; height: 90px; margin-left: -45px; z-index: 0; border-radius: 50%; opacity: 0; background: radial-gradient(circle, var(--tg) 0%, color-mix(in srgb, var(--tc) 70%, transparent) 30%, transparent 68%); }
.it-ch-rays { position: absolute; left: 50%; bottom: 10px; width: 130px; height: 130px; margin-left: -65px; z-index: 0; border-radius: 50%; opacity: 0;
  background: repeating-conic-gradient(from 0deg, color-mix(in srgb, var(--tc) 55%, transparent) 0 9deg, transparent 9deg 24deg);
  -webkit-mask: radial-gradient(circle, #000 25%, transparent 70%); mask: radial-gradient(circle, #000 25%, transparent 70%); }
.it-loot-card.it-open .it-chest { animation: it-chestShake .35s ease-in-out; }
@keyframes it-chestShake { 20% { transform: rotate(-7deg); } 45% { transform: rotate(6deg); } 70% { transform: rotate(-3deg); } }
/* Deckel klappt nach hinten auf: springt hoch, kippt weg und zeigt seine dunkle Innenseite */
.it-loot-card.it-open .it-ch-lid { animation: it-lidOpen .55s cubic-bezier(.3,1.4,.5,1) forwards; }
@keyframes it-lidOpen {
  0% { transform: none; filter: none; }
  40% { transform: translateY(-20px) scaleY(.85) rotate(-6deg); filter: none; }
  100% { transform: translateY(-17px) scaleY(.42); filter: brightness(.55) saturate(.8); }
}
.it-loot-card.it-open .it-ch-lock { animation: it-lockPop .5s ease-out forwards; }
@keyframes it-lockPop { to { transform: translate(14px, 20px) rotate(70deg); opacity: 0; } }
.it-loot-card.it-open .it-ch-glow { animation: it-glowUp .7s .05s ease-out forwards; }
@keyframes it-glowUp { 0% { opacity: 0; transform: scale(.3); } 40% { opacity: 1; transform: scale(1.15); } 100% { opacity: .75; transform: scale(1); } }
.it-loot-card.it-open.it-tier-S .it-ch-rays, .it-loot-card.it-open.it-tier-A .it-ch-rays { animation: it-raysIn .5s .1s ease-out forwards, it-raysSpin 6s linear infinite; }
@keyframes it-raysIn { to { opacity: 1; } }
@keyframes it-raysSpin { to { rotate: 360deg; } }

/* Meine Chancen */
.it-loot-odds { margin: 14px auto 0; max-width: 520px; }
.it-odds-bar { display: flex; height: 8px; border-radius: 999px; overflow: hidden; background: rgba(0,0,0,.3); box-shadow: inset 0 1px 2px rgba(0,0,0,.4); }
.it-odds-bar i { display: block; height: 100%; }
.it-odds-bar i + i { box-shadow: inset 2px 0 0 rgba(27,20,64,.7); }
.it-odds-txt { display: flex; flex-wrap: wrap; justify-content: center; gap: 4px 10px; margin-top: 6px; font-size: 13px; font-weight: 700; color: var(--muted); }
.it-odds-txt .it-ot-lb { color: #fff; }
.it-odds-txt .it-ot-t { white-space: nowrap; }
.it-odds-txt .it-ot-t b { color: var(--tc); font-family: var(--font-display); font-weight: 700; }
.it-odds-txt .it-ot-boost { color: #7ef0ae; white-space: nowrap; }

/* ---------- 🎁 Überraschungskiste ---------- */
#it-present { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; pointer-events: none !important; z-index: 5; }
#it-present.it-out .it-present-card { animation: popOut .4s ease-in forwards; }
.it-present-card {
  --rc: #ffc933; position: relative; width: min(340px, calc(100vw - 32px)); padding: 14px 16px 16px; border-radius: 26px; text-align: center;
  background: radial-gradient(circle at 50% 42%, rgba(255,107,203,.18), transparent 60%), linear-gradient(180deg, rgba(51,40,122,.97), rgba(33,25,84,.97));
  border: 2px solid rgba(255,255,255,.2); box-shadow: 0 24px 70px rgba(0,0,0,.5); animation: popIn .4s cubic-bezier(.2,1.5,.4,1);
}
.it-pc-title { font-family: var(--font-display); font-weight: 700; font-size: 24px; color: var(--primary); line-height: 1.1; }
.it-pc-title small { display: block; font-size: 15px; margin-top: 2px; }
.it-pc-stage { position: relative; height: 176px; margin: 4px 0 2px; }
.it-pc-rays { position: absolute; left: 50%; top: 50%; width: 260px; height: 260px; margin: -130px 0 0 -130px; border-radius: 50%; opacity: 0;
  background: repeating-conic-gradient(from 0deg, color-mix(in srgb, var(--rc) 50%, transparent) 0 10deg, transparent 10deg 26deg);
  -webkit-mask: radial-gradient(circle, #000 20%, transparent 68%); mask: radial-gradient(circle, #000 20%, transparent 68%); }
.it-present-card.it-done .it-pc-rays { animation: it-raysIn .4s ease-out forwards, it-raysSpin 7s linear infinite; }
.it-gift { position: absolute; left: 50%; bottom: 16px; width: 124px; height: 112px; margin-left: -62px; transform-origin: 50% 100%; animation: it-giftWobble 1.25s ease-in-out; }
@keyframes it-giftWobble {
  0% { transform: scale(.6); } 12% { transform: scale(1.05); } 20% { transform: rotate(0); }
  30% { transform: rotate(-4deg); } 40% { transform: rotate(4deg); } 50% { transform: rotate(-6deg) scaleY(.97); } 60% { transform: rotate(7deg); }
  68% { transform: rotate(-9deg) scaleY(.94); } 76% { transform: rotate(10deg); } 84% { transform: rotate(-11deg) scaleY(.92); } 92% { transform: rotate(8deg) scaleY(1.06); } 100% { transform: none; }
}
.it-gift-box { position: absolute; left: 7px; right: 7px; bottom: 0; height: 74px; border-radius: 10px; background: linear-gradient(180deg, #ff6b8a, #d92f57); box-shadow: inset 0 -9px 0 rgba(0,0,0,.16), inset 0 3px 0 rgba(255,255,255,.2), 0 8px 0 rgba(0,0,0,.25); }
.it-gift-ribbon-v { position: absolute; left: 50%; bottom: 0; width: 20px; height: 74px; margin-left: -10px; background: linear-gradient(90deg, #e9b51e, #fff1a8, #e9b51e); }
.it-gift-lid { position: absolute; left: 0; right: 0; bottom: 66px; height: 26px; border-radius: 8px; z-index: 2; background: linear-gradient(180deg, #ff86a1, #ea4268); box-shadow: inset 0 3px 0 rgba(255,255,255,.25), 0 4px 0 rgba(0,0,0,.22); }
.it-gift-lid::before { content: ''; position: absolute; left: 50%; top: 0; bottom: 0; width: 20px; margin-left: -10px; background: linear-gradient(90deg, #e9b51e, #fff1a8, #e9b51e); }
.it-gift-bow { position: absolute; bottom: 20px; width: 38px; height: 26px; border: 8px solid #f2c02c; border-radius: 50%; box-shadow: inset 0 2px 0 rgba(255,255,255,.4); }
.it-gift-bow.it-l { left: 50%; margin-left: -38px; transform: rotate(22deg); }
.it-gift-bow.it-r { left: 50%; margin-left: 0; transform: rotate(-22deg); }
.it-gift-knot { position: absolute; left: 50%; bottom: 18px; width: 16px; height: 16px; margin-left: -8px; border-radius: 50%; background: radial-gradient(circle at 35% 35%, #fff1a8, #e9b51e); }
.it-present-card.it-opened .it-gift-lid { animation: it-lidFly .75s cubic-bezier(.2,.9,.3,1) forwards; }
@keyframes it-lidFly { to { transform: translate(40px, -140px) rotate(48deg); opacity: 0; } }
.it-present-card.it-opened .it-gift { animation: it-giftAway .45s .15s ease-in forwards; }
@keyframes it-giftAway { to { transform: translateY(26px) scale(.7); opacity: 0; } }
.it-pc-bit { position: absolute; left: 50%; top: 58%; width: 8px; height: 12px; margin-left: -4px; border-radius: 2px; z-index: 3; animation: it-bitFly 1.1s cubic-bezier(.15,.75,.35,1) forwards; }
@keyframes it-bitFly { to { transform: translate(var(--dx), var(--dy)) rotate(var(--rot)); opacity: 0; } }
.it-reel {
  position: absolute; left: 50%; top: 30px; width: 116px; height: 116px; margin-left: -58px; z-index: 2; border-radius: 26px; overflow: hidden;
  background: radial-gradient(circle at 50% 45%, #33287a, #120c34); border: 3px solid rgba(255,255,255,.4);
  box-shadow: inset 0 12px 20px rgba(0,0,0,.55), 0 0 0 6px rgba(255,201,51,.22), 0 12px 30px rgba(0,0,0,.45); transform: scale(0);
}
.it-present-card.it-rolling .it-reel { animation: it-reelIn .38s cubic-bezier(.2,1.6,.4,1) forwards; }
@keyframes it-reelIn { to { transform: scale(1); } }
.it-reel-strip { will-change: transform; }
.it-reel-sym { height: 116px; display: flex; align-items: center; justify-content: center; font-size: 64px; line-height: 1; }
.it-reel-shine { position: absolute; inset: 0; pointer-events: none; background: linear-gradient(180deg, rgba(10,6,35,.75) 0%, transparent 28%, transparent 72%, rgba(10,6,35,.75) 100%); }
.it-present-card.it-done .it-reel { animation: none; transform: scale(1); box-shadow: inset 0 12px 20px rgba(0,0,0,.45), 0 0 0 6px var(--rc), 0 0 38px var(--rc), 0 12px 30px rgba(0,0,0,.45); animation: it-reelPop .45s cubic-bezier(.2,1.8,.4,1); }
@keyframes it-reelPop { 40% { transform: scale(1.14); } 100% { transform: scale(1); } }
.it-present-card.it-out-hole .it-reel { background: radial-gradient(circle at 50% 50%, #000, #2a1460 70%); }
.it-present-card.it-out-hole .it-reel-sym:last-child { animation: it-holeSpin 1.4s linear infinite; }
@keyframes it-holeSpin { to { transform: rotate(-360deg) scale(.95); } }
.it-pc-legend { display: flex; justify-content: center; gap: 6px; flex-wrap: wrap; margin-bottom: 6px; }
.it-pc-legend span { font-size: 12.5px; font-weight: 800; color: var(--muted); padding: 3px 9px; border-radius: 999px; background: rgba(255,255,255,.06); border: 1.5px solid rgba(255,255,255,.1); transition: all .3s; }
.it-present-card.it-done .it-pc-legend span.it-hit { color: #fff; background: color-mix(in srgb, var(--rc) 45%, transparent); border-color: var(--rc); transform: scale(1.08); }
.it-present-card.it-done .it-pc-legend span:not(.it-hit) { opacity: .45; }
.it-pc-result { min-height: 46px; opacity: 0; }
.it-present-card.it-done .it-pc-result { animation: it-resultIn .45s cubic-bezier(.2,1.6,.4,1) forwards; }
@keyframes it-resultIn { from { opacity: 0; transform: translateY(10px) scale(.85); } to { opacity: 1; transform: none; } }
.it-pc-result b { display: block; font-family: var(--font-display); font-weight: 700; font-size: 25px; color: #fff; text-shadow: 0 3px 0 rgba(0,0,0,.35), 0 0 18px var(--rc); }
.it-pc-result small { display: block; color: #e6e0ff; font-weight: 700; font-size: 14px; margin-top: 2px; }

/* ---------- 🕹️ Minispiel wählen (Prompt) ---------- */
.it-mgpick-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
.it-mgpick-card {
  position: relative; display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 14px 10px 12px; border-radius: 16px; cursor: pointer;
  background: rgba(255,255,255,.07); border: 2px solid rgba(255,255,255,.13); color: #fff; font-family: var(--font); text-align: center;
  transition: transform .14s, border-color .14s, background .14s; animation: it-cardIn .35s cubic-bezier(.2,1.5,.4,1) both;
}
.it-mgpick-card:hover { transform: translateY(-3px); border-color: var(--primary); background: rgba(255,201,51,.12); }
.it-mgpick-card .it-ic { font-size: 40px; line-height: 1.1; filter: drop-shadow(0 3px 2px rgba(0,0,0,.35)); }
.it-mgpick-card b { font-family: var(--font-display); font-weight: 600; font-size: 18px; }
.it-mgpick-card small { color: var(--muted); font-size: 12.5px; line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.it-mgpick-card .it-k { position: absolute; top: 8px; left: 8px; width: 22px; height: 22px; border-radius: 7px; display: grid; place-items: center; font: 800 12px/1 var(--font); background: rgba(255,255,255,.12); color: var(--muted); }

/* ---------- Handy (Hochformat) ---------- */
@media (max-width: 720px) {
  /* Unten links ist neben Runde und Pokal kein Platz (Chat-Knöpfe) – Chip schwebt rechts über den Knöpfen */
  #hud-top .it-mods-pill { position: fixed; right: 10px; bottom: 132px; font-size: 13px; padding: 5px 10px; }
  #hud-top .it-mods-pill .it-mp-lb { display: none; }
  #hud-top .it-mods-pill .it-mp-ic { margin-right: 3px; }
  .it-mods-pop { top: auto; bottom: 104px; left: 8px; right: 8px; transform: none; width: auto; max-height: 60vh; }
  .it-mods-intro { top: calc(33% + 110px); padding: 10px 12px 12px; }
  .it-mods-intro .it-mi-chip { font-size: 12.5px; padding: 4px 9px 4px 6px; }
  .it-loot-panel { padding: 12px 10px 14px; border-radius: 22px; }
  .it-lh-title { font-size: 23px; }
  .it-lh-sub { font-size: 12.5px; }
  .it-loot-row, .it-loot-panel.it-many .it-loot-row { gap: 7px; }
  .it-loot-card, .it-loot-panel.it-many .it-loot-card { width: calc(25% - 6px); min-width: 74px; padding: 7px 4px 8px; border-radius: 14px; }
  .it-lc-top canvas { display: none; }
  .it-lc-place { top: -8px; left: -6px; width: 20px; height: 20px; line-height: 20px; font-size: 10px; }
  .it-lc-pn { font-size: 11.5px; text-align: center; max-width: 100%; }
  .it-lc-stage { height: 74px; }
  .it-chest { transform: scale(.82); transform-origin: 50% 100%; animation: none; }
  .it-loot-card.it-open .it-chest { animation: none; }
  .it-lc-item { font-size: 30px; bottom: 20px; }
  .it-lc-name { font-size: 11.5px; }
  .it-lc-name.it-long { font-size: 10px; letter-spacing: -.3px; }
  .it-lc-tag .it-tier-badge { font-size: 11px; height: 18px; min-width: 20px; padding: 0 5px; }
  .it-lc-tag .it-tn { display: none; } /* schmale Karte: nur der Rangbuchstabe in Rangfarbe */
  .it-lc-full { font-size: 10px; }
  .it-odds-txt { font-size: 11.5px; gap: 2px 7px; }
  .it-pc-stage { height: 170px; }
  .it-mgpick-card { padding: 10px 6px 10px; }
  .it-mgpick-card .it-ic { font-size: 32px; }
  .it-mgpick-card b { font-size: 15px; }
  .it-mgpick-card .it-k { display: none; }
  .item-btn.it-tiered .it-tl { width: 17px; height: 17px; font-size: 10px; top: -6px; right: -6px; }
  .item-btn.it-tiered { max-width: 104px; min-width: 0; flex: 0 1 104px; }
  .item-btn.it-tiered .nm { line-height: 1.1; text-align: center; hyphens: manual; }
}
@media (hover: none) { .it-mgpick-card .it-k { display: none; } }

/* ===== account.css ===== */
/* ==========================================================================
   Konto, Profil, Erfolge, Abzeichen & Freunde (public/js/account/*)
   Passt zum Nachtthema aus style.css: Fredoka für Überschriften/Knöpfe, Nunito für Text,
   Karten mit Glas-Optik, gelb = Hauptaktion, grün = „Gut“.
   ========================================================================== */

/* ---------- Grundbausteine ---------- */
.ai { display: inline-grid; place-items: center; width: 1.15em; height: 1.15em; flex: none; line-height: 0; }
.ai svg { width: 100%; height: 100%; }
.btn .ai { margin-right: 6px; vertical-align: -0.16em; }
.btn.btn-small .ai { margin-right: 4px; }

.acc-iconbtn {
  display: inline-grid; place-items: center; width: 38px; height: 38px; flex: none; padding: 0; border-radius: 12px;
  border: 1.5px solid rgba(255,255,255,.16); background: rgba(16,11,44,.55); color: #fff; cursor: pointer;
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); transition: background .15s, border-color .15s, transform .12s;
}
.acc-iconbtn .ai { width: 19px; height: 19px; }
.acc-iconbtn:hover { background: rgba(255,255,255,.14); border-color: rgba(255,255,255,.3); }
.acc-iconbtn:active { transform: scale(.94); }
:is(.acc-iconbtn, .accw-chip, .accw-friends, .accw-login, .pf-chip, .pf-pick, .pf-bgcard, .pf-poolit, .pf-slot, .fr-row, .acc-tab, .accw-mi, .fr-menu-it, .pf-collector.link):focus-visible {
  outline: 3px solid rgba(255,201,51,.75); outline-offset: 2px;
}

.acc-spin { display: inline-block; width: 18px; height: 18px; border-radius: 50%; border: 3px solid rgba(255,255,255,.18); border-top-color: var(--primary); animation: accSpin .8s linear infinite; flex: none; }
.acc-spin.big { width: 34px; height: 34px; border-width: 4px; }
@keyframes accSpin { to { transform: rotate(360deg); } }

.acc-bar { display: block; flex: 1; height: 8px; border-radius: 99px; background: rgba(0,0,0,.32); overflow: hidden; box-shadow: inset 0 1px 2px rgba(0,0,0,.35); }
.acc-bar i { display: block; height: 100%; border-radius: inherit; transform-origin: left; background: linear-gradient(90deg, #ffe066, var(--primary)); box-shadow: inset 0 -2px 0 rgba(0,0,0,.18); transition: transform .6s cubic-bezier(.3,1.2,.5,1); }
.acc-bar.thin { height: 5px; }

.acc-bust { display: block; border-radius: 50%; }

/* ---------- Abzeichen (SVG-Embleme aus badges.js) ---------- */
.acc-badge { display: inline-block; flex: none; vertical-align: middle; filter: drop-shadow(0 2px 2px rgba(0,0,0,.35)); }
.acc-badge svg { display: block; width: 100%; height: 100%; overflow: visible; }
.acc-badge.glow { filter: drop-shadow(0 0 5px var(--bglow)) drop-shadow(0 2px 2px rgba(0,0,0,.35)); }
.acc-badge.locked { opacity: .55; filter: none; }

/* ---------- Erfolgs-Medaillen (Stufenfarben) ---------- */
.acc-medal {
  --ms: 52px; position: relative; flex: none; width: var(--ms); height: var(--ms); border-radius: 50%; display: grid; place-items: center;
  background: conic-gradient(from 210deg, var(--m1), var(--m2) 25%, var(--m3) 45%, var(--m2) 70%, var(--m1));
  box-shadow: 0 3px 0 rgba(0,0,0,.32), 0 0 0 1.5px rgba(0,0,0,.25), inset 0 0 0 2px rgba(255,255,255,.35);
}
.acc-medal-in {
  width: 74%; height: 74%; border-radius: 50%; display: grid; place-items: center; line-height: 1;
  background: radial-gradient(circle at 50% 30%, var(--m4), var(--m5) 75%); box-shadow: inset 0 2px 5px rgba(0,0,0,.45), 0 0 0 1.5px rgba(255,255,255,.25);
  font-size: calc(var(--ms) * .4); font-family: var(--font-display); font-weight: 700; color: #fff; text-shadow: 0 2px 2px rgba(0,0,0,.35);
}
.acc-medal::after { content: ''; position: absolute; inset: 5% 20% 54% 20%; border-radius: 50%; background: linear-gradient(180deg, rgba(255,255,255,.6), rgba(255,255,255,0)); pointer-events: none; }
.t-bronze { --tc: #eb9a5c; --m1: #f6bf8e; --m2: #b5652d; --m3: #ffe0c2; --m4: #8a4a22; --m5: #3f1f0b; }
.t-silver { --tc: #dbe4f5; --m1: #f4f7fd; --m2: #8f9cb6; --m3: #ffffff; --m4: #56617d; --m5: #262d48; }
.t-gold { --tc: #ffc933; --m1: #ffe680; --m2: #d18c00; --m3: #fff6c9; --m4: #946000; --m5: #4a2e00; }
.t-platinum { --tc: #b9f3ff; --m1: #d3f8ff; --m2: #8f7bff; --m3: #ffc2ee; --m4: #3c3a8a; --m5: #16144a; }
.acc-medal.locked { filter: grayscale(1) brightness(.62); }
.acc-medal.locked .acc-medal-in { color: rgba(255,255,255,.7); }
.acc-medal-lock {
  position: absolute; right: -3px; bottom: -3px; width: 42%; height: 42%; padding: 3px; border-radius: 50%;
  background: #2a2160; border: 1.5px solid rgba(255,255,255,.3); color: #ddd8ff; z-index: 1;
}

/* ---------- Panel-Ebene ---------- */
#acc-layer { position: fixed; inset: 0; z-index: 56; pointer-events: none; }
.acc-back {
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; padding: 16px;
  background: rgba(10,6,35,.62); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); pointer-events: auto; animation: accFade .2s ease-out;
}
.acc-back.under { visibility: hidden; }
.acc-back.out { animation: accFadeOut .18s ease-in forwards; pointer-events: none; }
.acc-panel {
  position: relative; width: min(720px, 100%); max-height: calc(100vh - 32px); max-height: calc(100dvh - 32px);
  display: flex; flex-direction: column; overflow: hidden; color: #fff;
  background: linear-gradient(180deg, #34297d 0%, #271e62 55%, #221a55 100%); border: 2px solid rgba(255,255,255,.16); border-radius: 26px;
  box-shadow: 0 30px 90px rgba(0,0,0,.6), inset 0 1px 0 rgba(255,255,255,.1); animation: accPop .34s cubic-bezier(.2,1.35,.4,1);
}
.acc-back.out .acc-panel { animation: accPopOut .18s ease-in forwards; }
@keyframes accFade { from { opacity: 0; } }
@keyframes accFadeOut { to { opacity: 0; } }
@keyframes accPop { from { transform: translateY(18px) scale(.94); opacity: 0; } }
@keyframes accPopOut { to { transform: translateY(10px) scale(.97); opacity: 0; } }
@keyframes accShake { 20%, 60% { transform: translateX(-6px); } 40%, 80% { transform: translateX(6px); } }

/* Tabs mit gleitender Markierung */
.acc-tabs { position: relative; display: flex; gap: 2px; padding: 4px; border-radius: 15px; background: rgba(0,0,0,.25); flex: none; }
.acc-tab {
  position: relative; z-index: 1; flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-width: 0;
  padding: 9px 10px; border: 0; border-radius: 11px; background: none; color: var(--muted); cursor: pointer;
  font: 600 15.5px var(--font-display); white-space: nowrap; transition: color .2s;
}
.acc-tab small { font: 800 11.5px var(--font); padding: 2px 7px; border-radius: 99px; background: rgba(255,255,255,.1); color: inherit; }
.acc-tab:hover { color: #fff; }
.acc-tab.sel { color: #1b1440; }
.acc-tab.sel small { background: rgba(27,20,64,.14); }
.acc-tab.dot::after { content: ''; position: absolute; top: 7px; right: 9px; width: 8px; height: 8px; border-radius: 50%; background: var(--danger); box-shadow: 0 0 0 2px #2a2160; }
.acc-tabs-ink {
  position: absolute; z-index: 0; top: 4px; bottom: 4px; left: 0; width: 0; border-radius: 11px;
  background: linear-gradient(180deg, #ffe066, var(--primary)); box-shadow: 0 3px 0 rgba(0,0,0,.22);
  transition: transform .32s cubic-bezier(.3,1.3,.5,1), width .32s cubic-bezier(.3,1.3,.5,1);
}

/* Formularfelder mit Live-Status */
.acc-field { margin-bottom: 12px; }
.acc-flabel { display: flex; justify-content: space-between; align-items: baseline; margin: 0 2px 6px; font-size: 12.5px; font-weight: 800; color: var(--muted); text-transform: uppercase; letter-spacing: .8px; }
.acc-inwrap { position: relative; }
.acc-input { padding-right: 42px; }
.acc-input::-ms-reveal, .acc-input::-ms-clear { display: none; }
.acc-inwrap.has-eye .acc-input { padding-right: 78px; }
.acc-fstat { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); display: grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; pointer-events: none; }
.acc-inwrap.has-eye .acc-fstat { right: 46px; }
.acc-field.ok .acc-fstat { background: var(--good); color: #0d3b22; }
.acc-field.ok .acc-fstat .ai { width: 14px; height: 14px; }
.acc-field.err .acc-fstat { background: var(--danger); color: #fff; font: 800 13px var(--font); }
.acc-field.busy .acc-fstat { border: 3px solid rgba(255,255,255,.2); border-top-color: var(--primary); animation: accSpin .8s linear infinite; width: 18px; height: 18px; }
.acc-field.ok .acc-input { border-color: rgba(51,209,122,.65); }
.acc-field.err .acc-input { border-color: rgba(255,77,94,.75); }
.acc-eye { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); width: 36px; height: 36px; border: 0; border-radius: 10px; background: transparent; color: var(--muted); cursor: pointer; display: grid; place-items: center; }
.acc-eye:hover { color: #fff; background: rgba(255,255,255,.08); }
.acc-eye .ai { width: 20px; height: 20px; }
.acc-fhint { min-height: 18px; margin: 5px 2px 0; font-size: 12.5px; line-height: 1.35; color: var(--muted); }
.acc-fhint:empty { min-height: 0; margin: 0; }
.acc-field.err .acc-fhint { color: #ff9aa5; font-weight: 700; }
.acc-field.ok .acc-fhint { color: #9ff0c2; }
textarea.acc-input { resize: none; line-height: 1.4; font-family: var(--font); font-size: 15.5px; font-weight: 700; padding-right: 14px; user-select: text; -webkit-user-select: text; }
.btn.is-busy { color: transparent !important; }
.btn.is-busy::after { content: ''; position: absolute; left: 50%; top: 50%; width: 18px; height: 18px; margin: -9px 0 0 -9px; border-radius: 50%; border: 3px solid rgba(27,20,64,.25); border-top-color: #1b1440; animation: accSpin .8s linear infinite; }
.btn-secondary.is-busy::after, .btn-danger.is-busy::after, .btn-ghost.is-busy::after { border-color: rgba(255,255,255,.25); border-top-color: #fff; }

/* Rückfrage */
.acc-confirm-panel { width: min(400px, 100%); }
.acc-confirm { padding: 24px 22px 20px; text-align: center; }
.acc-confirm h3 { font: 600 23px var(--font-display); margin: 0 0 8px; }
.acc-confirm p { margin: 0 0 18px; color: #ddd8ff; line-height: 1.45; }
.acc-confirm-actions { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; }

/* ==========================================================================
   Anmelden / Registrieren
   ========================================================================== */
.au-panel { width: min(440px, 100%); }
.au { display: flex; flex-direction: column; overflow-y: auto; overscroll-behavior: contain; padding: 18px 22px 20px; }
.au-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.au-brand { display: flex; align-items: center; gap: 12px; }
.au-headr { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
@media (max-width: 400px) { .au-headr .lang-sw-ic { display: none; } }
.au-kicker { font: 800 11.5px var(--font); letter-spacing: 1.4px; text-transform: uppercase; color: #c9b8ff; }
.au-title { font: 700 26px/1.05 var(--font-display); color: var(--primary); text-shadow: 0 3px 0 #7a2a9a; }
.au-reason { display: flex; gap: 10px; align-items: flex-start; padding: 10px 12px; margin-bottom: 14px; border-radius: 13px; background: rgba(255,201,51,.12); border: 1px solid rgba(255,201,51,.35); font-size: 14px; line-height: 1.35; color: #ffe8a8; font-weight: 700; }
.au-reason .ai { width: 18px; height: 18px; color: var(--primary); margin-top: 1px; }
.au-tabs { margin-bottom: 16px; }
.au-form { display: flex; flex-direction: column; }
.au-form.shake { animation: accShake .4s; }
.au-err { min-height: 0; color: #ff9aa5; font-weight: 800; font-size: 14px; text-align: center; margin: 0 0 10px; }
.au-err:empty { display: none; }
.au-submit { margin-top: 4px; }
.au-switch { text-align: center; margin-top: 14px; font-size: 14px; color: var(--muted); font-weight: 700; }
.au-link, .pf-link { border: 0; background: none; padding: 0; color: var(--primary); font: inherit; font-weight: 800; cursor: pointer; text-decoration: underline; text-decoration-color: rgba(255,201,51,.4); text-underline-offset: 3px; }
.au-link:hover, .pf-link:hover { text-decoration-color: var(--primary); }
.au-or { display: flex; flex-direction: column; align-items: center; gap: 8px; margin-top: 14px; }
.au-or > span { display: flex; align-items: center; gap: 10px; width: 100%; font-size: 12px; font-weight: 800; color: rgba(185,177,230,.7); text-transform: uppercase; letter-spacing: 1px; }
.au-or > span::before, .au-or > span::after { content: ''; flex: 1; height: 1px; background: rgba(255,255,255,.12); }
.au-guest { border: 0; background: none; color: #ddd8ff; font: 600 15px var(--font-display); cursor: pointer; padding: 6px 12px; border-radius: 10px; }
.au-guest:hover { background: rgba(255,255,255,.07); color: #fff; }
.au-perks { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-bottom: 16px; }
.au-perk { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 10px 6px 9px; border-radius: 14px; background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.08); text-align: center; }
.au-perk-ic { height: 26px; display: grid; place-items: center; font-size: 21px; line-height: 1; }
.au-perk b { font: 600 14px var(--font-display); }
.au-perk small { font-size: 11px; color: var(--muted); font-weight: 700; line-height: 1.2; }
.au-meter { display: grid; grid-template-columns: repeat(4, 1fr) auto; gap: 4px; align-items: center; margin: 7px 2px 0; }
.au-meter i { height: 4px; border-radius: 4px; background: rgba(255,255,255,.12); transition: background .2s; }
.au-meter span { min-width: 54px; text-align: right; font-size: 11.5px; font-weight: 800; color: var(--muted); }
.au-meter[data-s="1"] i:nth-child(-n+1) { background: #ff8a95; }
.au-meter[data-s="2"] i:nth-child(-n+2) { background: #ffb347; }
.au-meter[data-s="3"] i:nth-child(-n+3) { background: #ffe066; }
.au-meter[data-s="4"] i:nth-child(-n+4) { background: var(--good); }
.au-meter[data-s="0"] { visibility: hidden; }

/* Feier nach der Registrierung */
.cel-panel .acc-panel, .acc-panel.cel-panel { overflow: hidden; }
.cel { position: relative; display: flex; flex-direction: column; align-items: center; text-align: center; padding: 22px 22px 22px; overflow: hidden; }
.cel > .acc-close { position: absolute; top: 14px; right: 14px; z-index: 3; }
.cel-stage { position: relative; width: 210px; height: 190px; display: grid; place-items: center; margin-top: 4px; }
.cel-rays {
  position: absolute; left: 50%; top: 50%; width: 360px; height: 360px; margin: -180px 0 0 -180px; border-radius: 50%; opacity: .55;
  background: repeating-conic-gradient(from 0deg, rgba(255,214,102,.5) 0 7deg, transparent 7deg 20deg);
  -webkit-mask: radial-gradient(circle, #000 18%, transparent 68%); mask: radial-gradient(circle, #000 18%, transparent 68%);
  animation: celSpin 16s linear infinite, accFade 1s ease-out;
}
.cel-badge { position: relative; animation: celBadge .9s cubic-bezier(.2,1.6,.4,1) .1s backwards; filter: drop-shadow(0 10px 18px rgba(0,0,0,.45)) drop-shadow(0 0 22px rgba(183,155,255,.55)); }
@keyframes celSpin { to { transform: rotate(360deg); } }
@keyframes celBadge { 0% { transform: scale(.2) rotate(-40deg); opacity: 0; } 70% { transform: scale(1.08) rotate(6deg); opacity: 1; } 100% { transform: none; } }
.cel-kicker { margin-top: 2px; font: 800 12px var(--font); letter-spacing: 1.6px; text-transform: uppercase; color: #9ff0c2; }
.cel-title { margin: 4px 0 8px; font: 700 30px/1.1 var(--font-display); }
.cel-title span { color: var(--primary); }
.cel-sub { margin: 0 0 14px; color: #ddd8ff; line-height: 1.45; max-width: 360px; }
.cel-chips { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin-bottom: 12px; }
.cel-chip { display: inline-flex; align-items: center; gap: 8px; padding: 6px 12px 6px 7px; border-radius: 99px; background: rgba(160,107,255,.2); border: 1px solid rgba(201,184,255,.45); font-weight: 800; font-size: 13.5px; animation: popIn .5s cubic-bezier(.2,1.6,.4,1) .6s backwards; }
.cel-chip.gold { background: rgba(255,201,51,.16); border-color: rgba(255,201,51,.5); color: #ffe8a8; animation-delay: .8s; }
.cel-chip-ic { font-size: 17px; line-height: 1; }
.cel-note { margin: 0 0 18px; font-size: 13.5px; color: var(--muted); }
.cel-actions { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; }
.cel-confetti { position: absolute; inset: 0; pointer-events: none; z-index: 2; }
.cel-confetti i { position: absolute; top: -14px; width: 8px; height: 13px; border-radius: 2px; opacity: 0; animation: celFall 2.8s cubic-bezier(.3,.6,.5,1) forwards; }
@keyframes celFall { 0% { opacity: 1; transform: translate(0, 0) rotate(0); } 85% { opacity: 1; } 100% { opacity: 0; transform: translate(var(--dx), 560px) rotate(var(--r)); } }

/* ==========================================================================
   Profil
   ========================================================================== */
.pf-panel { width: min(760px, 100%); height: min(880px, calc(100vh - 32px)); height: min(880px, calc(100dvh - 32px)); }
.pf { position: relative; display: flex; flex-direction: column; flex: 1; min-height: 0; }
.pf-top { position: absolute; z-index: 6; top: 0; left: 0; right: 0; padding: 12px; display: flex; align-items: center; gap: 8px; pointer-events: none; transition: background .2s, box-shadow .2s; }
.pf.scrolled > .pf-top { background: rgb(37,28,94); box-shadow: 0 8px 20px rgba(14,9,44,.45); pointer-events: auto; }
.pf-toptitle { min-width: 0; font: 600 18px var(--font-display); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; opacity: 0; transform: translateY(4px); transition: opacity .2s, transform .2s; }
.pf.scrolled .pf-toptitle { opacity: 1; transform: none; }
.pf-top > * { pointer-events: auto; }
.pf-top > span:first-child { pointer-events: none; }
.pf-grow { flex: 1; }
.pf-editbtn {
  display: inline-flex; align-items: center; gap: 7px; height: 38px; padding: 0 14px 0 12px; border-radius: 12px;
  border: 1.5px solid rgba(255,255,255,.2); background: rgba(16,11,44,.6); color: #fff; font: 600 15px var(--font-display); cursor: pointer;
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); transition: background .15s, border-color .15s;
}
.pf-editbtn .ai { width: 16px; height: 16px; }
.pf-editbtn:hover { background: rgba(255,201,51,.25); border-color: var(--primary); }
.pf-scroll { flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; scrollbar-color: rgba(255,255,255,.2) transparent; padding-bottom: 22px; }
.pf-scroll.edit { padding-bottom: 12px; }

.pf-hero { position: relative; height: 262px; flex: none; }
.pf-hero > .pf-bg { position: absolute; left: 0; right: 0; top: 0; height: 158px; }
.pf-hero-fade { position: absolute; left: 0; right: 0; top: 98px; height: 62px; background: linear-gradient(180deg, rgba(52,41,125,0), #34297d); pointer-events: none; }
.pf-id { position: absolute; left: 22px; right: 22px; bottom: 0; display: flex; align-items: flex-end; gap: 16px; }
.pf-av { position: relative; flex: none; width: 124px; height: 142px; filter: drop-shadow(0 8px 10px rgba(0,0,0,.4)); }
.pf-av::before { content: ''; position: absolute; left: 10px; right: 10px; bottom: 2px; height: 16px; border-radius: 50%; background: radial-gradient(closest-side, rgba(0,0,0,.4), transparent); }
.pf-av canvas { position: relative; display: block; }
.pf-lv {
  position: absolute; right: -4px; bottom: 8px; min-width: 40px; height: 40px; padding: 0 4px; border-radius: 50%; display: grid; place-content: center; text-align: center;
  background: radial-gradient(circle at 50% 30%, #ffe680, #e6a100); color: #3a2400; border: 3px solid #34297d;
  font: 700 17px/1 var(--font-display); box-shadow: 0 3px 0 rgba(0,0,0,.3);
}
.pf-lv small { display: block; font: 800 8.5px/1 var(--font); letter-spacing: .6px; text-transform: uppercase; margin-bottom: 1px; }
.pf-idtext { min-width: 0; padding-bottom: 6px; }
.pf-strip { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; margin-top: 8px; }
.pf-strip-more { font-size: 12px; font-weight: 800; color: var(--muted); margin-left: 2px; }
.pf-h4note { margin-left: auto; font: 800 12px var(--font); color: var(--muted); }
.pf-namerow { display: flex; align-items: center; gap: 10px; min-width: 0; }
.pf-name { margin: 0; font: 700 30px/1.1 var(--font-display); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; text-shadow: 0 3px 0 rgba(0,0,0,.25); }
.pf-handle { font-weight: 800; color: var(--muted); font-size: 14px; margin-top: 2px; }
.pf-status { display: inline-flex; align-items: center; gap: 7px; margin-top: 6px; font-size: 13.5px; font-weight: 800; color: var(--muted); }
.pf-status .dot { width: 9px; height: 9px; border-radius: 50%; background: #6d6894; flex: none; }
.pf-status.on { color: #c9f7dc; }
.pf-status.on .dot { background: var(--good); animation: livePulse 1.8s ease-out infinite; }
.pf-status.k-game { color: #ffd1a8; }
.pf-status.k-fishing { color: #b3e3ff; }

.pf-info { display: flex; gap: 14px 18px; align-items: flex-start; justify-content: space-between; padding: 14px 22px 4px; flex-wrap: wrap; }
.pf-info-main { flex: 1 1 300px; min-width: 0; }
.pf-bio { margin: 0 0 8px; padding: 9px 13px; border-radius: 14px; background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.08); line-height: 1.45; color: #efeaff; font-size: 15px; overflow-wrap: anywhere; }
.pf-bio.empty { color: var(--muted); font-size: 14px; background: none; border-style: dashed; }
.pf-meta { display: inline-flex; align-items: center; gap: 7px; color: var(--muted); font-size: 13px; font-weight: 800; }
.pf-meta .ai { width: 15px; height: 15px; }
.pf-metas { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 18px; }
.pf-collector b { color: #fff; font-weight: 800; }
.pf-collector.link { border: 0; background: none; padding: 0; cursor: pointer; font-family: var(--font); transition: color .15s; }
.pf-collector.link:hover { color: #fff; }
.pf-collector.link:hover b { color: var(--primary); }
.pf-rel { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; justify-content: flex-end; }
.pf-relchip { display: inline-flex; align-items: center; gap: 6px; padding: 7px 12px; border-radius: 11px; background: rgba(255,255,255,.08); color: #ddd8ff; font: 600 14px var(--font-display); }
.pf-relchip .ai { width: 15px; height: 15px; }
.pf-relchip.ok { background: rgba(51,209,122,.16); color: #9ff0c2; }
.pf-rm { width: 34px; height: 34px; border-radius: 11px; color: #ffb3bb; }
.pf-rm:hover { background: rgba(255,77,94,.2); border-color: rgba(255,77,94,.55); }

.pf-tabs { margin: 14px 22px 0; position: sticky; top: 64px; z-index: 4; box-shadow: 0 8px 18px rgba(20,14,60,.55); background: rgba(31,23,78,.92); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); }
.pf-body { padding: 14px 22px 0; }
.pf-card { border-radius: 18px; background: rgba(255,255,255,.055); border: 1px solid rgba(255,255,255,.09); padding: 14px 16px 16px; }
.pf-card h4 { display: flex; align-items: center; gap: 8px; margin: 0 0 12px; font: 600 16.5px var(--font-display); }
.pf-card h4 .ai { width: 18px; height: 18px; color: var(--primary); }
.pf-empty { margin: 4px 0; color: var(--muted); font-size: 14px; font-weight: 700; }
.pf-empty.wide { grid-column: 1 / -1; text-align: center; padding: 20px 0; }
.pf-note { margin: 14px 2px 0; color: var(--muted); font-size: 13px; text-align: center; }

/* Übersicht */
.pf-tiles { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-bottom: 14px; }
.pf-tile { display: grid; grid-template-columns: auto 1fr; grid-template-rows: auto auto; column-gap: 10px; align-items: center; padding: 11px 12px; border-radius: 16px; background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.08); min-width: 0; }
.pf-tile-ic { grid-row: span 2; width: 36px; height: 36px; border-radius: 11px; display: grid; place-items: center; font-size: 19px; background: rgba(0,0,0,.24); }
.pf-tile b { font: 700 22px/1.05 var(--font-display); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pf-tile small { font-size: 11.5px; color: var(--muted); font-weight: 800; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pf-cols { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: 12px; align-items: start; }
.pf-cols.b { margin-top: 12px; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.pf-cols.b > :only-child { grid-column: 1 / -1; }
.pf-badgegrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(64px, 1fr)); gap: 8px 4px; }
.pf-bitem { display: flex; flex-direction: column; align-items: center; gap: 5px; text-align: center; min-width: 0; }
.pf-bitem small { font-size: 11px; font-weight: 800; line-height: 1.15; color: #ddd8ff; overflow-wrap: anywhere; }
.pf-bitem.locked small { color: rgba(185,177,230,.55); }
.pf-slots { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.pf-slot {
  display: flex; flex-direction: column; align-items: center; justify-content: flex-start; gap: 6px; min-width: 0; min-height: 112px; padding: 10px 6px 9px;
  border-radius: 15px; background: rgba(0,0,0,.2); border: 1px solid rgba(255,255,255,.07); text-align: center; color: #fff; font-family: var(--font);
}
.pf-slot b { font: 600 13px/1.15 var(--font-display); overflow-wrap: anywhere; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.pf-slot small { font-size: 10.5px; font-weight: 800; color: var(--muted); text-transform: uppercase; letter-spacing: .6px; margin-top: auto; }
.pf-slot.ach { background: radial-gradient(circle at 50% 28%, color-mix(in srgb, var(--tc) 22%, transparent), rgba(0,0,0,.2) 70%); }
.pf-slot.ach small { color: var(--tc); }
.pf-slot.badge { background: radial-gradient(circle at 50% 28%, rgba(183,155,255,.2), rgba(0,0,0,.2) 70%); }
.pf-slot.empty { justify-content: center; min-height: 92px; border: 2px dashed rgba(255,255,255,.14); background: transparent; color: var(--muted); cursor: pointer; }
.pf-slot.empty .plus { font: 600 26px/1 var(--font-display); color: rgba(255,255,255,.35); }
button.pf-slot.empty:hover { border-color: rgba(255,201,51,.55); color: #fff; }
button.pf-slot.empty:hover .plus { color: var(--primary); }
.pf-catchbox { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 8px; }
.pf-fishpic { width: 100%; max-width: 230px; aspect-ratio: 220 / 130; display: grid; place-items: center; border-radius: 16px; background: radial-gradient(ellipse at 50% 60%, color-mix(in srgb, var(--fc) 30%, transparent), transparent 70%), rgba(0,0,0,.2); }
.pf-fishpic svg { width: 78%; filter: drop-shadow(0 6px 8px rgba(0,0,0,.35)); }
.pf-fishpic canvas { width: 100%; height: 100%; object-fit: contain; filter: drop-shadow(0 6px 8px rgba(0,0,0,.35)); }
.pf-fishpic.secret { background: radial-gradient(ellipse at 50% 55%, rgba(142,243,255,.28), transparent 70%), rgba(0,0,0,.28); }
.pf-fishq { font: 700 54px var(--font-display); color: #8ef3ff; text-shadow: 0 0 18px rgba(142,243,255,.8); }
.pf-fishname { font: 700 19px var(--font-display); }
.pf-rarity { display: inline-block; margin-left: 8px; padding: 2px 9px; border-radius: 99px; font-size: 11.5px; font-weight: 800; vertical-align: 2px; color: #1b1440; background: var(--rc); }
.pf-fishmeta { display: flex; flex-wrap: wrap; justify-content: center; gap: 4px 12px; margin-top: 4px; font-size: 13px; color: var(--muted); font-weight: 700; }
.pf-fishmeta .w { color: #fff; font: 700 17px var(--font-display); }
.pf-heavy { display: flex; justify-content: space-between; gap: 10px; margin-top: 12px; padding: 8px 12px; border-radius: 12px; background: rgba(0,0,0,.2); font-size: 13px; color: var(--muted); font-weight: 800; }
.pf-heavy b { color: #fff; font-family: var(--font-display); font-weight: 600; text-align: right; }
.pf-recent-list .acc-medal { --ms: 38px; }
.pf-recent-list { display: grid; grid-template-columns: 1fr; gap: 7px; }
.pf-recent-it { display: flex; align-items: center; gap: 10px; min-width: 0; padding: 6px 8px; border-radius: 13px; background: rgba(0,0,0,.18); }
.pf-recent-it b { display: block; font: 600 14px var(--font-display); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pf-recent-it small { color: var(--muted); font-size: 12px; font-weight: 700; }
.pf-recent-it > div { min-width: 0; }

/* Erfolge */
.pf-achsum { display: flex; gap: 16px; align-items: center; margin-bottom: 12px; }
.pf-ring { position: relative; width: 88px; height: 88px; flex: none; }
.pf-ring svg { width: 100%; height: 100%; transform: rotate(-90deg); }
.pf-ring circle { fill: none; stroke-width: 8; }
.pf-ring .bgc { stroke: rgba(0,0,0,.3); }
.pf-ring .fgc { stroke: var(--primary); stroke-linecap: round; transition: stroke-dashoffset 1s cubic-bezier(.3,1.1,.5,1); filter: drop-shadow(0 0 4px rgba(255,201,51,.5)); }
.pf-ring-t { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; line-height: 1; }
.pf-ring-t b { font: 700 25px var(--font-display); }
.pf-ring-t small { font-size: 11px; color: var(--muted); font-weight: 800; margin-top: 2px; }
.pf-achsum-main { flex: 1; min-width: 0; }
.pf-achsum-title { font: 700 21px var(--font-display); }
.pf-achsum-sub { color: var(--muted); font-weight: 800; font-size: 13.5px; margin: 2px 0 8px; }
.pf-lvbar { display: flex; align-items: center; gap: 10px; }
.pf-lvbar small { flex: none; color: var(--muted); font-size: 12px; font-weight: 800; }
.pf-tiercount { display: flex; gap: 12px; margin-top: 10px; flex-wrap: wrap; }
.pf-tiercount span { display: inline-flex; align-items: center; gap: 5px; font-size: 14px; }
.pf-tiercount b { font: 700 15px var(--font-display); }
.pf-tiercount small { font-size: 11.5px; font-weight: 800; color: var(--muted); }
.pf-tiercount i { width: 13px; height: 13px; border-radius: 50%; background: conic-gradient(var(--m1), var(--m2), var(--m3), var(--m1)); box-shadow: 0 0 0 1.5px rgba(0,0,0,.3); }
.pf-chips { display: flex; flex-wrap: wrap; gap: 6px; padding: 2px 2px 10px; margin: 0 -2px; scrollbar-width: none; }
.pf-chips::-webkit-scrollbar { display: none; }
.pf-chip {
  flex: none; display: inline-flex; align-items: center; gap: 6px; padding: 7px 12px; border-radius: 99px; cursor: pointer;
  border: 1.5px solid rgba(255,255,255,.15); background: rgba(255,255,255,.05); color: #ddd8ff; font: 700 13.5px var(--font); transition: background .15s, border-color .15s, color .15s;
}
.pf-chip .ci { font-size: 14px; line-height: 1; }
.pf-chip small { font-size: 11px; font-weight: 800; opacity: .75; }
.pf-chip:hover { border-color: rgba(255,255,255,.35); color: #fff; }
.pf-chip.sel { background: rgba(255,201,51,.18); border-color: var(--primary); color: #fff; }
.pf-chip.toggle { margin-left: auto; }
.pf-chip.toggle.sel { background: rgba(51,209,122,.18); border-color: var(--good); }
.pf-achgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 290px), 1fr)); gap: 9px; }
.pf-achcard {
  display: flex; gap: 12px; align-items: flex-start; min-width: 0; padding: 11px 12px; border-radius: 16px;
  background: linear-gradient(100deg, color-mix(in srgb, var(--tc) 14%, rgba(255,255,255,.04)), rgba(255,255,255,.04) 55%);
  border: 1px solid color-mix(in srgb, var(--tc) 35%, transparent); animation: accFade .3s ease-out;
}
.pf-achcard.locked { background: rgba(255,255,255,.035); border-color: rgba(255,255,255,.07); }
.pf-achcard.locked .pf-ach-name b { color: #d6d0f5; }
.pf-ach-text { flex: 1; min-width: 0; }
.pf-ach-name { display: flex; align-items: flex-start; gap: 8px; justify-content: space-between; }
.pf-ach-name b { font: 600 15.5px/1.2 var(--font-display); }
.pf-ach-pts { flex: none; font: 800 11px var(--font); padding: 2px 7px; border-radius: 99px; background: rgba(0,0,0,.25); color: var(--tc); }
.pf-ach-pts::after { content: ' EP'; opacity: .75; }
html[lang='en'] .pf-ach-pts::after { content: ' XP'; } /* Erfahrungspunkte: EP → XP (Glossar) */
.pf-achcard.locked .pf-ach-pts { color: var(--muted); }
.pf-ach-text p { margin: 3px 0 0; font-size: 13px; line-height: 1.35; color: #cfc8f5; }
.pf-achcard.secret p { font-style: italic; color: var(--muted); }
.pf-ach-foot { display: flex; align-items: center; gap: 8px; margin-top: 8px; }
.pf-ach-foot small { flex: none; font-size: 11.5px; font-weight: 800; color: var(--muted); }
.pf-ach-foot.done { color: #9ff0c2; font-size: 12px; font-weight: 800; gap: 5px; }
.pf-ach-foot.done .ai { width: 14px; height: 14px; }

/* Ladeansicht & Fehler */
.pf-skel { display: flex; flex-direction: column; flex: 1; }
.pf-skel-body { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; color: var(--muted); font-weight: 800; padding: 40px 0; }
.pf-skel-body.small { padding: 30px 0; flex-direction: row; }
.pf-error { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 70px 24px 40px; }
.pf-error-ic { font-size: 54px; }
.pf-error h3 { font: 600 24px var(--font-display); margin: 10px 0 4px; }
.pf-error p { color: var(--muted); margin: 0; }

/* Bearbeiten */
.pf-edit { display: flex; flex-direction: column; gap: 12px; padding: 14px 22px 0; }
.pf-sechint { margin: -6px 0 12px; font-size: 13px; color: var(--muted); line-height: 1.4; }
.pf-count { font-size: 12px; font-weight: 800; color: var(--muted); text-transform: none; letter-spacing: 0; }
.pf-count.over { color: #ff9aa5; }
.pf-bioin { min-height: 74px; }
.pf-pickgrid.badges { display: grid; grid-template-columns: repeat(auto-fill, minmax(84px, 1fr)); gap: 8px; }
.pf-pick {
  display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 10px 4px 8px; border-radius: 14px; cursor: pointer; min-width: 0;
  border: 2px solid rgba(255,255,255,.1); background: rgba(0,0,0,.18); color: #fff; font-family: var(--font); transition: border-color .15s, background .15s, transform .15s;
}
.pf-pick small { font-size: 11.5px; font-weight: 800; line-height: 1.15; text-align: center; color: #ddd8ff; overflow-wrap: anywhere; }
.pf-pick:not(:disabled):hover { transform: translateY(-2px); border-color: rgba(255,255,255,.3); }
.pf-pick.sel { border-color: var(--primary); background: rgba(255,201,51,.14); box-shadow: 0 0 0 3px rgba(255,201,51,.15); }
.pf-pick.locked { cursor: not-allowed; }
.pf-pick.locked small { color: var(--muted); }
.pf-none { width: 40px; height: 40px; display: grid; place-items: center; border-radius: 50%; border: 2px dashed rgba(255,255,255,.25); color: var(--muted); font: 700 20px var(--font-display); }
/* Hintergrund-Sammlung (Galerie im Bearbeiten-Modus) */
.pf-bghead { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 8px 14px; margin: -2px 0 12px; }
.pf-bgcount { display: flex; align-items: baseline; gap: 2px; white-space: nowrap; font-family: var(--font-display); }
.pf-bgcount b { font: 700 27px/1 var(--font-display); color: var(--primary); }
.pf-bgcount span { font-size: 16px; font-weight: 600; color: #ddd8ff; }
.pf-bghead .acc-bar { height: 10px; }
.pf-bgrars { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 4px 14px; }
.pf-bgrar { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 800; color: var(--muted); }
.pf-bgrar i { width: 9px; height: 9px; border-radius: 2px; background: var(--rc); transform: rotate(45deg); box-shadow: 0 0 6px color-mix(in srgb, var(--rc) 60%, transparent); }
.pf-bgstage {
  position: sticky; top: 62px; z-index: 3; display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); margin: 0 0 12px; border-radius: 16px; overflow: hidden;
  background: #221a57; border: 2px solid color-mix(in srgb, var(--rc, #b8c4d6) 65%, transparent);
  box-shadow: 0 12px 26px rgba(14,9,44,.55), 0 0 0 4px color-mix(in srgb, var(--rc, #b8c4d6) 12%, transparent); transition: border-color .2s, box-shadow .2s;
}
.pf-bgstage-pic { position: relative; min-height: 150px; }
.pf-bgstage-bg.pbg, .pf-bgstage-bg.pf-bgmystery { position: absolute; inset: 0; }
.pf-bgsec { scroll-margin-top: 66px; }
.pf-bgstage.locked .pf-bgstage-bg { filter: saturate(.8) brightness(.88); }
.pf-bgstage-lock { position: absolute; left: 10px; top: 10px; display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px 4px 8px; border-radius: 99px; background: rgba(10,6,35,.72); color: #fff; font: 800 10.5px var(--font); letter-spacing: .9px; text-transform: uppercase; }
.pf-bgstage-lock .ai { width: 13px; height: 13px; }
.pf-bgstage-info { display: flex; flex-direction: column; gap: 4px; min-width: 0; padding: 12px 14px 13px; background: linear-gradient(160deg, color-mix(in srgb, var(--rc, #b8c4d6) 14%, #261d62), #1d1650); }
.pf-bgtags { display: flex; flex-wrap: wrap; gap: 6px; }
.pf-rarpill, .pf-typepill { padding: 2px 9px; border-radius: 99px; font: 800 10.5px/1.5 var(--font); letter-spacing: .7px; text-transform: uppercase; }
.pf-rarpill { color: #160f3a; background: var(--rc, #b8c4d6); }
.pf-typepill { color: #ddd8ff; background: rgba(255,255,255,.1); }
.pf-bgstage-name { font: 700 20px/1.15 var(--font-display); margin-top: 2px; }
.pf-bgstage-info p { margin: 0; font-size: 13px; line-height: 1.35; color: #cfc8f5; }
.pf-bgstate { display: flex; flex-direction: column; gap: 6px; margin-top: auto; padding-top: 6px; font-size: 13px; font-weight: 800; color: var(--muted); }
.pf-bgstate.ok { flex-direction: row; align-items: center; gap: 6px; color: #9ff0c2; }
.pf-bgstate .ai { width: 15px; height: 15px; flex: none; }
.pf-bgstate-how { display: flex; align-items: flex-start; gap: 6px; color: #ffe8a8; line-height: 1.3; }
.pf-bgstate-how .ai { margin-top: 1px; }
.pf-bgstate-prog { display: flex; align-items: center; gap: 8px; }
.pf-bgstate-prog small { flex: none; color: #fff; font-size: 12px; }
.pf-bgstate-hint { font-weight: 700; line-height: 1.3; }
.pf-bgchips .pf-chip.rar .dot { width: 9px; height: 9px; border-radius: 2px; background: var(--rc); transform: rotate(45deg); }
.pf-bgchips .pf-chip.rar.sel { border-color: var(--rc); background: color-mix(in srgb, var(--rc) 18%, transparent); }
.pf-bggrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 158px), 1fr)); gap: 10px; }
.pf-bgcard {
  position: relative; display: flex; flex-direction: column; min-width: 0; padding: 0; border-radius: 14px; overflow: hidden; cursor: pointer; text-align: left; color: #fff; font-family: var(--font);
  background: #1f1750; border: 2px solid color-mix(in srgb, var(--rc) 70%, transparent); transition: transform .15s, box-shadow .15s, border-color .15s;
  content-visibility: auto; contain-intrinsic-size: auto 150px;
}
.pf-bgcard:hover { transform: translateY(-2px); box-shadow: 0 8px 18px rgba(10,6,35,.45), 0 0 0 3px color-mix(in srgb, var(--rc) 22%, transparent); }
.pf-bgcard.r-epic:not(.locked) { border-color: transparent; background: linear-gradient(#1f1750, #1f1750) padding-box, linear-gradient(135deg, #ecd6ff, #9c6bff 45%, #ff8fd0) border-box; }
.pf-bgcard.r-legendary:not(.locked) { border-color: transparent; background: linear-gradient(#1f1750, #1f1750) padding-box, linear-gradient(135deg, #fff3c4, #ffb83d 40%, #ff7a45 70%, #ffe08a) border-box; }
.pf-bgcard.sel { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(255,201,51,.35), 0 8px 18px rgba(10,6,35,.45); }
.pf-bgcard.sel:is(.r-epic, .r-legendary) { background: linear-gradient(#1f1750, #1f1750) padding-box, linear-gradient(135deg, #fff6c9, var(--primary)) border-box; }
.pf-bgcard.locked { background: #1a1446; border-color: color-mix(in srgb, var(--rc) 30%, rgba(255,255,255,.06)); }
.pf-bgcard.peek { border-color: color-mix(in srgb, var(--rc) 80%, transparent); }
.pf-bgcard-pic { position: relative; display: block; aspect-ratio: 2.15; overflow: hidden; }

.pf-bgcard.locked .pf-bgthumb { filter: grayscale(.75) brightness(.42); }
.pf-bgcard.locked:hover .pf-bgthumb, .pf-bgcard.locked.peek .pf-bgthumb { filter: grayscale(.25) brightness(.75); }

.pf-bgcard.locked:hover .pf-bglock, .pf-bgcard.peek .pf-bglock { opacity: .55; }
.pf-bgcard.mystery .pf-bglock { place-items: end start; padding: 6px; }
.pf-bgcard.mystery .pf-bglock .ai { width: 12px; height: 12px; padding: 5px; }
.pf-bganim { position: absolute; right: 6px; top: 6px; padding: 3px 6px; border-radius: 99px; background: rgba(10,6,35,.62); color: var(--primary); font: 800 11px/1 var(--font); font-style: normal; }
.pf-bgcheck { position: absolute; left: 6px; top: 6px; width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center; background: var(--primary); color: #1b1440; box-shadow: 0 2px 0 rgba(0,0,0,.3); }
.pf-bgcheck .ai { width: 14px; height: 14px; }
.pf-bgnew { position: absolute; left: 6px; top: 6px; padding: 2px 7px; border-radius: 99px; background: var(--good); color: #0d3b22; font: 800 10px/1.5 var(--font); letter-spacing: .7px; text-transform: uppercase; box-shadow: 0 2px 0 rgba(0,0,0,.25); }
.pf-bgcard-meta { display: flex; flex-direction: column; gap: 2px; min-width: 0; padding: 7px 10px 9px; }
.pf-bgcard-meta b { font: 600 14px/1.2 var(--font-display); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pf-bgcard-meta .rar { font-size: 10.5px; font-weight: 800; letter-spacing: .7px; text-transform: uppercase; color: var(--rc); }
.pf-bgcard-meta .how { font-size: 11.5px; font-weight: 700; line-height: 1.25; color: var(--muted); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.pf-bgprog { display: flex; align-items: center; gap: 6px; margin-top: 3px; }
.pf-bgprog small { flex: none; font-size: 10.5px; font-weight: 800; color: #ddd8ff; }
.pf-bgmystery { position: absolute; inset: 0; display: grid; place-items: center; background: radial-gradient(55% 80% at 50% 58%, rgba(142,243,255,.2), transparent 70%), radial-gradient(1px 1px at 18% 28%, #fff, transparent), radial-gradient(1px 1px at 72% 22%, #fff, transparent), radial-gradient(1px 1px at 84% 70%, #fff, transparent), radial-gradient(1px 1px at 30% 76%, #fff, transparent), linear-gradient(180deg, #050b22, #0c1c46); }
.pf-bgmystery b { font: 700 34px/1 var(--font-display); color: #8ef3ff; text-shadow: 0 0 14px rgba(142,243,255,.8); }
.pf-bgstage .pf-bgmystery b { font-size: 56px; }
/* In der Galerie bewegt sich nur die Karte unter dem Zeiger bzw. die gewählte/angetippte */
.pf-bgcard .pbg *, .pf-bgcard .pbg::before, .pf-bgcard .pbg::after, .pf-bgcard .pbg *::before, .pf-bgcard .pbg *::after { animation-play-state: paused !important; }
.pf-bgcard:is(:hover, .sel, .peek) .pbg *, .pf-bgcard:is(:hover, .sel, .peek) .pbg::before, .pf-bgcard:is(:hover, .sel, .peek) .pbg::after,
.pf-bgcard:is(:hover, .sel, .peek) .pbg *::before, .pf-bgcard:is(:hover, .sel, .peek) .pbg *::after { animation-play-state: running !important; }
.pf-bgcard .pbg .pp { will-change: auto; }
@media (prefers-reduced-motion: reduce) {
  .pf-bgcard:is(:hover, .sel, .peek) .pbg *, .pf-bgcard:is(:hover, .sel, .peek) .pbg::before, .pf-bgcard:is(:hover, .sel, .peek) .pbg::after,
  .pf-bgcard:is(:hover, .sel, .peek) .pbg *::before, .pf-bgcard:is(:hover, .sel, .peek) .pbg *::after { animation-play-state: paused !important; }
}

.pf-bgthumb.pbg { position: absolute; inset: 0; transition: filter .25s; }

.pf-bglock { position: absolute; inset: 0; display: grid; place-items: center; color: #fff; transition: opacity .2s; }
.pf-bglock .ai { width: 18px; height: 18px; padding: 7px; box-sizing: content-box; border-radius: 50%; background: rgba(10,6,35,.6); border: 1.5px solid rgba(255,255,255,.22); }

.pf-slots.edit { grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 6px; margin-bottom: 12px; }
.pf-slots.edit .pf-slot { min-height: 94px; padding: 8px 4px; gap: 5px; position: relative; }
.pf-slots.edit .pf-slot b { font-size: 11.5px; }
.pf-slots.edit .pf-slot.empty { cursor: default; }
.pf-slots.edit .pf-slot.empty .plus { font-size: 16px; color: rgba(255,255,255,.22); }
.pf-slot.filled { cursor: pointer; border: 1.5px solid rgba(255,201,51,.4); background: rgba(255,201,51,.08); }
.pf-slot-x { position: absolute; top: 3px; right: 5px; font: 700 15px/1 var(--font-display); color: rgba(255,255,255,.45); }
.pf-slot.filled:hover .pf-slot-x { color: #ff9aa5; }
.pf-pool { display: flex; flex-wrap: wrap; gap: 6px; max-height: 220px; overflow-y: auto; padding: 2px; scrollbar-width: thin; }
.pf-poolit {
  display: inline-flex; align-items: center; gap: 7px; padding: 4px 11px 4px 4px; border-radius: 99px; cursor: pointer; max-width: 100%;
  border: 1.5px solid rgba(255,255,255,.12); background: rgba(0,0,0,.2); color: #ddd8ff; font: 700 13px var(--font); transition: border-color .15s, background .15s;
}
.pf-poolit > span:not(.acc-medal):not(.acc-badge) { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pf-poolit .acc-medal { --ms: 26px; }
.pf-poolit:not(:disabled):hover { border-color: rgba(255,255,255,.35); color: #fff; }
.pf-poolit.sel { border-color: var(--primary); background: rgba(255,201,51,.16); color: #fff; }
.pf-poolit .n { display: grid; place-items: center; min-width: 20px; height: 20px; border-radius: 50%; background: var(--primary); color: #1b1440; font: 700 12px var(--font-display); }
.pf-poolit:disabled { opacity: .4; cursor: not-allowed; }
.pf-details { border-radius: 14px; background: rgba(0,0,0,.18); margin-top: 8px; }
.pf-details summary { display: flex; align-items: center; gap: 9px; padding: 11px 13px; cursor: pointer; font: 600 15px var(--font-display); list-style: none; }
.pf-details summary::-webkit-details-marker { display: none; }
.pf-details summary::after { content: '▾'; margin-left: auto; color: var(--muted); transition: transform .2s; }
.pf-details[open] summary::after { transform: rotate(180deg); }
.pf-details summary .ai { width: 17px; height: 17px; color: var(--muted); }
.pf-details.danger summary { color: #ffb3bb; }
.pf-details.danger summary .ai { color: #ff8a95; }
.pf-form { padding: 2px 13px 14px; display: flex; flex-direction: column; align-items: flex-start; }
.pf-form .acc-field { width: 100%; }
.pf-warn { margin: 0 0 12px; font-size: 13px; color: #ffc2c8; line-height: 1.4; }
.pf-editfoot { flex: none; display: flex; align-items: center; gap: 10px; padding: 12px 22px; border-top: 1px solid rgba(255,255,255,.1); background: rgba(22,16,58,.85); }
.pf-saveerr { color: #ff9aa5; font-weight: 800; font-size: 13.5px; }

/* ==========================================================================
   Freunde
   ========================================================================== */
.fr-panel { width: min(580px, 100%); min-height: min(520px, calc(100vh - 32px)); min-height: min(520px, calc(100dvh - 32px)); }
.fr { display: flex; flex-direction: column; flex: 1; min-height: 0; padding: 18px 20px 0; }
.fr-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.fr-title { display: flex; align-items: center; gap: 10px; min-width: 0; }
.fr-title > .ai { width: 26px; height: 26px; color: var(--primary); }
.fr-title h3 { margin: 0; font: 700 26px var(--font-display); }
.fr-count { font-size: 13px; font-weight: 800; color: var(--muted); white-space: nowrap; }
.fr-add { margin-bottom: 12px; }
.fr-addrow { display: flex; gap: 8px; }
.fr-addrow .input { flex: 1; min-width: 0; font-size: 16px; }
.fr-send { flex: none; }
.fr-msg { font-size: 13px; font-weight: 800; margin: 6px 2px 0; min-height: 0; }
.fr-msg:empty { display: none; }
.fr-msg.err { color: #ff9aa5; }
.fr-msg.ok { color: #9ff0c2; }
.fr-tabs { margin-bottom: 6px; }
.fr-list { flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; margin: 0 -8px; padding: 4px 8px 18px; scrollbar-width: thin; scrollbar-color: rgba(255,255,255,.2) transparent; }
.fr-loading { display: flex; align-items: center; justify-content: center; gap: 10px; padding: 40px 0; color: var(--muted); font-weight: 800; }
.fr-group { margin: 12px 4px 6px; font-size: 12px; font-weight: 800; letter-spacing: 1px; text-transform: uppercase; color: var(--muted); }
.fr-row {
  position: relative; display: grid; grid-template-columns: 48px minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 9px 10px;
  border-radius: 16px; background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.07); margin-bottom: 6px; cursor: pointer;
  transition: background .15s, border-color .15s; animation: accFade .25s ease-out;
}
.fr-row:hover { background: rgba(255,255,255,.09); border-color: rgba(255,255,255,.16); }
.fr-row.on.k-lobby { border-color: rgba(51,209,122,.3); }
.fr-row.on.k-game { border-color: rgba(255,138,61,.28); }
.fr-row.on.k-fishing { border-color: rgba(61,139,255,.32); }
.fr-av { position: relative; width: 48px; height: 48px; border-radius: 50%; display: grid; place-items: center; background: radial-gradient(circle at 50% 40%, rgba(255,255,255,.16), rgba(0,0,0,.2)); }
.fr-row:not(.on):not(.req) .fr-av .acc-bust { filter: grayscale(.6) brightness(.85); }
.fr-dot { position: absolute; right: 0; bottom: 1px; width: 13px; height: 13px; border-radius: 50%; background: #6d6894; border: 3px solid #2a2160; }
.fr-av.on .fr-dot { background: var(--good); }
.fr-row.req .fr-dot { display: none; }
.fr-who { min-width: 0; }
.fr-name { display: flex; align-items: center; gap: 6px; min-width: 0; }
.fr-name b { font: 600 16.5px var(--font-display); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.fr-name small { color: var(--muted); font-size: 12px; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex-shrink: 1; min-width: 0; }
.fr-sub { margin-top: 2px; font-size: 13px; font-weight: 700; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fr-sub.on { color: #c9f7dc; }
.fr-row.k-game .fr-sub.on { color: #ffd1a8; }
.fr-row.k-fishing .fr-sub.on { color: #b3e3ff; }
.fr-sub.err { color: #ff9aa5; white-space: normal; }
.fr-actions { display: flex; align-items: center; gap: 6px; justify-content: flex-end; }
.fr-actions .btn-small { padding: 7px 11px; font-size: 14px; }
.fr-more { width: 34px; height: 34px; border-radius: 10px; background: transparent; border-color: transparent; color: var(--muted); }
.fr-more:hover { color: #fff; }
.fr-here { display: inline-flex; align-items: center; gap: 5px; font-size: 12.5px; font-weight: 800; color: #9ff0c2; }
.fr-here .ai { width: 14px; height: 14px; }
.fr-menu {
  position: absolute; right: 8px; top: calc(100% - 6px); z-index: 5; min-width: 190px; padding: 6px; border-radius: 14px;
  background: #1d1550; border: 1.5px solid rgba(255,255,255,.16); box-shadow: 0 14px 34px rgba(0,0,0,.5); animation: accPop .2s cubic-bezier(.2,1.4,.4,1);
}
.fr-menu-it, .accw-mi {
  display: flex; align-items: center; gap: 10px; width: 100%; padding: 9px 10px; border: 0; border-radius: 10px; background: none; color: #fff;
  font: 700 14.5px var(--font); text-align: left; cursor: pointer;
}
.fr-menu-it .ai, .accw-mi .ai { width: 17px; height: 17px; color: var(--muted); }
.fr-menu-it:hover, .accw-mi:hover { background: rgba(255,255,255,.09); }
.fr-menu-it.danger, .accw-mi.danger { color: #ffb3bb; }
.fr-menu-it.danger .ai, .accw-mi.danger .ai { color: #ff8a95; }
.fr-empty { display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center; padding: 30px 18px; margin-top: 10px; border-radius: 18px; border: 2px dashed rgba(255,255,255,.12); }
.fr-empty b { font: 600 18px var(--font-display); }
.fr-empty span { font-size: 14px; color: var(--muted); line-height: 1.45; max-width: 380px; }
.fr-empty > .ai { width: 30px; height: 30px; color: var(--muted); }
.fr-empty.small { padding: 24px 18px; }
.fr-empty-art { display: flex; margin-bottom: 4px; }
.fr-empty-art .acc-bust { background: radial-gradient(circle at 50% 40%, rgba(255,255,255,.16), rgba(0,0,0,.2)); }
.fr-empty-art .acc-bust:last-child { margin-left: -12px; animation: frWave 2.4s ease-in-out infinite; }
@keyframes frWave { 50% { transform: translateY(-4px) rotate(6deg); } }

/* ==========================================================================
   Widget (Kopfzeilen)
   ========================================================================== */
.accw { display: inline-flex; align-items: center; gap: 8px; min-width: 0; }
.accw-login {
  display: inline-flex; align-items: center; gap: 8px; height: 42px; padding: 0 17px 0 13px; border-radius: 999px; cursor: pointer;
  border: 2px solid rgba(255,201,51,.6); background: linear-gradient(180deg, rgba(255,201,51,.2), rgba(255,201,51,.06));
  color: #fff; font: 600 16px var(--font-display); box-shadow: 0 4px 0 rgba(0,0,0,.22), inset 0 1px 0 rgba(255,255,255,.15);
  transition: transform .12s, background .15s, box-shadow .12s; white-space: nowrap;
}
.accw-login .ai { width: 19px; height: 19px; color: var(--primary); }
.accw-login:hover { background: linear-gradient(180deg, rgba(255,201,51,.32), rgba(255,201,51,.12)); transform: translateY(-1px); }
.accw-login:active { transform: translateY(2px); box-shadow: 0 2px 0 rgba(0,0,0,.22); }
.accw-chip {
  display: inline-flex; align-items: center; gap: 9px; height: 44px; padding: 0 10px 0 5px; border-radius: 999px; cursor: pointer; min-width: 0; max-width: 250px;
  border: 2px solid rgba(255,255,255,.16); background: rgba(16,11,44,.55); color: #fff; box-shadow: 0 4px 0 rgba(0,0,0,.2);
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); transition: border-color .15s, background .15s;
}
.accw-chip:hover { border-color: rgba(255,201,51,.6); background: rgba(40,30,100,.7); }
.accw-av { position: relative; flex: none; width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; background: radial-gradient(circle at 50% 40%, rgba(255,255,255,.2), rgba(0,0,0,.25)); box-shadow: inset 0 0 0 2px rgba(255,255,255,.12); }
.accw-text { display: flex; flex-direction: column; align-items: flex-start; min-width: 0; line-height: 1.1; }
.accw-name { display: flex; align-items: center; gap: 5px; min-width: 0; }
.accw-name b { font: 600 15px var(--font-display); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 130px; }
.accw-lv { font-size: 11px; font-weight: 800; color: var(--primary); }
.accw-chev { width: 15px; height: 15px; color: var(--muted); }
.accw-friends {
  position: relative; display: grid; place-items: center; width: 44px; height: 44px; flex: none; padding: 0; border-radius: 50%; cursor: pointer;
  border: 2px solid rgba(255,255,255,.16); background: rgba(16,11,44,.55); color: #fff; box-shadow: 0 4px 0 rgba(0,0,0,.2);
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); transition: border-color .15s, background .15s;
}
.accw-friends .ai { width: 21px; height: 21px; }
.accw-friends:hover { border-color: rgba(51,209,122,.7); }
.accw-on { position: absolute; right: -5px; bottom: -4px; min-width: 19px; height: 19px; padding: 0 5px; border-radius: 99px; display: grid; place-items: center; background: var(--good); color: #0d3b22; font: 800 11.5px var(--font); border: 2px solid #1b1440; }
.accw-dot { position: absolute; right: -1px; top: -1px; width: 12px; height: 12px; border-radius: 50%; background: var(--danger); border: 2px solid #1b1440; animation: accDot 1.6s ease-out infinite; }
@keyframes accDot { 0% { box-shadow: 0 0 0 0 rgba(255,77,94,.7); } 70%, 100% { box-shadow: 0 0 0 8px rgba(255,77,94,0); } }
.accw-menu {
  position: fixed; z-index: 64; width: 270px; padding: 8px; border-radius: 18px; background: rgba(29,21,80,.97); color: #fff;
  border: 1.5px solid rgba(255,255,255,.16); box-shadow: 0 20px 50px rgba(0,0,0,.55); animation: accPop .22s cubic-bezier(.2,1.4,.4,1);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
}
.accw-mhead { display: flex; align-items: center; gap: 11px; padding: 6px 6px 10px; }
.accw-mhead .acc-bust { background: radial-gradient(circle at 50% 40%, rgba(255,255,255,.2), rgba(0,0,0,.25)); }
.accw-mwho { min-width: 0; }
.accw-mwho .accw-name b { font-size: 17px; max-width: 160px; }
.accw-mwho small { color: var(--muted); font-weight: 800; font-size: 12.5px; }
.accw-mlv { padding: 9px 10px 11px; margin-bottom: 4px; border-radius: 12px; background: rgba(0,0,0,.22); }
.accw-mlv > div { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 6px; }
.accw-mlv b { font: 600 14.5px var(--font-display); color: var(--primary); }
.accw-mlv small { font-size: 11.5px; font-weight: 800; color: var(--muted); }
.accw-mi small { margin-left: auto; font-size: 12px; color: var(--muted); font-weight: 800; }
.accw-sep { height: 1px; margin: 5px 6px; background: rgba(255,255,255,.1); }
/* Sprachwahl im Konto-Menü: Zeile wie ein Menüpunkt, Schalter rechts (das 🌐 des Schalters ersetzt hier das Symbol links) */
.accw-mlang { display: flex; align-items: center; gap: 10px; padding: 4px 6px 4px 10px; min-height: 40px; font: 700 14.5px var(--font); color: #fff; }
.accw-mlang .ai { width: 17px; height: 17px; color: var(--muted); }
.accw-mlang .lang-sw { margin-left: auto; padding: 2px; background: rgba(0,0,0,.25); }
.accw-mlang .lang-sw-ic { display: none; }
/* Kompakt (schmale Kopfzeilen, z. B. mobile Lobby): nur Mini-Avatar mit Abzeichen + Freunde-Knopf, ≈ 96 px */
.accw-avbadge { display: none; position: absolute; right: -6px; bottom: -5px; }
@media (max-width: 480px) {
  .accw-text, .accw-chev { display: none; }
  .accw-avbadge { display: inline-block; }
  .accw { gap: 6px; }
  .accw-chip { padding: 0 3px; height: 42px; }
  .accw-friends { width: 42px; height: 42px; }
  .accw-login { height: 40px; padding: 0 14px 0 11px; font-size: 15px; }
}

/* ==========================================================================
   Benachrichtigungen
   ========================================================================== */
#acc-toasts { position: fixed; top: 76px; right: 14px; z-index: 66; display: flex; flex-direction: column; align-items: flex-end; gap: 10px; width: min(390px, calc(100vw - 28px)); pointer-events: none; }
.acc-toast {
  position: relative; display: flex; align-items: center; gap: 12px; width: 100%; padding: 12px 14px; border-radius: 18px; pointer-events: auto; overflow: hidden;
  background: rgba(24,17,62,.95); border: 2px solid rgba(255,255,255,.14); color: #fff;
  box-shadow: 0 16px 40px rgba(0,0,0,.45); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  animation: accToastIn .5s cubic-bezier(.2,1.3,.4,1);
}
.acc-toast.out { animation: accToastOut .28s ease-in forwards; }
.acc-toast.click { cursor: pointer; }
@keyframes accToastIn { from { transform: translateX(calc(100% + 30px)); opacity: 0; } }
@keyframes accToastOut { to { transform: translateX(calc(100% + 30px)); opacity: 0; } }
.at-body { flex: 1; min-width: 0; }
.at-kicker { display: flex; align-items: center; gap: 8px; font: 800 11px var(--font); letter-spacing: 1.1px; text-transform: uppercase; color: var(--tc, #c9b8ff); }
.at-tier { padding: 1px 7px; border-radius: 99px; background: rgba(0,0,0,.28); letter-spacing: .5px; }
.at-title { font: 600 18px/1.15 var(--font-display); margin-top: 2px; }
.at-desc { font-size: 13px; color: #cfc8f5; line-height: 1.35; margin-top: 2px; }
.at-extra { display: flex; align-items: center; gap: 6px; margin-top: 6px; font-size: 12.5px; font-weight: 800; color: #ddd8ff; }
.at-extra .ai { width: 16px; height: 16px; color: var(--primary); }
.at-extra b { color: #fff; }
.at-pts { flex: none; display: flex; flex-direction: column; align-items: center; font: 700 21px/1 var(--font-display); color: var(--tc); }
.at-pts small { font: 800 10px var(--font); letter-spacing: 1px; opacity: .8; margin-top: 2px; }
/* Erfolg: Stufen-Glanz */
.acc-toast.ach { border-color: var(--tc); background: linear-gradient(110deg, color-mix(in srgb, var(--tc) 20%, #18113e), #18113e 60%); box-shadow: 0 0 0 4px color-mix(in srgb, var(--tc) 16%, transparent), 0 16px 40px rgba(0,0,0,.5); }
.acc-toast.ach .acc-medal { animation: atMedal .7s cubic-bezier(.2,1.7,.4,1) .15s backwards; }
@keyframes atMedal { 0% { transform: scale(.3) rotate(-60deg); } 100% { transform: none; } }
.at-shine { position: absolute; inset: 0; pointer-events: none; background: linear-gradient(105deg, transparent 35%, rgba(255,255,255,.28) 48%, transparent 60%); transform: translateX(-100%); animation: atShine 1.4s ease-out .35s; }
@keyframes atShine { to { transform: translateX(100%); } }
.acc-toast.ach.t-platinum { border-color: transparent; background: linear-gradient(110deg, #22195a, #18113e 60%) padding-box, conic-gradient(from var(--at-a, 0deg), #b9f3ff, #c58bff, #ff9be0, #ffe066, #b9f3ff) border-box; animation: accToastIn .5s cubic-bezier(.2,1.3,.4,1), atSpin 3s linear infinite; }
@property --at-a { syntax: '<angle>'; inherits: false; initial-value: 0deg; }
@keyframes atSpin { to { --at-a: 360deg; } }
.acc-toast.ach.out.t-platinum { animation: accToastOut .28s ease-in forwards; }
/* Ablaufbalken (pausiert beim Darüberfahren) */
.acc-toast::after { content: ''; position: absolute; left: 0; bottom: 0; height: 3px; width: 100%; background: var(--tc, rgba(255,255,255,.35)); opacity: .55; transform-origin: left; animation: atTtl var(--ttl, 6s) linear forwards; }
.acc-toast.hold::after { animation-play-state: paused; }
@keyframes atTtl { from { transform: scaleX(1); } to { transform: scaleX(0); } }
/* Level */
.acc-toast.lvl { --tc: var(--primary); border-color: rgba(255,201,51,.6); }
.lv-badge { flex: none; width: 54px; height: 54px; border-radius: 16px; display: flex; flex-direction: column; align-items: center; justify-content: center; line-height: 1; background: radial-gradient(circle at 50% 30%, #ffe680, #e6a100); color: #3a2400; box-shadow: 0 3px 0 rgba(0,0,0,.3); animation: atMedal .7s cubic-bezier(.2,1.7,.4,1) .1s backwards; }
.lv-badge small { font: 800 9px var(--font); text-transform: uppercase; letter-spacing: .6px; }
.lv-badge b { font: 700 24px var(--font-display); }
.acc-toast.lvl .acc-bar { margin-top: 7px; }
/* Neuer Hintergrund */
.acc-toast.bgt { border-color: var(--tc); background: linear-gradient(110deg, color-mix(in srgb, var(--tc) 20%, #18113e), #18113e 60%); box-shadow: 0 0 0 4px color-mix(in srgb, var(--tc) 14%, transparent), 0 16px 40px rgba(0,0,0,.5); }
.bgt-pic { position: relative; flex: none; width: 78px; height: 50px; border-radius: 12px; overflow: hidden; box-shadow: 0 0 0 2px var(--tc), 0 4px 10px rgba(0,0,0,.45); animation: atMedal .7s cubic-bezier(.2,1.7,.4,1) .15s backwards; }
.bgt-bg.pbg { position: absolute; inset: 0; }
/* Hinweise */
.acc-toast.note { align-items: flex-start; padding-right: 44px; }
.nt-av { position: relative; flex: none; width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center; background: radial-gradient(circle at 50% 40%, rgba(255,255,255,.18), rgba(0,0,0,.25)); }
.nt-badge { position: absolute; right: -4px; bottom: -3px; }
.nt-ic { flex: none; width: 42px; height: 42px; border-radius: 13px; display: grid; place-items: center; background: rgba(255,201,51,.16); color: var(--primary); }
.nt-ic .ai { width: 22px; height: 22px; }
.nt-title { font: 600 16px/1.2 var(--font-display); margin-top: 2px; }
.nt-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.nt-actions .btn { box-shadow: 0 3px 0 rgba(0,0,0,.25); }
.nt-x { position: absolute; top: 9px; right: 9px; width: 30px; height: 30px; border-radius: 9px; background: transparent; border-color: transparent; color: var(--muted); }
.nt-x .ai { width: 16px; height: 16px; }
.acc-toast.note.invite { --tc: var(--good); border-color: rgba(51,209,122,.55); }
.acc-toast.note.request { --tc: var(--primary); border-color: rgba(255,201,51,.5); }
.acc-toast.note.good { --tc: var(--good); }
.acc-toast.note.hint { --tc: var(--primary); }
.acc-toast.note.subtle { padding-top: 9px; padding-bottom: 9px; background: rgba(24,17,62,.86); }
.acc-toast.note.subtle .nt-av { width: 36px; height: 36px; }
.acc-toast.note.subtle .nt-title { font-size: 14.5px; margin-top: 6px; }
@media (max-width: 560px) {
  #acc-toasts { top: 8px; right: 50%; transform: translateX(50%); width: calc(100vw - 16px); }
  @keyframes accToastIn { from { transform: translateY(-120%); opacity: 0; } }
  @keyframes accToastOut { to { transform: translateY(-120%); opacity: 0; } }
  .at-title { font-size: 16.5px; }
  .acc-toast.ach .acc-medal { --ms: 46px !important; }
  /* Handy: Erfolge, Level und neue Hintergründe kompakt (eine Zeile Titel, ohne Beschreibung) – sonst verschwinden
     z. B. Fang-Karte oder Ruten-Feier unter mehreren gleichzeitigen Meldungen. Hinweise mit Knöpfen bleiben unverändert. */
  #acc-toasts { gap: 6px; }
  .acc-toast:is(.ach, .lvl, .bgt) { padding: 7px 12px 7px 9px; gap: 10px; border-radius: 15px; }
  .acc-toast:is(.ach, .lvl, .bgt) .at-desc, .acc-toast.lvl .acc-bar { display: none; }
  .acc-toast:is(.ach, .lvl, .bgt) .at-kicker { font-size: 10px; letter-spacing: .8px; }
  .acc-toast:is(.ach, .lvl, .bgt) .at-title { font-size: 15.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .acc-toast.ach .acc-medal { --ms: 38px !important; }
  .acc-toast:is(.ach, .lvl, .bgt) .at-pts { font-size: 17px; }
  .acc-toast.lvl .lv-badge { width: 40px; height: 40px; border-radius: 12px; }
  .acc-toast.lvl .lv-badge b { font-size: 18px; }
  .acc-toast.bgt .bgt-pic { width: 58px; height: 38px; border-radius: 10px; }
}

/* ==========================================================================
   Profil-Hintergründe (Szenen & Partikel aus backgrounds.js)
   Größen in Container-Einheiten (cqh = 1 % der Höhe) → gleiche Optik im Profilkopf, in der Galerie und im Toast.
   Animiert wird nur transform/opacity. In Galerien laufen Animationen nur unter dem Zeiger bzw. bei der Auswahl.
   ========================================================================== */
.pbg { position: relative; overflow: hidden; isolation: isolate; background-color: #2b1d6b; container-type: size; }
.pbg .sc { position: absolute; display: block; pointer-events: none; }
.pbg svg.sc { overflow: visible; }
.pbg .sw > svg.sc { inset: 0; width: 100%; height: 100%; }
.pbg .pp { position: absolute; display: block; pointer-events: none; will-change: transform, opacity; }
.pbg .pp > b { position: absolute; inset: 0; display: block; }

/* Gemeinsame Bewegungen */
@keyframes bgSpin { to { transform: rotate(360deg); } }
@keyframes bgPulse { 0%, 100% { opacity: .55; } 50% { opacity: 1; } }
@keyframes bgFlicker { 0%, 100% { opacity: .85; } 30% { opacity: 1; } 36% { opacity: .68; } 52% { opacity: .96; } 70% { opacity: .78; } }
@keyframes bgTwinkle { 0%, 100% { transform: scale(.3); opacity: .25; } 50% { transform: scale(1); opacity: 1; } }
@keyframes bgRipple { 0% { transform: scale(.12); opacity: 1; } 100% { transform: scale(1.45); opacity: 0; } }
@keyframes bgBreathe { from { opacity: .65; } to { opacity: 1; } }
@keyframes bgGlit { from { opacity: .35; } to { opacity: 1; } }
@keyframes bgSway { from { transform: rotate(-1.4deg); } to { transform: rotate(1.4deg); } }
@keyframes bgBob { from { transform: translateY(-.8cqh) rotate(-1deg); } to { transform: translateY(.8cqh) rotate(1.2deg); } }
.pbg .twinkle, .pbg .sparkle {
  left: var(--x); top: var(--y); width: 4cqh; height: 4cqh; margin: -2cqh; background: #fff;
  clip-path: polygon(50% 0, 58% 42%, 100% 50%, 58% 58%, 50% 100%, 42% 58%, 0 50%, 42% 42%); animation: bgTwinkle var(--t) ease-in-out var(--d) infinite;
}

/* ---------- Standard (statisch) ---------- */
.pbg-dusk { background: radial-gradient(110% 90% at 88% 0%, rgba(255,155,224,.85), transparent 48%), radial-gradient(90% 120% at 0% 110%, rgba(255,201,51,.75), transparent 52%), linear-gradient(160deg, #5b2fd6, #b2348f 62%, #ff7a45); }
.pbg-lagoon { background: radial-gradient(70% 90% at 15% 0%, rgba(255,255,255,.45), transparent 60%), repeating-radial-gradient(ellipse at 50% 140%, rgba(255,255,255,.08) 0 10px, transparent 10px 26px), linear-gradient(170deg, #36e0d3, #2b8bf0 52%, #2b1d8b); }
.pbg-forest { background: radial-gradient(40% 60% at 20% 15%, rgba(255,246,170,.55), transparent 70%), radial-gradient(30% 50% at 75% 30%, rgba(255,246,170,.3), transparent 70%), linear-gradient(175deg, #8cf2a6, #1f9a5a 48%, #0b3f33); }
.pbg-candy { background: radial-gradient(circle at 20% 30%, rgba(255,255,255,.55) 0 8%, transparent 9%), radial-gradient(circle at 78% 70%, rgba(255,255,255,.4) 0 12%, transparent 13%), radial-gradient(circle at 60% 15%, rgba(255,255,255,.35) 0 5%, transparent 6%), linear-gradient(135deg, #ffb3e6, #c9b0ff 50%, #96dcff); }
.pbg-sunset { background: radial-gradient(circle at 72% 78%, #fff3b0 0 9%, rgba(255,214,102,.75) 10%, transparent 26%), repeating-linear-gradient(180deg, transparent 0 18px, rgba(122,26,90,.18) 18px 21px), linear-gradient(180deg, #ffd27a, #ff8a3d 42%, #d23a7c 78%, #4a1a6a); }
.pbg-midnight { background: radial-gradient(1.2px 1.2px at 12% 22%, #fff, transparent), radial-gradient(1.4px 1.4px at 33% 64%, #fff, transparent), radial-gradient(1px 1px at 52% 18%, #fff, transparent), radial-gradient(1.6px 1.6px at 71% 44%, #fff, transparent), radial-gradient(1px 1px at 86% 12%, #fff, transparent), radial-gradient(1.2px 1.2px at 91% 70%, #fff, transparent), radial-gradient(1px 1px at 22% 86%, #fff, transparent), radial-gradient(circle at 82% 26%, #fff8d6 0 4.5%, rgba(255,248,214,.25) 6%, transparent 14%), linear-gradient(180deg, #080522, #1b1440 60%, #33227a); }
.pbg-confetti { background-color: #3b2a8f; background-image: radial-gradient(circle, #ffc933 0 3px, transparent 3.5px), radial-gradient(circle, #ff6bcb 0 3px, transparent 3.5px), radial-gradient(circle, #33d17a 0 2.5px, transparent 3px), radial-gradient(circle, #3d8bff 0 3px, transparent 3.5px), linear-gradient(160deg, #4b34b0, #2b1d6b); background-size: 46px 46px, 58px 58px, 38px 38px, 70px 70px, 100% 100%; background-position: 0 0, 20px 14px, 9px 27px, 40px 5px, 0 0; }
.pbg-board { background: radial-gradient(120% 120% at 50% 40%, transparent 40%, rgba(10,6,35,.55)), conic-gradient(#5b3fd0 0 25%, #3f2aa3 0 50%, #5b3fd0 0 75%, #3f2aa3 0) 0 0 / 44px 44px; }

/* ---------- Bisherige animierte ---------- */
.pbg-betaglow { background: radial-gradient(80% 100% at 50% 120%, rgba(183,155,255,.75), transparent 60%), radial-gradient(60% 60% at 85% 10%, rgba(255,155,224,.5), transparent 70%), linear-gradient(170deg, #241466, #4b22b8 55%, #7a3fe0); }
.pbg-betaglow .spark { left: var(--x); bottom: -4cqh; width: calc(3.8cqh * var(--s)); height: calc(3.8cqh * var(--s)); border-radius: 50%; background: #fff; box-shadow: 0 0 5cqh 1.3cqh rgba(201,184,255,.9), 0 0 10cqh 2.5cqh rgba(160,107,255,.6); animation: ppRise var(--t) linear var(--d) infinite; opacity: 0; }
@keyframes ppRise { 0% { transform: translate(0, 0); opacity: 0; } 15% { opacity: .95; } 70% { opacity: .7; } 100% { transform: translate(calc(8cqh * var(--s)), -118cqh); opacity: 0; } }
.pbg-starfall { background: radial-gradient(1.2px 1.2px at 10% 30%, #fff, transparent), radial-gradient(1.5px 1.5px at 28% 70%, #fff, transparent), radial-gradient(1px 1px at 45% 22%, #fff, transparent), radial-gradient(1.4px 1.4px at 63% 55%, #fff, transparent), radial-gradient(1px 1px at 80% 18%, #fff, transparent), radial-gradient(1.3px 1.3px at 92% 64%, #fff, transparent), radial-gradient(1px 1px at 18% 88%, #fff, transparent), radial-gradient(1px 1px at 55% 85%, #fff, transparent), radial-gradient(120% 80% at 50% 120%, rgba(91,63,208,.6), transparent 60%), linear-gradient(180deg, #05031a, #140d3a 55%, #2b1d6b); }
.pbg .meteor { top: calc(var(--y) * .5 - 10%); left: calc(var(--x) * .6 + 30%); width: 76cqh; height: max(1.5px, 1.2cqh); border-radius: 2px; background: linear-gradient(90deg, rgba(255,255,255,0), #fff); transform-origin: right center; opacity: 0; animation: ppMeteor 7s ease-in calc(var(--i) * 2.3s + 1s) infinite; }
@keyframes ppMeteor { 0% { transform: rotate(-28deg) translateX(0) scaleX(.3); opacity: 0; } 4% { opacity: 1; } 14% { transform: rotate(-28deg) translateX(-165cqh) scaleX(1); opacity: 0; } 100% { transform: rotate(-28deg) translateX(-165cqh); opacity: 0; } }
.pbg-deepsea { background: radial-gradient(90% 70% at 50% -20%, rgba(120,220,255,.55), transparent 60%), linear-gradient(180deg, #0f6aa8, #0b3c78 50%, #08184a); }
.pbg-deepsea::before { content: ''; position: absolute; inset: -20% -10%; background: repeating-linear-gradient(100deg, rgba(255,255,255,.07) 0 14cqh, transparent 14cqh 44cqh); animation: ppRays 9s ease-in-out infinite alternate; }
@keyframes ppRays { from { transform: translateX(-19cqh) skewX(-4deg); opacity: .6; } to { transform: translateX(19cqh) skewX(4deg); opacity: 1; } }
.pbg-starfall .s-stars { left: 0; right: 0; top: 0; height: 80%; opacity: .7; background: radial-gradient(1px 1px at 10% 20%, #fff, transparent), radial-gradient(1px 1px at 30% 70%, #fff, transparent), radial-gradient(1px 1px at 50% 40%, #e8ddff, transparent), radial-gradient(1px 1px at 70% 85%, #fff, transparent), radial-gradient(1px 1px at 90% 30%, #fff, transparent), radial-gradient(1px 1px at 20% 50%, #d6e6ff, transparent) 0 0 / 40cqh 36cqh; }
.pbg-starfall .s-ridge { left: 0; bottom: 0; width: 100%; height: 30%; }
.pbg-deepsea .s-kelp { bottom: -6%; height: 74%; transform-origin: 50% 100%; animation: bgSway 4.5s ease-in-out infinite alternate; }
.pbg-deepsea .s-kelp.l { left: 2%; }
.pbg-deepsea .s-kelp.r { right: 5%; height: 58%; animation-delay: -2.2s; }
.pbg-deepsea .jelly { left: var(--x); top: var(--y); width: 12cqh; height: 22cqh; margin: -11cqh -6cqh; animation: bgJellyMove 9s ease-in-out var(--d) infinite alternate; }
.pbg-deepsea .jelly:nth-last-child(1) { width: 9cqh; height: 17cqh; }
.pbg-deepsea .jelly b { bottom: 50%; border-radius: 50% 50% 18% 18% / 70% 70% 30% 30%; background: radial-gradient(circle at 50% 30%, rgba(255,214,250,.95), rgba(255,140,220,.55) 60%, rgba(255,140,220,.25)); box-shadow: 0 0 3cqh rgba(255,150,230,.55); transform-origin: 50% 0; animation: bgJellyPulse 1.6s ease-in-out infinite alternate; }
.pbg-deepsea .jelly b::after { content: ''; position: absolute; left: 16%; right: 16%; top: 92%; height: 110%; background: repeating-linear-gradient(90deg, rgba(255,190,240,.6) 0 max(1px, .5cqh), transparent max(1px, .5cqh) 2.2cqh); -webkit-mask: linear-gradient(#000, transparent); mask: linear-gradient(#000, transparent); }
@keyframes bgJellyMove { from { transform: translate(-3cqh, 5cqh); } to { transform: translate(3cqh, -6cqh); } }
@keyframes bgJellyPulse { from { transform: scale(1, 1); } to { transform: scale(.86, 1.1); } }
.pbg-aurora .s-taiga { left: 0; bottom: 0; width: 100%; height: 34%; z-index: 2; }
.pbg .bubble { left: var(--x); bottom: -10cqh; width: calc(6.3cqh * var(--s)); height: calc(6.3cqh * var(--s)); border-radius: 50%; border: max(1px, .9cqh) solid rgba(220,245,255,.75); background: radial-gradient(circle at 35% 30%, rgba(255,255,255,.7) 0 18%, transparent 30%); animation: ppBubble var(--t) ease-in var(--d) infinite; opacity: 0; }
@keyframes ppBubble { 0% { transform: translate(0, 0); opacity: 0; } 10% { opacity: .9; } 50% { transform: translate(5cqh, -60cqh); } 100% { transform: translate(-2.5cqh, -120cqh); opacity: 0; } }
.pbg-aurora { background: radial-gradient(1px 1px at 15% 20%, #fff, transparent), radial-gradient(1px 1px at 70% 12%, #fff, transparent), radial-gradient(1.3px 1.3px at 88% 40%, #fff, transparent), radial-gradient(1px 1px at 40% 35%, #fff, transparent), linear-gradient(180deg, #04121f, #0b1e3a 60%, #1b1440); }
.pbg-aurora .ribbon { top: calc(-20% + var(--i) * 12%); left: -30%; width: 160%; height: 70%; border-radius: 50%; filter: blur(11cqh); mix-blend-mode: screen; opacity: .75; background: linear-gradient(90deg, transparent, rgba(51,255,170,.75), rgba(61,200,255,.6), rgba(170,107,255,.6), transparent); animation: ppAurora calc(9s + var(--i) * 3s) ease-in-out calc(var(--i) * -2s) infinite alternate; }
.pbg-aurora .ribbon:nth-child(2) { background: linear-gradient(90deg, transparent, rgba(170,107,255,.6), rgba(51,255,170,.55), transparent); }
@keyframes ppAurora { 0% { transform: translateX(-12%) skewY(-6deg) scaleY(.7); } 50% { transform: translateX(4%) skewY(4deg) scaleY(1); } 100% { transform: translateX(12%) skewY(-3deg) scaleY(.8); } }
.pbg-golden { background: radial-gradient(70% 90% at 30% 0%, rgba(255,250,220,.75), transparent 55%), radial-gradient(60% 80% at 100% 100%, rgba(140,70,0,.6), transparent 60%), linear-gradient(150deg, #ffe680, #f0a800 45%, #a85c00); }
.pbg-golden::before, .pbg-legend::after { content: ''; position: absolute; inset: 0; background: linear-gradient(105deg, transparent 30%, rgba(255,255,255,.55) 45%, transparent 58%); transform: translateX(-100%); animation: ppShine 4.5s ease-in-out infinite; }
@keyframes ppShine { 0%, 35% { transform: translateX(-100%); } 75%, 100% { transform: translateX(100%); } }
.pbg .glint { left: var(--x); top: var(--y); width: calc(9cqh * var(--s)); height: calc(9cqh * var(--s)); margin: calc(-4.5cqh * var(--s)); background: #fff; clip-path: polygon(50% 0, 60% 40%, 100% 50%, 60% 60%, 50% 100%, 40% 60%, 0 50%, 40% 40%); filter: drop-shadow(0 0 2.5cqh #fff); opacity: 0; animation: ppGlint var(--t) ease-in-out var(--d) infinite; }
@keyframes ppGlint { 0%, 100% { transform: scale(.2) rotate(0); opacity: 0; } 50% { transform: scale(1) rotate(45deg); opacity: 1; } }
.pbg-golden .s-pile { right: 6%; bottom: -4%; height: 58%; filter: drop-shadow(0 1cqh 1.4cqh rgba(110,50,0,.45)); }
.pbg-golden .coin { left: var(--x); top: -14cqh; width: 11cqh; height: 11cqh; animation: bgCoinFall calc(var(--t) * .8) linear var(--d) infinite; }
.pbg-golden .coin b { border-radius: 50%; background: radial-gradient(circle at 50% 50%, #ffe680 0 46%, #d99a12 48% 54%, #ffd23f 56%); box-shadow: inset -.8cqh -.8cqh 0 rgba(150,80,0,.35); animation: bgSpinY .9s linear var(--d) infinite; }
@keyframes bgCoinFall { 0% { transform: translateY(0); opacity: 0; } 8% { opacity: 1; } 100% { transform: translateY(130cqh); opacity: 1; } }
@keyframes bgSpinY { 0% { transform: scaleX(1); } 25% { transform: scaleX(.12); } 50% { transform: scaleX(-1); } 75% { transform: scaleX(.12); } 100% { transform: scaleX(1); } }

/* ---------- Herbstlaub ---------- */
.pbg-autumn { background: radial-gradient(55% 110% at 82% -12%, rgba(255,230,150,.9), rgba(255,190,90,.25) 45%, transparent 70%), radial-gradient(40% 60% at 18% 22%, rgba(255,170,80,.35), transparent 70%), linear-gradient(172deg, #f7b04f 0%, #e3672f 38%, #a9344a 70%, #5a1f4f 100%); }
.pbg-autumn .s-hills { left: 0; right: 0; bottom: 0; height: 60%; }
.pbg-autumn .s-hills::before, .pbg-autumn .s-hills::after { content: ''; position: absolute; inset: 0; }
.pbg-autumn .s-hills::before { opacity: .55; background: radial-gradient(circle at 62% 100%, #c4504e 0 26cqh, transparent calc(26cqh + 1px)), radial-gradient(circle at 76% 92%, #c4504e 0 18cqh, transparent calc(18cqh + 1px)), radial-gradient(circle at 90% 100%, #c4504e 0 24cqh, transparent calc(24cqh + 1px)), radial-gradient(circle at 46% 104%, #c4504e 0 20cqh, transparent calc(20cqh + 1px)); }
.pbg-autumn .s-hills::after { background: radial-gradient(circle at 8% 112%, #5c1c44 0 30cqh, transparent calc(30cqh + 1px)), radial-gradient(circle at 26% 118%, #5c1c44 0 24cqh, transparent calc(24cqh + 1px)), radial-gradient(circle at 70% 122%, #5c1c44 0 22cqh, transparent calc(22cqh + 1px)), radial-gradient(circle at 98% 112%, #5c1c44 0 28cqh, transparent calc(28cqh + 1px)); }
.pbg-autumn .leaf { left: var(--x); top: -12cqh; width: calc(9cqh * var(--s)); height: calc(9cqh * var(--s)); border-radius: 0 78% 0 78%; background: linear-gradient(135deg, #ffd166, #f3722c); box-shadow: inset -.6cqh -.6cqh 0 rgba(90,20,30,.18); animation: bgLeaf calc(var(--t) * 1.5) linear var(--d) infinite; }
.pbg-autumn .leaf:nth-child(3n) { background: linear-gradient(135deg, #ff7b54, #c1121f); }
.pbg-autumn .leaf:nth-child(3n+1) { background: linear-gradient(135deg, #ffe08a, #e09f3e); }
@keyframes bgLeaf {
  0% { transform: translate(0, 0) rotate(0) rotateY(0); opacity: 0; }
  8% { opacity: 1; }
  30% { transform: translate(6cqh, 38cqh) rotate(120deg) rotateY(60deg); }
  55% { transform: translate(-4cqh, 70cqh) rotate(210deg) rotateY(0); }
  82% { transform: translate(8cqh, 100cqh) rotate(300deg) rotateY(-50deg); opacity: 1; }
  100% { transform: translate(2cqh, 128cqh) rotate(380deg) rotateY(0); opacity: 0; }
}

/* ---------- Vulkaninsel ---------- */
.pbg-volcano { background: radial-gradient(30% 55% at 80% 28%, rgba(255,130,70,.5), transparent 70%), radial-gradient(1px 1px at 12% 12%, #fff, transparent), radial-gradient(1.2px 1.2px at 34% 7%, #fff, transparent), radial-gradient(1px 1px at 52% 18%, #fff, transparent), radial-gradient(1px 1px at 6% 30%, #fff, transparent), linear-gradient(180deg, #22165a 0%, #5a2a78 28%, #c0456f 52%, #ff8a5c 66%, #ffc27a 75%); }
.pbg-volcano .s-sea { left: 0; right: 0; top: 74%; bottom: 0; background: radial-gradient(22% 60% at 80% 0%, rgba(255,150,90,.55), transparent 70%), repeating-linear-gradient(180deg, rgba(255,200,160,.16) 0 max(1px, .5cqh), transparent max(1px, .5cqh) 4cqh), linear-gradient(180deg, #4b3f86, #241f55 60%, #171340); }
.pbg-volcano .s-vwrap { right: 2%; bottom: 25%; height: 64%; aspect-ratio: 220 / 130; }
.pbg-volcano .s-vglow { position: absolute; left: 45.5%; top: 24%; width: 70%; height: 60%; margin: -30% 0 0 -35%; border-radius: 50%; background: radial-gradient(closest-side, rgba(255,180,90,.8), rgba(255,100,40,.25) 55%, transparent); animation: bgPulse 3.2s ease-in-out infinite; }
.pbg-volcano .smoke { left: 45.5%; top: 18%; width: calc(22cqh * var(--s)); height: calc(22cqh * var(--s)); margin: calc(-11cqh * var(--s)); border-radius: 50%; background: radial-gradient(circle at 40% 40%, rgba(130,96,150,.8), rgba(90,66,120,.42) 55%, transparent 70%); opacity: 0; animation: bgSmoke calc(var(--t) * 1.3) ease-out var(--d) infinite; }
@keyframes bgSmoke { 0% { transform: translate(0, 0) scale(.3); opacity: 0; } 15% { opacity: .9; } 100% { transform: translate(calc(-34cqh + var(--r) * 16cqh), -58cqh) scale(1.7); opacity: 0; } }
.pbg-volcano .ember { left: 45.5%; top: 22%; width: 1.5cqh; height: 1.5cqh; border-radius: 50%; background: #ffe08a; box-shadow: 0 0 1.6cqh .6cqh rgba(255,140,60,.9); opacity: 0; animation: bgEmber calc(var(--t) * .55) ease-out var(--d) infinite; }
@keyframes bgEmber { 0% { transform: translate(0, 0); opacity: 0; } 10% { opacity: 1; } 100% { transform: translate(calc((var(--r) - .5) * 44cqh), -42cqh); opacity: 0; } }
.pbg-volcano .s-beach { left: 0; bottom: 0; width: 58%; height: 30%; }
.pbg-volcano .s-palm { transform-origin: 50% 100%; animation: bgSway 6s ease-in-out infinite alternate; }
.pbg-volcano .s-palm.a { left: 20%; bottom: 12%; height: 74%; }
.pbg-volcano .s-palm.b { left: 29%; bottom: 14%; height: 52%; animation-duration: 7.5s; animation-delay: -2s; }

/* ---------- Geisterschloss ---------- */
.pbg-haunted { background: radial-gradient(1px 1px at 8% 16%, #fff, transparent), radial-gradient(1.2px 1.2px at 22% 30%, #fff, transparent), radial-gradient(1px 1px at 40% 10%, #fff, transparent), radial-gradient(1px 1px at 55% 26%, #ddd6ff, transparent), radial-gradient(1px 1px at 64% 8%, #fff, transparent), radial-gradient(36% 70% at 79% 30%, rgba(255,236,190,.26), transparent 70%), linear-gradient(180deg, #0f0b33 0%, #261a5e 55%, #3d2a72 100%); }
.pbg .s-moon { border-radius: 50%; background: radial-gradient(circle at 62% 38%, rgba(214,196,140,.5) 0 7%, transparent 8%), radial-gradient(circle at 34% 62%, rgba(214,196,140,.42) 0 10%, transparent 11%), radial-gradient(circle at 70% 70%, rgba(214,196,140,.36) 0 5%, transparent 6%), radial-gradient(circle at 38% 34%, #fffdf2, #f7e7b0 62%, #e2c87e); box-shadow: 0 0 6cqh 2cqh rgba(255,238,190,.32), 0 0 20cqh 6cqh rgba(255,230,170,.14); }
.pbg-haunted .s-moon { right: 15%; top: 6%; width: 58cqh; height: 58cqh; }
.pbg-haunted .s-castle { right: 5%; bottom: 14%; height: 80%; }
.pbg-haunted::after { content: ''; position: absolute; left: -12%; width: 70%; bottom: -16%; height: 36%; border-radius: 50%; background: #0d0720; }
.pbg-haunted .s-tree { left: 28%; bottom: 10%; height: 58%; z-index: 1; }
.pbg-haunted .s-ghost { left: 43%; top: 26%; height: 28%; animation: bgGhost 5s ease-in-out infinite; }
@keyframes bgGhost { 0%, 100% { transform: translateY(0) rotate(-5deg); opacity: .7; } 50% { transform: translateY(-6cqh) rotate(4deg); opacity: 1; } }
.pbg-haunted .s-fog { left: 0; bottom: 0; width: 200%; height: 40%; z-index: 2; background: radial-gradient(28% 60% at 25% 62%, rgba(190,180,255,.34), transparent 70%), radial-gradient(30% 50% at 72% 50%, rgba(190,180,255,.26), transparent 70%); background-size: 50% 100%; animation: bgFog 30s linear infinite; }
@keyframes bgFog { to { transform: translateX(-50%); } }
.pbg-haunted .bat { left: 102%; top: var(--y); width: calc(10cqh * var(--s)); height: calc(5cqh * var(--s)); z-index: 1; animation: bgBat calc(var(--t) * 1.7) linear calc(var(--i) * -4.1s) infinite; }
.pbg-haunted .bat b { background: #0a0518; clip-path: polygon(0 22%, 14% 10%, 24% 30%, 36% 22%, 44% 38%, 46% 14%, 50% 28%, 54% 14%, 56% 38%, 64% 22%, 76% 30%, 86% 10%, 100% 22%, 88% 52%, 76% 64%, 64% 58%, 56% 78%, 50% 70%, 44% 78%, 36% 58%, 24% 64%, 12% 52%); animation: bgFlap .2s ease-in-out infinite alternate; }
@keyframes bgBat { 0% { transform: translate(0, 0); } 25% { transform: translate(-30cqw, 7cqh); } 50% { transform: translate(-60cqw, -3cqh); } 75% { transform: translate(-90cqw, 5cqh); } 100% { transform: translate(-125cqw, 0); } }
@keyframes bgFlap { from { transform: scaleY(1); } to { transform: scaleY(.3); } }

/* ---------- Feuerwerk ---------- */
.pbg-fireworks { background: radial-gradient(90% 60% at 50% 118%, rgba(255,110,170,.42), transparent 70%), radial-gradient(1px 1px at 10% 20%, #fff, transparent), radial-gradient(1px 1px at 38% 8%, #fff, transparent), radial-gradient(1px 1px at 62% 30%, #fff, transparent), radial-gradient(1px 1px at 94% 40%, #fff, transparent), linear-gradient(180deg, #060822 0%, #141246 55%, #33206c 100%); }
.pbg-fireworks .s-skyline { left: 0; bottom: 0; width: 100%; height: 30%; }
.pbg-fireworks .burst {
  left: var(--x); top: var(--y); width: 84cqh; height: 84cqh; margin: -42cqh; --c: #ffd166; opacity: 0;
  background: radial-gradient(circle, rgba(255,255,255,.55) 0 3%, transparent 14%), repeating-conic-gradient(from calc(var(--r) * 40deg), #fff 0 1.2deg, var(--c) 1.2deg 4.4deg, transparent 4.4deg 18deg);
  -webkit-mask: radial-gradient(circle, #000 0 4%, transparent 9%, transparent 14%, #000 26%, #000 43%, transparent 50%); mask: radial-gradient(circle, #000 0 4%, transparent 9%, transparent 14%, #000 26%, #000 43%, transparent 50%);
  filter: drop-shadow(0 0 1.6cqh var(--c));
  animation: bgBurst 3.8s cubic-bezier(.15,.8,.3,1) calc(var(--i) * -.76s) infinite;
}
.pbg-fireworks .burst:nth-child(3) { --c: #ff6bcb; }
.pbg-fireworks .burst:nth-child(4) { --c: #5ee7ff; width: 64cqh; height: 64cqh; margin: -32cqh; }
.pbg-fireworks .burst:nth-child(5) { --c: #7dff9b; }
.pbg-fireworks .burst:nth-child(6) { --c: #c58bff; width: 60cqh; height: 60cqh; margin: -30cqh; }
@keyframes bgBurst { 0% { transform: scale(.1); opacity: 0; } 4% { opacity: 1; } 40% { transform: scale(1) translateY(3cqh); opacity: .95; } 64% { transform: scale(1.08) translateY(7cqh); opacity: 0; } 100% { transform: scale(1.08); opacity: 0; } }

/* ---------- High Noon ---------- */
.pbg-duel { background: radial-gradient(70% 90% at 72% 10%, rgba(255,226,150,.8), transparent 70%), linear-gradient(180deg, #ffe7ad 0%, #f8b469 42%, #ec8a4f 66%, #d06a3e 100%); }
.pbg-duel .s-sun { left: 72%; top: 22%; width: 22cqh; height: 22cqh; margin: -11cqh; border-radius: 50%; background: #fffdf2; box-shadow: 0 0 0 2cqh rgba(255,250,220,.45), 0 0 12cqh 6cqh rgba(255,240,190,.55); }
.pbg-duel .s-mesa { left: 0; bottom: 19%; width: 100%; height: 42%; }
.pbg-duel .s-ground { left: 0; right: 0; bottom: 0; height: 22%; background: radial-gradient(1cqh .6cqh at 20% 40%, rgba(90,30,20,.4), transparent), radial-gradient(1.4cqh .7cqh at 64% 70%, rgba(90,30,20,.35), transparent), linear-gradient(180deg, #b9603a, #8a3f2b); }
.pbg-duel .s-cactus.a { right: 11%; bottom: 13%; height: 54%; }
.pbg-duel .s-cactus.b { right: 33%; bottom: 17%; height: 30%; opacity: .9; }
.pbg-duel .weed { left: 0; bottom: 6%; width: 15cqh; height: 15cqh; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Cg fill='none' stroke='%237a4520' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='20' cy='20' r='16.5'/%3E%3Cpath d='M6 14C16 30 26 6 36 22M8 28C18 10 28 34 34 12M14 6C22 22 10 30 26 36M30 6C18 18 30 28 12 34M4 22C14 18 24 26 36 18'/%3E%3C/g%3E%3C/svg%3E") center / contain no-repeat; animation: bgWeed 10s ease-in-out var(--d) infinite; }
@keyframes bgWeed { 0% { transform: translate(-20cqh, 0) rotate(0); } 14% { transform: translate(14cqw, -6cqh) rotate(170deg); } 28% { transform: translate(34cqw, 0) rotate(330deg); } 42% { transform: translate(55cqw, -4cqh) rotate(500deg); } 56% { transform: translate(76cqw, 0) rotate(660deg); } 72%, 100% { transform: translate(calc(100cqw + 20cqh), -2cqh) rotate(840deg); } }

/* ---------- Pokalkammer ---------- */
.pbg-trophies { background: radial-gradient(60% 50% at 66% 100%, rgba(255,200,90,.35), transparent 70%), repeating-linear-gradient(90deg, rgba(0,0,0,.3) 0, rgba(0,0,0,0) 1%, rgba(255,140,170,.08) 2%, rgba(0,0,0,0) 3%, rgba(0,0,0,.3) 4%), linear-gradient(180deg, #6e1742 0%, #4a0f30 55%, #2a0820 100%); }
.pbg-trophies .s-spot { top: -12%; width: 46cqh; height: 135%; background: linear-gradient(180deg, rgba(255,240,200,.55), rgba(255,240,200,0) 92%); clip-path: polygon(42% 0, 58% 0, 100% 100%, 0 100%); transform-origin: 50% 0; mix-blend-mode: screen; animation: bgSpot 7s ease-in-out infinite alternate; }
.pbg-trophies .s-spot.a { left: 46%; }
.pbg-trophies .s-spot.b { left: 72%; animation-delay: -3.5s; }
@keyframes bgSpot { from { transform: rotate(-10deg); opacity: .65; } to { transform: rotate(10deg); opacity: 1; } }
.pbg-trophies .s-cupwrap { right: 5%; bottom: 13%; height: 74%; aspect-ratio: 260 / 92; }

/* ---------- Ruhmeshalle ---------- */
.pbg-legend { background: radial-gradient(40% 90% at 70% 48%, rgba(255,220,120,.62), rgba(255,170,60,.2) 55%, transparent 75%), radial-gradient(60% 120% at 0% 100%, rgba(120,40,140,.5), transparent 70%), linear-gradient(160deg, #170d3c 0%, #2e1560 50%, #4a1d5e 100%); }
.pbg-legend::after { z-index: 3; opacity: .55; }
.pbg-legend .s-rays { left: 70%; top: 48%; width: 320cqh; height: 320cqh; margin: -160cqh; border-radius: 50%; background: repeating-conic-gradient(rgba(255,226,150,.5) 0 4deg, transparent 4deg 15deg); -webkit-mask: radial-gradient(circle, #000 3%, rgba(0,0,0,.5) 20%, transparent 46%); mask: radial-gradient(circle, #000 3%, rgba(0,0,0,.5) 20%, transparent 46%); animation: bgSpin 60s linear infinite; }
.pbg-legend .s-laurel { left: 70%; top: 50%; height: 88%; transform: translate(-50%, -50%); filter: drop-shadow(0 .8cqh 1.2cqh rgba(0,0,0,.45)); }
.pbg-legend .dust { left: var(--x); bottom: -4cqh; width: calc(2.2cqh * var(--s)); height: calc(2.2cqh * var(--s)); border-radius: 50%; background: #ffe7a0; box-shadow: 0 0 2cqh .6cqh rgba(255,200,90,.8); opacity: 0; animation: ppRise calc(var(--t) * 1.2) linear var(--d) infinite; }

/* ---------- Rennstrecke ---------- */
.pbg-raceway { background: radial-gradient(120% 90% at 50% 50%, transparent 55%, rgba(0,40,10,.4)), repeating-linear-gradient(96deg, #3daa4c 0 3%, #47b956 3% 6%); }
.pbg-raceway .s-track { left: -10%; right: -10%; top: 30%; height: 44%; transform: rotate(-4deg); background: radial-gradient(.8cqh .8cqh at 20% 30%, rgba(255,255,255,.07), transparent), linear-gradient(180deg, #4b4e5c, #3a3d4a 50%, #464959); box-shadow: 0 2cqh 3cqh rgba(0,0,0,.25); }
.pbg-raceway .s-track::before, .pbg-raceway .s-track::after { content: ''; position: absolute; left: 0; right: 0; height: 8cqh; background: repeating-linear-gradient(90deg, #e63946 0 7cqh, #fff 7cqh 14cqh); }
.pbg-raceway .s-track::before { top: -8cqh; }
.pbg-raceway .s-track::after { bottom: -8cqh; }
.pbg-raceway .s-track > * { position: absolute; display: block; }
.pbg-raceway .s-dash { left: 0; top: 50%; width: calc(100% + 26cqh); height: 1.8cqh; margin-top: -.9cqh; background: repeating-linear-gradient(90deg, rgba(246,243,216,.85) 0 13cqh, transparent 13cqh 26cqh); animation: bgDash .5s linear infinite; }
@keyframes bgDash { to { transform: translateX(-26cqh); } }
.pbg-raceway .s-kart { left: 38%; top: 16%; height: 34%; animation: bgJitter .18s steps(2) infinite; }
.pbg-raceway .s-kart.b { left: 22%; top: 56%; height: 30%; animation-delay: -.09s; }
@keyframes bgJitter { from { transform: translateY(-.25cqh); } to { transform: translateY(.25cqh); } }
.pbg-raceway .s-flag { right: 7%; bottom: 7%; width: 24cqh; height: 15cqh; background: conic-gradient(#15151c 25%, #fff 0 50%, #15151c 0 75%, #fff 0) 0 0 / 5cqh 5cqh; transform: skewY(-10deg); transform-origin: 0 0; box-shadow: 0 1cqh 2cqh rgba(0,0,0,.3); animation: bgWave2 1.4s ease-in-out infinite alternate; }
.pbg-raceway .s-flag::before { content: ''; position: absolute; left: -1.6cqh; top: -2cqh; width: 1.6cqh; height: 26cqh; background: #e9ecf3; border-radius: 1cqh; }
@keyframes bgWave2 { from { transform: skewY(-10deg); } to { transform: skewY(-3deg) scaleX(.94); } }
.pbg-raceway .speed { left: 100%; top: calc(18% + var(--r) * 60%); width: calc(30cqh * var(--s)); height: max(1px, .7cqh); border-radius: 1cqh; background: linear-gradient(90deg, rgba(255,255,255,0), rgba(255,255,255,.85)); animation: bgSpeed calc(var(--t) * .18) linear var(--d) infinite; }
@keyframes bgSpeed { from { transform: translateX(0); } to { transform: translateX(calc(-100cqw - 40cqh)); } }

/* ---------- Neon-Gleise ---------- */
.pbg-neonrail { background: radial-gradient(1px 1px at 10% 12%, #fff, transparent), radial-gradient(1px 1px at 26% 30%, #fff, transparent), radial-gradient(1px 1px at 44% 8%, #fff, transparent), radial-gradient(1px 1px at 90% 20%, #fff, transparent), radial-gradient(40% 40% at 70% 63%, rgba(255,80,160,.55), transparent 70%), linear-gradient(180deg, #0b0526 0%, #23094d 38%, #6b1466 58%, #ff4f8b 63%, #1a0631 63.3%, #0c0420 100%); }
.pbg-neonrail .s-sun { left: calc(70% - 30cqh); bottom: 37%; width: 60cqh; height: 30cqh; border-radius: 30cqh 30cqh 0 0; background: linear-gradient(180deg, #ffe66d, #ff9f43 45%, #ff3d8b); -webkit-mask: linear-gradient(180deg, #000 0 46%, transparent 46% 52%, #000 52% 63%, transparent 63% 69%, #000 69% 78%, transparent 78% 85%, #000 85% 91%, transparent 91%); mask: linear-gradient(180deg, #000 0 46%, transparent 46% 52%, #000 52% 63%, transparent 63% 69%, #000 69% 78%, transparent 78% 85%, #000 85% 91%, transparent 91%); }
.pbg-neonrail .s-mtn { left: 0; bottom: 37%; width: 100%; height: 14%; }
.pbg-neonrail .s-floor { left: 0; right: 0; top: 63%; bottom: 0; overflow: hidden; perspective: 22cqh; perspective-origin: 70% 0; -webkit-mask: linear-gradient(180deg, transparent, #000 45%); mask: linear-gradient(180deg, transparent, #000 45%); }
.pbg-neonrail .s-grid { position: absolute; left: -150%; right: -150%; top: 0; height: 400%; transform-origin: 50% 0; transform: rotateX(74deg); }
.pbg-neonrail .s-grid > i { position: absolute; left: 0; right: 0; top: -16cqh; bottom: 0; background: linear-gradient(90deg, rgba(255,79,216,.9) 0 .6cqh, transparent .6cqh) 0 0 / 16cqh 100%, linear-gradient(180deg, rgba(255,79,216,.9) 0 .6cqh, transparent .6cqh) 0 0 / 100% 16cqh; animation: bgGrid .8s linear infinite; }
@keyframes bgGrid { to { transform: translateY(16cqh); } }
.pbg-neonrail .s-rails { left: 0; top: 63%; width: 100%; height: 37%; filter: drop-shadow(0 0 1.2cqh rgba(61,242,255,.8)); }

/* ---------- Bombenstimmung ---------- */
.pbg-bomber { background: #4a9f55; }
.pbg-bomber .s-arena { inset: 0; background:
  url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 80'%3E%3Cg%3E%3Crect x='0' y='0' width='20' height='20' fill='%23c8743a'/%3E%3Crect x='80' y='0' width='20' height='20' fill='%23c8743a'/%3E%3Crect x='40' y='40' width='20' height='20' fill='%23c8743a'/%3E%3Crect x='100' y='60' width='20' height='20' fill='%23c8743a'/%3E%3Crect x='60' y='60' width='20' height='20' fill='%23c8743a'/%3E%3C/g%3E%3Cg stroke='%238a4a22' stroke-width='1.6' fill='none'%3E%3Cpath d='M0 7H20M0 14H20M10 0V7M5 7V14M15 7V14M10 14V20M80 7H100M80 14H100M90 0V7M85 7V14M95 7V14M90 14V20M40 47H60M40 54H60M50 40V47M45 47V54M55 47V54M50 54V60M100 67H120M100 74H120M110 60V67M105 67V74M115 67V74M110 74V80M60 67H80M60 74H80M70 60V67M65 67V74M75 67V74M70 74V80'/%3E%3C/g%3E%3Cg fill='%23e8a066'%3E%3Crect x='0' y='0' width='20' height='1.6'/%3E%3Crect x='80' y='0' width='20' height='1.6'/%3E%3Crect x='40' y='40' width='20' height='1.6'/%3E%3Crect x='100' y='60' width='20' height='1.6'/%3E%3Crect x='60' y='60' width='20' height='1.6'/%3E%3C/g%3E%3C/svg%3E") 0 0 / 108cqh 72cqh,
  url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Crect width='40' height='40' fill='%234a9f55'/%3E%3Crect width='20' height='20' fill='%2354ab5e'/%3E%3Crect x='20' y='20' width='20' height='20' fill='%2354ab5e'/%3E%3Crect x='21' y='21' width='18' height='18' rx='2' fill='%238e97ab'/%3E%3Cpath d='M22 38V23Q22 22 23 22H38' stroke='%23d0d6e0' stroke-width='2' fill='none'/%3E%3Cpath d='M23 38H37Q38 38 38 37V23' stroke='%235b6378' stroke-width='2' fill='none'/%3E%3Crect x='21' y='38' width='18' height='2' fill='%23000' opacity='.18'/%3E%3C/svg%3E") 0 0 / 36cqh 36cqh; }
.pbg-bomber::after { content: ''; position: absolute; inset: 0; background: radial-gradient(130% 110% at 50% 40%, transparent 55%, rgba(10,30,15,.55)); }
.pbg-bomber .s-boom { left: 54cqh; top: 18cqh; width: 54cqh; height: 54cqh; clip-path: polygon(34% 0, 66% 0, 66% 34%, 100% 34%, 100% 66%, 66% 66%, 66% 100%, 34% 100%, 34% 66%, 0 66%, 0 34%, 34% 34%); background: radial-gradient(circle, #fffbe0 0 10%, #ffd23f 24%, #ff8a2f 50%, #e63946 78%); opacity: 0; animation: bgBoom 4s ease-out infinite; }
@keyframes bgBoom { 0%, 55% { transform: scale(.2); opacity: 0; } 59% { transform: scale(1); opacity: 1; } 76% { transform: scale(1.04); opacity: 0; } 100% { opacity: 0; } }
.pbg-bomber .s-bombw { right: 16%; top: 14%; height: 58%; aspect-ratio: 1; animation: bgThrob 1s ease-in-out infinite; }
@keyframes bgThrob { 50% { transform: scale(1.06); } }
.pbg-bomber .fuse { left: 86.7%; top: 6.7%; width: 18cqh; height: 18cqh; margin: -9cqh; background: radial-gradient(circle, #fff 0 9%, #ffe066 20%, rgba(255,130,40,.7) 38%, transparent 62%); clip-path: polygon(50% 0, 58% 34%, 85% 15%, 66% 42%, 100% 50%, 66% 58%, 85% 85%, 58% 66%, 50% 100%, 42% 66%, 15% 85%, 34% 58%, 0 50%, 34% 42%, 15% 15%, 42% 34%); animation: bgFuse .24s steps(2) infinite alternate; }
@keyframes bgFuse { from { transform: scale(.7) rotate(0); } to { transform: scale(1.1) rotate(24deg); } }

/* ---------- Schneeballschlacht ---------- */
.pbg-snowball { background: radial-gradient(60% 80% at 85% -10%, rgba(255,255,255,.85), transparent 60%), linear-gradient(180deg, #7fbfee 0%, #a9d8f7 45%, #d8eefc 72%); }
.pbg-snowball .s-snowhill { left: 0; bottom: 0; width: 100%; height: 50%; }
.pbg-snowball .s-pine.a { right: 7%; bottom: 25%; height: 52%; }
.pbg-snowball .s-pine.b { right: 17%; bottom: 30%; height: 36%; }
.pbg-snowball .s-fort { left: 36%; bottom: 7%; height: 44%; }
.pbg-snowball .s-snowman { left: 19%; bottom: 10%; height: 58%; }
.pbg-snowball .flake { left: var(--x); top: -6cqh; width: calc(2.8cqh * var(--s)); height: calc(2.8cqh * var(--s)); border-radius: 50%; background: #fff; box-shadow: 0 0 1cqh rgba(255,255,255,.9); opacity: 0; animation: bgSnow calc(var(--t) * 1.3) linear var(--d) infinite; }
@keyframes bgSnow { 0% { transform: translate(0, 0); opacity: 0; } 10% { opacity: 1; } 50% { transform: translate(5cqh, 55cqh); } 100% { transform: translate(-2cqh, 112cqh); opacity: .9; } }

/* ---------- Kurvenfieber ---------- */
.pbg-curve { background: linear-gradient(rgba(255,255,255,.045) 1px, transparent 1px) 0 0 / 20px 20px, linear-gradient(90deg, rgba(255,255,255,.045) 1px, transparent 1px) 0 0 / 20px 20px, radial-gradient(120% 100% at 50% 50%, #14113d, #07061c); }
.pbg-curve .s-trails { inset: 0; width: 100%; height: 100%; }
.pbg-curve .head { left: var(--x); top: var(--y); width: 4.4cqh; height: 4.4cqh; margin: -2.2cqh; border-radius: 50%; background: #fff; --c: #ff4fa3; box-shadow: 0 0 2cqh 1cqh var(--c), 0 0 7cqh 2cqh var(--c); animation: bgHead 1.1s ease-in-out calc(var(--i) * -.3s) infinite alternate; }
.pbg-curve .head:nth-child(3) { --c: #3df2ff; }
.pbg-curve .head:nth-child(4) { --c: #ffd23f; }
.pbg-curve .head:nth-child(5) { --c: #7dff6b; }
@keyframes bgHead { from { transform: scale(.8); opacity: .75; } to { transform: scale(1.15); opacity: 1; } }

/* ---------- Pinguin-Curling ---------- */
.pbg-curling { background: repeating-linear-gradient(172deg, rgba(255,255,255,.3) 0 1px, transparent 1px 14px), radial-gradient(80% 120% at 60% 0%, #fff, rgba(255,255,255,0) 70%), linear-gradient(180deg, #e6f6ff 0%, #c4e6f8 55%, #a8d5ef 100%); }
.pbg-curling .s-lines { left: 0; right: 0; top: 45%; height: max(1px, .8cqh); background: #d62839; opacity: .5; }
.pbg-curling .s-house { right: 5%; top: 18%; width: 150cqh; height: 54cqh; border-radius: 50%; background: radial-gradient(closest-side, #fff 0 10%, #d62839 10.5% 30%, #fff 30.5% 52%, #2a6fdb 52.5% 97%, rgba(42,111,219,0) 100%); opacity: .88; }
.pbg-curling .s-curl { right: 10%; bottom: 5%; height: 86%; }

/* ---------- Turmbau ins All ---------- */
.pbg-tower { background: radial-gradient(1px 1px at 12% 10%, #fff, transparent), radial-gradient(1px 1px at 36% 22%, #fff, transparent), radial-gradient(1.2px 1.2px at 48% 6%, #fff, transparent), radial-gradient(1px 1px at 66% 16%, #fff, transparent), radial-gradient(1px 1px at 90% 8%, #fff, transparent), linear-gradient(180deg, #090726 0%, #1d1656 30%, #3f3aa0 55%, #6f8fe8 78%, #b9dcff 100%); }
.pbg-tower .s-planet { left: 10%; top: 8%; height: 40%; }
.pbg-tower .s-clouds { left: -5%; right: -5%; bottom: -6%; height: 40%; z-index: 1; background: radial-gradient(circle at 6% 84%, #fff 0 12cqh, transparent calc(12cqh + 1px)), radial-gradient(circle at 17% 74%, #f4f9ff 0 14cqh, transparent calc(14cqh + 1px)), radial-gradient(circle at 31% 92%, #fff 0 13cqh, transparent calc(13cqh + 1px)), radial-gradient(circle at 46% 82%, #f4f9ff 0 15cqh, transparent calc(15cqh + 1px)), radial-gradient(circle at 61% 94%, #fff 0 13cqh, transparent calc(13cqh + 1px)), radial-gradient(circle at 75% 78%, #f4f9ff 0 16cqh, transparent calc(16cqh + 1px)), radial-gradient(circle at 90% 90%, #fff 0 14cqh, transparent calc(14cqh + 1px)), radial-gradient(circle at 100% 76%, #f4f9ff 0 12cqh, transparent calc(12cqh + 1px)); filter: drop-shadow(0 -1cqh 0 rgba(170,200,255,.55)); }
.pbg-tower .s-clouds::before { content: ''; position: absolute; left: 0; right: 0; bottom: 60%; height: 50%; opacity: .55; background: radial-gradient(circle at 12% 100%, #dbe9ff 0 9cqh, transparent calc(9cqh + 1px)), radial-gradient(circle at 38% 100%, #dbe9ff 0 11cqh, transparent calc(11cqh + 1px)), radial-gradient(circle at 66% 100%, #dbe9ff 0 10cqh, transparent calc(10cqh + 1px)), radial-gradient(circle at 92% 100%, #dbe9ff 0 9cqh, transparent calc(9cqh + 1px)); }
.pbg-tower .s-tower { right: 12%; bottom: -2%; height: 104%; transform-origin: 50% 100%; animation: bgSway 5s ease-in-out infinite alternate; }

/* ---------- Hütchenspiel ---------- */
.pbg-shell { background: radial-gradient(42% 90% at 64% 55%, rgba(120,220,150,.4), transparent 70%), radial-gradient(120% 120% at 60% 40%, #1f7a4d 0%, #135237 55%, #0a2e20 100%); }
.pbg-shell::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 12%; background: linear-gradient(180deg, #8a4b23, #5c2f14); box-shadow: 0 -1cqh 2cqh rgba(0,0,0,.4); }
.pbg-shell .s-lamp { left: calc(64% - 50cqh); top: -30%; width: 100cqh; height: 130%; background: linear-gradient(180deg, rgba(255,250,220,.42), rgba(255,250,220,0) 88%); clip-path: polygon(40% 0, 60% 0, 100% 100%, 0 100%); }
.pbg-shell .s-shell { left: 64%; bottom: 9%; height: 72%; transform: translateX(-50%); }

/* ---------- Minigolf: Windmühlen-Loch ---------- */
.pbg-golf { --mx: calc(83cqw - 32.5cqh); --hx: calc(var(--mx) - 62cqh); background: radial-gradient(46% 70% at 16% -8%, rgba(255,250,214,.9), rgba(255,250,214,0) 70%), linear-gradient(180deg, #4fa8ec 0%, #86c9f6 40%, #c4e8fd 66%, #e4f6ff 80%); }
.pbg-golf .cloud { left: 0; top: var(--y); width: calc(36cqh * var(--s)); height: calc(12cqh * var(--s)); opacity: .9; background: radial-gradient(circle at 30% 70%, #fff 0 32%, transparent 33%), radial-gradient(circle at 55% 45%, #fff 0 38%, transparent 39%), radial-gradient(circle at 78% 72%, #fff 0 26%, transparent 27%), linear-gradient(#fff, #fff) 50% 100% / 70% 36% no-repeat; animation: golfCloud calc(var(--t) * 10) linear calc(var(--d) * 10) infinite; }
@keyframes golfCloud { from { transform: translateX(-32cqh); } to { transform: translateX(calc(100cqw + 4cqh)); } }
.pbg-golf .s-hills { left: 0; bottom: 20%; width: 100%; height: 36%; }
.pbg-golf .s-trees { left: 0; right: 0; bottom: 20.5%; height: 30%; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 160 40'%3E%3Cg fill='%237a4a24'%3E%3Crect x='12.8' y='26' width='2.4' height='14'/%3E%3Crect x='65' y='18' width='3' height='22'/%3E%3Crect x='95' y='24' width='2.4' height='16'/%3E%3Crect x='127' y='24' width='2.6' height='16'/%3E%3C/g%3E%3Ccircle cx='14' cy='21' r='9' fill='%232f8a46'/%3E%3Ccircle cx='10.8' cy='17.6' r='4.2' fill='%2357b066'/%3E%3Ccircle cx='66.5' cy='14' r='11' fill='%23277a3e'/%3E%3Ccircle cx='62.6' cy='9.6' r='5' fill='%234ea35c'/%3E%3Ccircle cx='91' cy='25' r='7.5' fill='%23348f4b'/%3E%3Ccircle cx='101' cy='21' r='8.6' fill='%232f8a46'/%3E%3Ccircle cx='98' cy='17.4' r='3.8' fill='%235cb46a'/%3E%3Ccircle cx='128.3' cy='20' r='9.5' fill='%232a8442'/%3E%3Ccircle cx='125' cy='16.4' r='4.2' fill='%2353ab62'/%3E%3Cg fill='%233d9a50'%3E%3Ccircle cx='37' cy='35' r='5'/%3E%3Ccircle cx='44' cy='33.5' r='6'/%3E%3Ccircle cx='50.5' cy='35.5' r='4.5'/%3E%3Ccircle cx='148' cy='35' r='4.5'/%3E%3Ccircle cx='154' cy='34' r='5.4'/%3E%3C/g%3E%3Cg fill='%2364bb70'%3E%3Ccircle cx='42.4' cy='31.4' r='2.4'/%3E%3Ccircle cx='152.6' cy='32' r='2.2'/%3E%3C/g%3E%3Cpath d='M0 40V36C8 33 16 34 24 36C34 33 46 33 56 36C70 33 84 34 96 36C110 33 124 33 136 36C146 34 154 34 160 36V40Z' fill='%23358f48'/%3E%3C/svg%3E") 0 100% / 120cqh 30cqh repeat-x; }
.pbg-golf .s-green { left: 0; right: 0; bottom: 0; height: 22%; background: linear-gradient(180deg, rgba(255,255,255,.14), transparent 45%, rgba(0,60,20,.22)), repeating-linear-gradient(100deg, #5cbf66 0 9cqh, #4eb15a 9cqh 18cqh); }
/* Holzbande mit Pfosten (wie im Spiel) */
.pbg-golf .s-green::before { content: ''; position: absolute; left: 0; right: 0; top: -3.6cqh; height: 4.4cqh; background: linear-gradient(180deg, #e8b072 0 24%, #c98a4a 24% 72%, #8a5a2b 72%); box-shadow: 0 .8cqh 1.2cqh rgba(0,60,20,.25); }
.pbg-golf .s-green::after { content: ''; position: absolute; left: 0; right: 0; top: -4.6cqh; height: 6.4cqh; background: linear-gradient(180deg, #f0bf86 0 18%, #b97a3d 18% 82%, #7a4a24 82%); -webkit-mask: repeating-linear-gradient(90deg, transparent 0 3cqh, #000 3cqh 6.2cqh, transparent 6.2cqh 40cqh); mask: repeating-linear-gradient(90deg, transparent 0 3cqh, #000 3cqh 6.2cqh, transparent 6.2cqh 40cqh); }
.pbg-golf .s-shroom { left: calc(var(--hx) - 54cqh); bottom: 5%; height: 25%; }
.pbg-golf .s-hole { left: var(--hx); bottom: 11%; width: 11cqh; height: 3.4cqh; margin: 0 0 -1.7cqh -5.5cqh; border-radius: 50%; background: radial-gradient(70% 80% at 50% 62%, #0b1a0e 55%, #1d3d22 100%); box-shadow: 0 .45cqh 0 rgba(255,255,255,.35); }
.pbg-golf .s-gflag { left: var(--hx); bottom: 11%; height: 58%; transform: translateX(-10%); }
.pbg-golf .s-gflag .flg { transform-box: fill-box; transform-origin: 0 50%; animation: golfFlag 1.5s ease-in-out infinite alternate; }
@keyframes golfFlag { from { transform: skewY(-3deg) scaleX(1); } to { transform: skewY(4deg) scaleX(.9); } }
.pbg-golf .s-ball { left: var(--hx); bottom: 11%; width: 4.6cqh; height: 4.6cqh; margin: 0 0 -.4cqh -2.3cqh; border-radius: 50%; background: radial-gradient(circle at 34% 30%, #fff 0 30%, #eef2f4 50%, #b9c4cc 100%); box-shadow: 0 .7cqh .6cqh rgba(0,60,20,.35); animation: golfRoll 7s linear -2.8s infinite; }
/* Ball kommt aus dem Mühlentunnel (--mx, 62cqh rechts vom Loch), rollt aus und fällt ins Loch */
@keyframes golfRoll {
  0% { transform: translateX(62cqh); opacity: 0; animation-timing-function: linear; }
  4% { transform: translateX(60.5cqh); opacity: 1; animation-timing-function: cubic-bezier(.25,.6,.4,1); }
  62% { transform: translateX(0) scale(1); opacity: 1; animation-timing-function: ease-in; }
  70% { transform: translate(0, 1.4cqh) scale(.45); opacity: 0; }
  100% { transform: translate(0, 1.4cqh) scale(.45); opacity: 0; }
}
.pbg-golf .s-millw { left: var(--mx); bottom: 9%; height: 78%; aspect-ratio: 100 / 120; transform: translateX(-50%); }
/* Profilkopf: Mühle (und damit Loch + Pilz) links von den Kopf-Buttons halten, auf dem Handy über dem Avatar */
.pf-hero > .pf-bg.pbg-golf { --mx: min(calc(83cqw - 32.5cqh), calc(100cqw - 250px)); }
@media (max-width: 640px) { .pf-hero > .pf-bg.pbg-golf { --mx: min(calc(83cqw - 32.5cqh), calc(100cqw - 235px)); } }
.pbg-golf .s-sails { position: absolute; left: 50%; top: 33.333%; width: 100%; aspect-ratio: 1; transform: translate(-50%, -50%); }
.pbg-golf .s-sails > svg.sc { inset: 0; width: 100%; height: 100%; filter: drop-shadow(0 .6cqh .5cqh rgba(30,60,90,.3)); animation: bgSpin 9s linear infinite; }

/* ---------- Limbo-Lava ---------- */
.pbg-limbo { background: radial-gradient(60% 40% at 72% 60%, rgba(255,120,40,.45), transparent 70%), linear-gradient(180deg, #120406 0%, #240a0d 30%, #4a120e 48%, #8a2a12 56%); }
.pbg-limbo .s-ceil { left: 0; top: 0; width: 100%; height: 30%; }
.pbg-limbo .s-shore { left: 0; bottom: 43%; width: 100%; height: 12%; }
.pbg-limbo .s-lava { left: 0; right: 0; bottom: 0; height: 44%; overflow: hidden; background: linear-gradient(180deg, #ffd04a 0, #ff9a1f 5%, #f0601c 30%, #d2401a 62%, #9a1e0c 100%); }
.pbg-limbo .s-lava > i { position: absolute; left: 0; display: block; }
/* Hinten: dünne Krustenschlieren (Kachel 50×15 cqh, viewBox im gleichen Verhältnis) */
.pbg-limbo .s-lava > i.a { top: 3%; height: 34%; width: calc(100% + 50cqh); opacity: .85; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 30'%3E%3Cg fill='%237a1a0a' opacity='.7'%3E%3Cellipse cx='9' cy='6' rx='7' ry='1.1'/%3E%3Cellipse cx='31' cy='14' rx='11' ry='1.5'/%3E%3Cellipse cx='53' cy='5' rx='6' ry='1'/%3E%3Cellipse cx='71' cy='20' rx='13' ry='1.8'/%3E%3Cellipse cx='90' cy='10' rx='8' ry='1.2'/%3E%3Cellipse cx='18' cy='24' rx='9' ry='1.5'/%3E%3Cellipse cx='46' cy='26' rx='7' ry='1.3'/%3E%3C/g%3E%3Cpath d='M0 9C8 8 16 10.5 25 9S42 7.5 50 9S68 10.5 75 9S92 7.5 100 9M0 18C10 17 22 19.5 34 18S58 16.5 70 18S88 19.5 100 18' stroke='%23ffe08a' stroke-width='.7' fill='none' opacity='.55'/%3E%3C/svg%3E") 0 0 / 50cqh 100% repeat-x; animation: limboFlowA 34s linear infinite; }
/* Vorne: größere Krustenschollen und helle Strömungslinien (Kachel 90×28 cqh) */
.pbg-limbo .s-lava > i.b { top: 36%; height: 64%; width: calc(100% + 90cqh); background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 180 56'%3E%3Cpath d='M0 22C20 19 40 25 60 22S100 19 120 22S160 25 180 22M0 39C30 36 50 42 90 39S150 36 180 39' stroke='%23ffd04a' stroke-width='1.3' fill='none' opacity='.6'/%3E%3Cg fill='%23a32a0e' opacity='.92'%3E%3Cellipse cx='22' cy='12' rx='16' ry='3.4'/%3E%3Cellipse cx='72' cy='30' rx='22' ry='4.6'/%3E%3Cellipse cx='132' cy='13' rx='14' ry='3'/%3E%3Cellipse cx='158' cy='44' rx='18' ry='4'/%3E%3Cellipse cx='38' cy='47' rx='12' ry='3'/%3E%3Cellipse cx='106' cy='50' rx='10' ry='2.6'/%3E%3C/g%3E%3Cg fill='%235c1407'%3E%3Cellipse cx='21' cy='12.6' rx='11' ry='2.2'/%3E%3Cellipse cx='70' cy='30.8' rx='16' ry='3'/%3E%3Cellipse cx='131' cy='13.5' rx='9' ry='1.9'/%3E%3Cellipse cx='157' cy='44.8' rx='12' ry='2.6'/%3E%3Cellipse cx='37' cy='47.6' rx='7.5' ry='1.9'/%3E%3Cellipse cx='105' cy='50.5' rx='6' ry='1.6'/%3E%3C/g%3E%3C/svg%3E") 0 0 / 90cqh 100% repeat-x; animation: limboFlowB 24s linear infinite; }
@keyframes limboFlowA { to { transform: translateX(-50cqh); } }
@keyframes limboFlowB { to { transform: translateX(-90cqh); } }
.pbg-limbo .s-heat { left: 0; right: 0; bottom: 0; height: 60%; background: radial-gradient(55% 70% at 50% 100%, rgba(255,190,90,.35), transparent 70%); animation: bgPulse 3.4s ease-in-out infinite; }
.pbg-limbo .s-path { left: 0; right: 0; bottom: 10%; height: 13%; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 16' preserveAspectRatio='none'%3E%3ClinearGradient id='g' x2='0' y2='1'%3E%3Cstop offset='0' stop-color='%233a2321'/%3E%3Cstop offset='.7' stop-color='%232b1716'/%3E%3Cstop offset='1' stop-color='%23c4501c'/%3E%3C/linearGradient%3E%3Crect width='40' height='5' fill='%237a5048'/%3E%3Crect width='40' height='1' fill='%23b07c68'/%3E%3Crect y='5' width='40' height='11' fill='url(%23g)'/%3E%3Crect y='5' width='40' height='1.2' fill='%231e0e0c'/%3E%3Cpath d='M.5 0V16M20 5V16' stroke='%231e0e0c' stroke-width='1'/%3E%3Cpath d='M13 0L11 5M32 0L30 5' stroke='%234a302e' stroke-width='.8'/%3E%3C/svg%3E") 0 0 / 32.5cqh 100% repeat-x; box-shadow: 0 1.4cqh 3cqh rgba(255,110,30,.5); }
.pbg-limbo .s-rigw { right: 6%; bottom: 22%; height: min(52%, 36cqw); aspect-ratio: 180 / 72; } /* schmal: nie breiter als 90 % */
/* Profilkopf: Stange nicht unter den Kopf-Buttons; auf dem Handy links über dem Avatar */
.pf-hero > .pf-bg.pbg-limbo .s-rigw { right: max(6%, 190px); }
@media (max-width: 640px) { .pf-hero > .pf-bg.pbg-limbo .s-rigw { right: auto; left: 4%; } }
.pbg-limbo .s-barglow { position: absolute; left: 2%; right: 2%; top: 2%; height: 46%; border-radius: 50%; background: radial-gradient(closest-side, rgba(255,226,140,.8), rgba(255,130,40,.32) 55%, transparent); animation: bgPulse 2.6s ease-in-out infinite; }
.pbg-limbo .s-limbo { filter: drop-shadow(0 0 1.4cqh rgba(255,140,50,.55)); }
.pbg-limbo .s-flames path { transform-box: fill-box; transform-origin: 50% 100%; animation: limboFlame .9s ease-in-out infinite alternate; }
.pbg-limbo .s-flames .f1 { animation-duration: 1.2s; animation-delay: -.4s; fill: #ffd04a; }
.pbg-limbo .s-flames .f2 { animation-duration: .75s; animation-delay: -.2s; fill: #ff8a1f; }
@keyframes limboFlame { from { transform: scale(.75, .6); opacity: .7; } to { transform: scale(1, 1.15); opacity: 1; } }
.pbg-limbo .blob { left: var(--x); bottom: var(--y); width: calc(6cqh * var(--s)); height: calc(3.2cqh * var(--s)); margin-left: calc(-3cqh * var(--s)); border-radius: 50% 50% 40% 40% / 100% 100% 10% 10%; background: radial-gradient(circle at 40% 35%, #fff2b0, #ffb13d 45%, #e8461a); box-shadow: 0 0 1.6cqh rgba(255,170,60,.8); transform-origin: 50% 100%; opacity: 0; animation: limboBlob calc(var(--t) * .7) ease-out var(--d) infinite; }
@keyframes limboBlob { 0% { transform: scale(.2, .2); opacity: 0; } 15% { opacity: 1; } 70% { transform: scale(1, 1); opacity: 1; } 78% { transform: scale(1.35, .5); opacity: .2; } 100% { transform: scale(1.4, .3); opacity: 0; } }
.pbg-limbo .lember { left: var(--x); bottom: 14%; width: calc(1.5cqh * var(--s)); height: calc(1.5cqh * var(--s)); border-radius: 50%; background: #ffe08a; box-shadow: 0 0 1.4cqh .5cqh rgba(255,130,40,.9); opacity: 0; animation: limboEmber calc(var(--t) * .9) ease-out var(--d) infinite; }
@keyframes limboEmber { 0% { transform: translate(0, 0); opacity: 0; } 12% { opacity: 1; } 100% { transform: translate(calc((var(--r) - .5) * 26cqh), -78cqh); opacity: 0; } }

/* ---------- Spielhalle ---------- */
.pbg-arcade { background: radial-gradient(70% 90% at 50% 50%, rgba(120,60,255,.25), transparent 70%), linear-gradient(180deg, #0e0828 0%, #1a0b3f 60%, #2a0d4f 100%); }
.pbg-arcade .s-crt { inset: 0; z-index: 2; background: repeating-linear-gradient(180deg, rgba(0,0,0,.28) 0 1px, transparent 1px 3px), radial-gradient(130% 120% at 50% 50%, transparent 60%, rgba(0,0,0,.55)); }
.pbg-arcade .s-px { shape-rendering: crispEdges; }
.pbg-arcade .s-px-ufo { left: 58%; top: 12%; height: 30%; filter: drop-shadow(0 0 1.6cqh #ff4fd8); animation: bgHop 1.2s steps(1) infinite; }
.pbg-arcade .s-px-blob { left: 40%; top: 46%; height: 30%; filter: drop-shadow(0 0 1.6cqh #ffc933); animation: bgHop 1s steps(1) -.5s infinite; }
.pbg-arcade .s-px-heart { left: 79%; top: 50%; height: 20%; filter: drop-shadow(0 0 1.6cqh #ff4f6d); animation: bgBlink 1.6s steps(1) infinite; }
.pbg-arcade .s-px-coin { left: 88%; top: 14%; height: 22%; filter: drop-shadow(0 0 1.6cqh #ffd23f); animation: bgCoin .9s steps(4) infinite; }
.pbg-arcade .s-px-rocket { left: 22%; top: 14%; height: 34%; filter: drop-shadow(0 0 1.6cqh #3df2ff); animation: bgPxDrift 3s steps(6) infinite alternate; }
.pbg-arcade .s-bricks { left: 0; right: 0; bottom: 0; height: 14cqh; background: linear-gradient(90deg, #12082e 0 .8cqh, transparent .8cqh) 0 0 / 14cqh 7cqh, linear-gradient(90deg, #12082e 0 .8cqh, transparent .8cqh) 7cqh 7cqh / 14cqh 7cqh, linear-gradient(180deg, #ff4fd8 0 .9cqh, #7a2a9a .9cqh 6.2cqh, #12082e 6.2cqh) 0 0 / 100% 7cqh; }
.pbg-arcade .pxstar { left: var(--x); top: calc(var(--y) * .7); width: 1.9cqh; height: 1.9cqh; background: #fff; box-shadow: 0 0 1cqh #fff; animation: bgBlink var(--t) steps(1) var(--d) infinite; }
@keyframes bgHop { 0%, 49% { transform: translateY(0); } 50%, 100% { transform: translateY(-3cqh); } }
@keyframes bgBlink { 0%, 49% { opacity: 1; } 50%, 100% { opacity: .2; } }
@keyframes bgCoin { 0% { transform: scaleX(1); } 25% { transform: scaleX(.55); } 50% { transform: scaleX(.15); } 75% { transform: scaleX(.55); } }
@keyframes bgPxDrift { from { transform: translateX(-4cqh); } to { transform: translateX(4cqh); } }

/* ---------- Mondnacht am Steg ---------- */
.pbg-moonpier { background: radial-gradient(1px 1px at 8% 14%, #fff, transparent), radial-gradient(1px 1px at 24% 30%, #fff, transparent), radial-gradient(1.2px 1.2px at 40% 10%, #fff, transparent), radial-gradient(1px 1px at 58% 24%, #fff, transparent), radial-gradient(1px 1px at 66% 6%, #fff, transparent), radial-gradient(32% 70% at 80% 24%, rgba(220,230,255,.22), transparent 70%), linear-gradient(180deg, #091233 0%, #182a68 50%, #2a4588 59%, #13265a 59.4%, #0b1838 100%); }
.pbg-moonpier .s-moon { right: 14%; top: 8%; width: 34cqh; height: 34cqh; }
.pbg-moonpier .s-treeline { left: 0; bottom: 40.6%; width: 100%; height: 12%; }
.pbg-moonpier .s-glitter { right: calc(14% + 5cqh); width: 24cqh; top: 60%; bottom: 0; }
.pbg .s-glitter > i { position: absolute; inset: 0; background: repeating-linear-gradient(180deg, rgba(255,250,225,.85) 0 .8cqh, transparent .8cqh 3.6cqh); -webkit-mask: linear-gradient(90deg, transparent, #000 30%, #000 70%, transparent), linear-gradient(180deg, #000, transparent); -webkit-mask-composite: source-in; mask: linear-gradient(90deg, transparent, #000 30%, #000 70%, transparent), linear-gradient(180deg, #000, transparent); mask-composite: intersect; animation: bgGlit 1.5s ease-in-out infinite alternate; }
.pbg .s-glitter > i + i { background-position: 0 1.8cqh; transform: scaleX(.7); animation-delay: -.75s; }
.pbg-moonpier .s-pierw { left: 0; bottom: 16%; height: 56%; aspect-ratio: 260 / 90; }
.pbg-moonpier .s-lantern { position: absolute; left: 89%; top: 16%; width: 34cqh; height: 34cqh; margin: -17cqh; border-radius: 50%; background: radial-gradient(circle, rgba(255,214,120,.75), rgba(255,180,80,.22) 40%, transparent 70%); animation: bgFlicker 3s ease-in-out infinite; }
.pbg-moonpier .firefly { left: var(--x); top: calc(26% + var(--y) * .3); width: 1.7cqh; height: 1.7cqh; border-radius: 50%; background: #f6ff9a; box-shadow: 0 0 2cqh .8cqh rgba(220,255,120,.7); animation: bgFly calc(var(--t) * 1.3) ease-in-out var(--d) infinite; }
@keyframes bgFly { 0%, 100% { transform: translate(0, 0); opacity: .1; } 25% { transform: translate(4cqh, -3cqh); opacity: 1; } 50% { transform: translate(8cqh, 1cqh); opacity: .3; } 75% { transform: translate(3cqh, 4cqh); opacity: .9; } }

/* ---------- Regen auf dem Wasser ---------- */
.pbg-rain { background: radial-gradient(60% 50% at 30% 0%, rgba(40,60,80,.6), transparent 70%), radial-gradient(50% 45% at 80% 5%, rgba(40,60,80,.5), transparent 70%), linear-gradient(180deg, #4a6478 0%, #6f8b9c 34%, #8aa3b0 47%, #3a5a6c 47.5%, #24414f 75%, #1a3240 100%); }
.pbg-rain .s-shore { left: 0; bottom: 52.5%; width: 100%; height: 10%; }
.pbg-rain .s-mist { left: 0; right: 0; top: 30%; height: 30%; background: linear-gradient(180deg, transparent, rgba(200,220,230,.32) 55%, transparent); }
.pbg-rain .s-bobw { left: 64%; top: 66%; height: 22%; aspect-ratio: 20 / 30; margin-left: -5.5cqh; animation: bgBob 2.6s ease-in-out infinite alternate; }
.pbg-rain .s-ring { position: absolute; left: 50%; top: 68%; width: 40cqh; height: 10cqh; margin: -5cqh -20cqh; border-radius: 50%; border: max(1px, .5cqh) solid rgba(225,240,250,.65); animation: bgRipple 3s ease-out infinite; }
.pbg-rain .s-ring.b { animation-delay: -1.5s; }
.pbg-rain .drop { left: var(--x); top: -20cqh; width: max(1px, .4cqh); height: calc(15cqh * var(--s)); background: linear-gradient(180deg, rgba(220,235,245,0), rgba(220,235,245,.8)); animation: bgRain calc(var(--t) * .14) linear var(--d) infinite; }
@keyframes bgRain { from { transform: translate(0, 0) rotate(12deg); } to { transform: translate(-27cqh, 128cqh) rotate(12deg); } }
.pbg-rain .ripple { left: var(--x); top: calc(54% + var(--y) * .42); width: 24cqh; height: 6.5cqh; margin: -3.25cqh -12cqh; border-radius: 50%; border: max(1px, .5cqh) solid rgba(225,240,250,.7); opacity: 0; animation: bgRipple calc(var(--t) * .45) ease-out var(--d) infinite; }

/* ---------- Seerosenteich ---------- */
.pbg-lilypond { background: radial-gradient(40% 70% at 70% 30%, rgba(160,255,220,.22), transparent 70%), linear-gradient(160deg, #1d6b64 0%, #13504f 50%, #0c3a40 100%); }
.pbg .s-caustic { inset: -75cqh; opacity: .14; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'%3E%3Cpath d='M0 14C10 8 18 22 30 16S48 6 60 14M0 44C12 38 20 52 32 46S50 36 60 44M14 0C8 12 22 18 16 30S6 48 14 60M44 0C38 10 52 20 46 32S36 50 44 60' stroke='%23d8fff4' stroke-width='1.6' fill='none'/%3E%3C/svg%3E") 0 0 / 70cqh 70cqh; animation: bgCaustic 24s linear infinite; }
@keyframes bgCaustic { to { transform: translate(-70cqh, -70cqh); } }
.pbg-lilypond .s-pads { inset: 0; width: 100%; height: 100%; filter: drop-shadow(0 .8cqh .8cqh rgba(0,30,25,.35)); animation: bgDrift 14s ease-in-out infinite alternate; }
@keyframes bgDrift { from { transform: translate(-1.5cqh, -.5cqh) rotate(-.6deg); } to { transform: translate(1.5cqh, .8cqh) rotate(.6deg); } }
.pbg-lilypond .ring { left: var(--x); top: var(--y); width: 28cqh; height: 28cqh; margin: -14cqh; border-radius: 50%; border: max(1px, .5cqh) solid rgba(210,255,240,.55); opacity: 0; animation: bgRipple 4.4s ease-out calc(var(--i) * -1.1s) infinite; }
.pbg-lilypond .dragonfly { left: 58%; top: 26%; width: 14cqh; height: 10cqh; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 28'%3E%3Cg fill='%23d8f6ff' fill-opacity='.55' stroke='%23ffffff' stroke-opacity='.6' stroke-width='.6'%3E%3Cellipse cx='12' cy='9' rx='10' ry='3.2' transform='rotate(-14 12 9)'/%3E%3Cellipse cx='12' cy='17' rx='9' ry='3' transform='rotate(14 12 17)'/%3E%3Cellipse cx='28' cy='9' rx='10' ry='3.2' transform='rotate(14 28 9)'/%3E%3Cellipse cx='28' cy='17' rx='9' ry='3' transform='rotate(-14 28 17)'/%3E%3C/g%3E%3Crect x='19' y='4' width='2.4' height='22' rx='1.2' fill='%233fd3c4'/%3E%3Ccircle cx='20.2' cy='4.5' r='2.4' fill='%232a9d8f'/%3E%3C/svg%3E") center / contain no-repeat; animation: bgHover 7s ease-in-out infinite; }
@keyframes bgHover { 0%, 100% { transform: translate(0, 0) rotate(0); } 18%, 24% { transform: translate(4cqh, -3cqh) rotate(8deg); } 44%, 52% { transform: translate(-7cqh, 1cqh) rotate(-6deg); } 72%, 78% { transform: translate(-2cqh, -4cqh) rotate(4deg); } }

/* ---------- Koi-Brunnen ---------- */
.pbg-koi { background: radial-gradient(60% 90% at 30% 20%, rgba(140,230,255,.35), transparent 70%), radial-gradient(120% 120% at 70% 50%, #1b6f9a 0%, #12507a 50%, #0b3156 100%); }
.pbg-koi .s-caustic { opacity: .16; animation-duration: 28s; }
.pbg-koi .s-coins { inset: 0; opacity: .6; background: radial-gradient(2.6cqh 1.7cqh at 18% 72%, #f0c14b 60%, transparent 72%), radial-gradient(2.2cqh 1.5cqh at 22% 78%, #e1a93a 60%, transparent 72%), radial-gradient(2.4cqh 1.6cqh at 47% 84%, #f0c14b 60%, transparent 72%), radial-gradient(2.6cqh 1.7cqh at 76% 30%, #e1a93a 60%, transparent 72%), radial-gradient(2.2cqh 1.5cqh at 88% 76%, #f0c14b 60%, transparent 72%), radial-gradient(2cqh 1.4cqh at 36% 22%, #cfd7e6 60%, transparent 72%), radial-gradient(2.2cqh 1.5cqh at 64% 62%, #cfd7e6 60%, transparent 72%); }
.pbg-koi .s-spout { left: 64%; top: 50%; width: 36cqh; height: 36cqh; margin: -18cqh; border-radius: 50%; background: radial-gradient(circle, #e8fbff 0 9%, #9fdcf2 16%, #5aa9cf 40%, #3c7fa6 52%, #d6d9e4 54%, #b9bdcc 64%, #8e93a8 70%, rgba(10,40,70,.35) 73%, transparent 77%); box-shadow: 0 1.5cqh 3cqh rgba(5,25,50,.35); }
.pbg-koi .s-spout > i { position: absolute; left: 50%; top: 50%; width: 30cqh; height: 30cqh; margin: -15cqh; border-radius: 50%; border: max(1px, .5cqh) solid rgba(230,250,255,.7); animation: bgRippleIn 2.4s ease-out infinite; }
.pbg-koi .s-spout > i.b { animation-delay: -1.2s; }
@keyframes bgRippleIn { 0% { transform: scale(.15); opacity: 1; } 100% { transform: scale(.85); opacity: 0; } }
.pbg-koi .koi { left: 64%; top: 50%; width: 12cqh; height: 30cqh; margin: -15cqh -6cqh; --rad: calc(32cqh + var(--r) * 26cqh); animation: bgKoi calc(var(--t) * 2.8) linear var(--d) infinite; }
.pbg-koi .koi:nth-child(even) { animation-name: bgKoiR; }
.pbg-koi .koi b { background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 50'%3E%3Cpath d='M10 38C13 42 16 47 13 50C12 46.5 10 45 10 45S8 46.5 7 50C4 47 7 42 10 38Z' fill='%23ffd6c2'/%3E%3Cpath d='M5.6 18C2 20 1 24 2 26C3.5 24 5 22 6 21ZM14.4 18C18 20 19 24 18 26C16.5 24 15 22 14 21Z' fill='%23ffd6c2'/%3E%3Cpath d='M10 1C15 5 16 15 14.5 26C13.6 32 11.5 37 10 39C8.5 37 6.4 32 5.5 26C4 15 5 5 10 1Z' fill='%23fff8f0'/%3E%3Cpath d='M7 6C9 4 12 5 13 8C12.5 12 9 13 7.5 11ZM8 19C11 17 14 20 13 25C11 27 8 26 7.4 23Z' fill='%23ff5a36'/%3E%3C/svg%3E") center / contain no-repeat; transform-origin: 50% 30%; animation: bgWiggle .8s ease-in-out infinite alternate; }
.pbg-koi .koi:nth-child(3n) b { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 50'%3E%3Cpath d='M10 38C13 42 16 47 13 50C12 46.5 10 45 10 45S8 46.5 7 50C4 47 7 42 10 38Z' fill='%23ffe08a'/%3E%3Cpath d='M5.6 18C2 20 1 24 2 26C3.5 24 5 22 6 21ZM14.4 18C18 20 19 24 18 26C16.5 24 15 22 14 21Z' fill='%23ffe08a'/%3E%3Cpath d='M10 1C15 5 16 15 14.5 26C13.6 32 11.5 37 10 39C8.5 37 6.4 32 5.5 26C4 15 5 5 10 1Z' fill='%23ffb703'/%3E%3Cpath d='M8 4C9 3 11 3 12 4L11 30H9Z' fill='%23fff3c4' opacity='.55'/%3E%3C/svg%3E"); }
.pbg-koi .koi:nth-child(3n+1) b { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 50'%3E%3Cpath d='M10 38C13 42 16 47 13 50C12 46.5 10 45 10 45S8 46.5 7 50C4 47 7 42 10 38Z' fill='%23f2f2f7'/%3E%3Cpath d='M5.6 18C2 20 1 24 2 26C3.5 24 5 22 6 21ZM14.4 18C18 20 19 24 18 26C16.5 24 15 22 14 21Z' fill='%231d1d28'/%3E%3Cpath d='M10 1C15 5 16 15 14.5 26C13.6 32 11.5 37 10 39C8.5 37 6.4 32 5.5 26C4 15 5 5 10 1Z' fill='%23fff8f0'/%3E%3Cpath d='M6 9C9 7 13 9 13 12C11 15 8 14 6.5 12ZM9 21C12 20 14 23 13.5 27C11 28 9 26 8.6 24Z' fill='%231d1d28'/%3E%3Cpath d='M8 3C10 2 12 3 13 6C11 8 9 8 7.5 6Z' fill='%23ff5a36'/%3E%3C/svg%3E"); }
@keyframes bgKoi { from { transform: rotate(0deg) translateX(var(--rad)) rotate(180deg); } to { transform: rotate(360deg) translateX(var(--rad)) rotate(180deg); } }
@keyframes bgKoiR { from { transform: rotate(360deg) translateX(var(--rad)) rotate(0deg); } to { transform: rotate(0deg) translateX(var(--rad)) rotate(0deg); } }
@keyframes bgWiggle { from { transform: skewX(-7deg); } to { transform: skewX(7deg); } }

/* ---------- Leuchtturm ---------- */
.pbg-lighthouse { background: radial-gradient(1px 1px at 10% 12%, #fff, transparent), radial-gradient(1px 1px at 30% 26%, #fff, transparent), radial-gradient(1.2px 1.2px at 46% 8%, #fff, transparent), radial-gradient(1px 1px at 60% 30%, #fff, transparent), radial-gradient(50% 50% at 18% 62%, rgba(255,170,120,.28), transparent 70%), linear-gradient(180deg, #0c1640 0%, #1e3170 46%, #3d5594 62%, #12244e 62.4%, #0b1838 100%); }
.pbg-lighthouse .s-lhwrap { right: 4%; bottom: 17%; height: 80%; aspect-ratio: 120 / 140; z-index: 1; }
.pbg-lighthouse .s-beam { position: absolute; right: 47.5%; top: 15.7%; width: 300cqh; height: 28cqh; margin-top: -14cqh; transform-origin: 100% 50%; background: linear-gradient(270deg, rgba(255,244,190,.75), rgba(255,244,190,.18) 50%, rgba(255,244,190,0)); clip-path: polygon(0 0, 100% 46%, 100% 54%, 0 100%); animation: bgBeam 8s linear infinite; }
@keyframes bgBeam { from { transform: perspective(500cqh) rotateY(0deg); } to { transform: perspective(500cqh) rotateY(360deg); } }
.pbg-lighthouse .s-lamp { position: absolute; left: 52.5%; top: 15.7%; width: 40cqh; height: 40cqh; margin: -20cqh; border-radius: 50%; background: radial-gradient(circle, rgba(255,246,200,.95) 0 6%, rgba(255,220,120,.45) 20%, transparent 65%); animation: bgLamp 4s ease-in-out -2s infinite; }
@keyframes bgLamp { 0%, 100% { opacity: 1; transform: scale(1.15); } 50% { opacity: .5; transform: scale(.8); } }
.pbg-lighthouse .s-boat { left: 30%; bottom: 37.2%; height: 9%; }
.pbg .s-waves { left: 0; bottom: 0; width: calc(100% + 40cqh); height: 30%; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 20' preserveAspectRatio='none'%3E%3Cpath d='M0 8Q10 2 20 8T40 8V20H0Z' fill='%231a2f63'/%3E%3C/svg%3E") 0 0 / 40cqh 100% repeat-x; animation: bgWave 7s linear infinite; }
.pbg .s-waves.b { height: 18%; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 20' preserveAspectRatio='none'%3E%3Cpath d='M0 8Q10 2 20 8T40 8V20H0Z' fill='%23101f48'/%3E%3C/svg%3E"); animation-duration: 5s; animation-direction: reverse; z-index: 2; }
@keyframes bgWave { from { transform: translateX(0); } to { transform: translateX(-40cqh); } }

/* ---------- Carbon ---------- */
.pbg-carbon { background: #131313; }
.pbg-carbon .s-weave { inset: 0; background:
  linear-gradient(115deg, rgba(255,255,255,0) 30%, rgba(255,255,255,.12) 45%, rgba(255,255,255,0) 60%),
  radial-gradient(120% 140% at 30% 0%, rgba(80,120,160,.28), transparent 60%),
  radial-gradient(130% 120% at 50% 50%, transparent 55%, rgba(0,0,0,.55)),
  linear-gradient(27deg, #151515 3.2cqh, transparent 3.2cqh) 0 3.2cqh / 12.6cqh 12.6cqh,
  linear-gradient(207deg, #151515 3.2cqh, transparent 3.2cqh) 6.3cqh 0 / 12.6cqh 12.6cqh,
  linear-gradient(27deg, #232323 3.2cqh, transparent 3.2cqh) 0 6.3cqh / 12.6cqh 12.6cqh,
  linear-gradient(207deg, #232323 3.2cqh, transparent 3.2cqh) 6.3cqh 3.2cqh / 12.6cqh 12.6cqh,
  linear-gradient(90deg, #1b1b1b 6.3cqh, transparent 6.3cqh) 0 0 / 12.6cqh 12.6cqh,
  linear-gradient(#1d1d1d 25%, #1a1a1a 25% 50%, transparent 50% 75%, #262626 75%) 0 0 / 12.6cqh 12.6cqh,
  #131313; }
.pbg-carbon .s-stripe { left: -10%; right: -10%; top: 56%; height: 12cqh; transform: rotate(-11deg); background: linear-gradient(180deg, transparent 0 18%, #36d1ff 18% 34%, transparent 34% 60%, #ffc933 60% 72%, transparent 72%); filter: drop-shadow(0 0 1.6cqh rgba(54,209,255,.55)); opacity: .9; }

/* ---------- Fischschwarm ---------- */
.pbg-shoal { background: radial-gradient(80% 70% at 60% -10%, rgba(140,220,255,.5), transparent 60%), linear-gradient(180deg, #1272b5 0%, #0b4d8c 45%, #072a5c 100%); }
.pbg .s-rays { inset: -10% -10% 0; background: repeating-linear-gradient(100deg, rgba(255,255,255,.08) 0 6cqh, transparent 6cqh 18cqh); -webkit-mask: linear-gradient(180deg, #000, transparent 85%); mask: linear-gradient(180deg, #000, transparent 85%); animation: ppRays 9s ease-in-out infinite alternate; }
.pbg-shoal .s-ball { left: 63%; top: 47%; width: 0; height: 0; transform: rotate(-10deg) scaleY(.6); }
.pbg-shoal .s-orbit { position: absolute; left: 0; top: 0; width: 0; height: 0; animation: bgSpin 16s linear infinite; }
.pbg-shoal .s-orbit.b { animation-duration: 11s; animation-direction: reverse; }
.pbg-shoal .fish { left: 0; top: 0; width: 12cqh; height: 5cqh; margin: -2.5cqh -6cqh; transform: rotate(calc(var(--i) * 22.5deg)) translateX(calc(38cqh + var(--r) * 24cqh)) rotate(90deg); }
.pbg-shoal .s-orbit.b .fish { width: 9.5cqh; height: 4cqh; margin: -2cqh -4.75cqh; transform: rotate(calc(var(--i) * 36deg + 9deg)) translateX(calc(16cqh + var(--r) * 16cqh)) rotate(-90deg); }
.pbg-shoal .fish b { border-radius: 40% 62% 62% 40% / 50%; background: linear-gradient(180deg, #3d6ea8 0 30%, #cfe9fb 50%, #f4fbff 62%, #a9cde8); box-shadow: 0 0 1cqh rgba(200,235,255,.35); animation: bgSwim .7s ease-in-out var(--d) infinite alternate; }
.pbg-shoal .fish b::after { content: ''; position: absolute; left: -22%; top: 15%; width: 30%; height: 70%; background: #8fb8dc; clip-path: polygon(0 0, 100% 50%, 0 100%, 25% 50%); }
.pbg-shoal .s-orbit.b .fish b { filter: brightness(.75); }
@keyframes bgSwim { from { transform: translateY(-.7cqh) rotate(-4deg); } to { transform: translateY(.7cqh) rotate(4deg); } }

/* ---------- Bambushain ---------- */
.pbg-bamboo { background: radial-gradient(60% 90% at 70% -10%, rgba(240,255,200,.65), transparent 60%), linear-gradient(180deg, #d6eeb6 0%, #93cd80 40%, #3f8f5a 75%, #1f5a3c 100%); }
.pbg-bamboo .s-mist { inset: 0; z-index: 1; background: linear-gradient(180deg, transparent 38%, rgba(235,255,230,.35) 66%, transparent 92%); }
.pbg-bamboo .s-stalks { top: -6%; bottom: -4%; left: -4%; width: 108%; height: 110%; transform-origin: 50% 100%; }
.pbg-bamboo .s-stalks.far { opacity: .55; }
.pbg-bamboo .s-stalks.mid { z-index: 1; animation: bgSway 7s ease-in-out infinite alternate; }
.pbg-bamboo .s-stalks.near { z-index: 2; animation: bgSway 5.5s ease-in-out -2s infinite alternate; }
.pbg-bamboo .bleaf { left: var(--x); top: -10cqh; z-index: 3; width: calc(12cqh * var(--s)); height: calc(3cqh * var(--s)); border-radius: 100% 0 100% 0; background: linear-gradient(90deg, #7fc46a, #3f8f45); animation: bgLeaf calc(var(--t) * 1.8) linear var(--d) infinite; }

/* ---------- Goldene Stunde ---------- */
.pbg-goldhour { background: radial-gradient(18% 50% at 62% 58%, rgba(255,240,180,.9), transparent 70%), radial-gradient(60% 80% at 62% 62%, rgba(255,170,80,.55), transparent 70%), linear-gradient(180deg, #3d2266 0%, #a8467a 28%, #f08a5d 46%, #ffcf7a 60%); }
.pbg-goldhour .s-sun { left: 62%; top: 60.4%; width: 18cqh; height: 18cqh; margin: -9cqh; border-radius: 50%; background: #fff8dc; box-shadow: 0 0 6cqh 3cqh rgba(255,236,170,.75); }
.pbg-goldhour .s-sea { left: 0; right: 0; top: 60.4%; bottom: 0; background: radial-gradient(30% 40% at 62% 0%, rgba(255,214,120,.55), transparent 70%), linear-gradient(180deg, #d1773f 0%, #8a3a46 45%, #4a2240 100%); }
.pbg-goldhour .s-isle { left: 0; bottom: 39.4%; width: 34%; height: 9%; }
.pbg-goldhour .s-glitter { left: calc(62% - 15cqh); width: 30cqh; top: 61%; bottom: 0; }
.pbg-goldhour .s-glitter > i { background: repeating-linear-gradient(180deg, rgba(255,240,170,.95) 0 .9cqh, transparent .9cqh 3.8cqh); }
.pbg-goldhour .s-gboat { left: 28%; bottom: 30%; height: 28%; transform-origin: 50% 90%; animation: bgBob 4s ease-in-out infinite alternate; }
.pbg-goldhour .gull { left: var(--x); top: var(--y); width: 8cqh; height: 3.4cqh; animation: bgGlide calc(var(--t) * 2.4) ease-in-out calc(var(--i) * -3s) infinite alternate; }
.pbg-goldhour .gull b { background: #3a1630; clip-path: polygon(0 34%, 22% 0, 50% 58%, 78% 0, 100% 34%, 78% 20%, 50% 88%, 22% 20%); animation: bgFlap .45s ease-in-out infinite alternate; }
@keyframes bgGlide { from { transform: translate(0, 0); } to { transform: translate(14cqh, 4cqh); } }

/* ---------- Sternenmeer ---------- */
.pbg-starsea { background: radial-gradient(1px 1px at 6% 12%, #fff, transparent), radial-gradient(1.2px 1.2px at 14% 34%, #fff, transparent), radial-gradient(1px 1px at 24% 8%, #fff, transparent), radial-gradient(1px 1px at 33% 44%, #fff, transparent), radial-gradient(1.3px 1.3px at 45% 18%, #fff, transparent), radial-gradient(1px 1px at 56% 36%, #fff, transparent), radial-gradient(1px 1px at 63% 6%, #fff, transparent), radial-gradient(1.2px 1.2px at 82% 28%, #fff, transparent), radial-gradient(1px 1px at 92% 10%, #fff, transparent), radial-gradient(1px 1px at 96% 44%, #fff, transparent), linear-gradient(180deg, #050318 0%, #140b3c 40%, #2c1a6e 57%, #110a35 57.4%, #090522 100%); }
.pbg-starsea .s-milky { left: -20%; right: -20%; top: -28%; height: 92%; background: radial-gradient(50% 30% at 50% 50%, rgba(205,175,255,.5), transparent 70%), radial-gradient(30% 18% at 40% 46%, rgba(255,190,240,.4), transparent 70%), radial-gradient(25% 14% at 62% 54%, rgba(150,220,255,.34), transparent 70%); transform: rotate(-12deg); animation: bgBreathe 10s ease-in-out infinite alternate; }
.pbg-starsea .s-refl::before { content: ''; position: absolute; left: -20%; right: -20%; top: -40%; height: 130%; opacity: .5; background: radial-gradient(50% 30% at 50% 50%, rgba(205,175,255,.5), transparent 70%), radial-gradient(30% 18% at 40% 46%, rgba(255,190,240,.4), transparent 70%); transform: rotate(12deg) scaleY(.7); }
.pbg-starsea .s-horizon { left: 0; right: 0; top: calc(57.4% - 6cqh); height: 12cqh; background: radial-gradient(60% 50% at 64% 50%, rgba(255,170,230,.45), transparent 70%); }
.pbg-starsea .s-refl { left: 0; right: 0; top: 57.4%; bottom: 0; overflow: hidden; background: radial-gradient(3cqh .7cqh at 14% 22%, rgba(255,255,255,.7), transparent), radial-gradient(3cqh .7cqh at 33% 50%, rgba(255,255,255,.55), transparent), radial-gradient(3.4cqh .8cqh at 45% 30%, rgba(255,255,255,.7), transparent), radial-gradient(3cqh .7cqh at 82% 40%, rgba(255,255,255,.6), transparent), radial-gradient(3cqh .7cqh at 56% 70%, rgba(255,255,255,.45), transparent), radial-gradient(40% 70% at 72% 0%, rgba(200,170,255,.35), transparent 70%); animation: bgGlit 2.6s ease-in-out infinite alternate; }
.pbg-starsea .s-line { left: 72%; top: -2%; height: 59.4%; width: max(1px, .5cqh); background: linear-gradient(180deg, rgba(220,200,255,0), rgba(235,222,255,.95)); transform-origin: 50% 0; animation: bgSwing 6s ease-in-out infinite alternate; }
@keyframes bgSwing { from { transform: rotate(4deg); } to { transform: rotate(-4deg); } }
.pbg-starsea .s-bait { position: absolute; left: 50%; bottom: -6cqh; width: 12cqh; height: 12cqh; margin-left: -6cqh; border-radius: 50%; background: radial-gradient(circle, #fff 0 12%, rgba(255,240,180,.9) 18%, rgba(255,210,120,.35) 36%, transparent 66%); animation: bgBait 1.8s ease-in-out infinite alternate; }
.pbg-starsea .s-bait::before, .pbg-starsea .s-bait::after { content: ''; position: absolute; left: 50%; top: -30%; width: max(1px, .6cqh); height: 160%; margin-left: -.3cqh; background: linear-gradient(transparent, #fff, transparent); }
.pbg-starsea .s-bait::after { transform: rotate(90deg); }
@keyframes bgBait { from { transform: scale(.85) rotate(0); } to { transform: scale(1.12) rotate(20deg); } }
.pbg-starsea .s-splash { left: 72%; top: 57.4%; width: 32cqh; height: 7cqh; margin: -3.5cqh -16cqh; border-radius: 50%; border: max(1px, .5cqh) solid rgba(230,210,255,.85); box-shadow: 0 0 2cqh rgba(200,170,255,.6); opacity: 0; animation: bgRipple 3.2s ease-out infinite; }
.pbg-starsea .s-splash.b { animation-delay: -1.6s; }
.pbg-starsea .sparkle { top: calc(var(--y) * .55); }
.pbg-starsea .s-stars { left: 0; right: 0; top: 0; height: 58%; opacity: .8; background: radial-gradient(1px 1px at 10% 20%, #fff, transparent), radial-gradient(1px 1px at 30% 70%, #fff, transparent), radial-gradient(1px 1px at 50% 40%, #e8ddff, transparent), radial-gradient(1px 1px at 70% 85%, #fff, transparent), radial-gradient(1px 1px at 90% 30%, #fff, transparent), radial-gradient(1px 1px at 20% 50%, #d6e6ff, transparent), radial-gradient(1px 1px at 80% 60%, #fff, transparent) 0 0 / 34cqh 30cqh; }
.pbg-starsea .meteor { animation-name: ppMeteorS; }
@keyframes ppMeteorS { 0% { transform: rotate(-24deg) translateX(0) scaleX(.3); opacity: 0; } 4% { opacity: 1; } 12% { transform: rotate(-24deg) translateX(-80cqh) scaleX(1); opacity: 0; } 100% { transform: rotate(-24deg) translateX(-80cqh); opacity: 0; } }

/* ---------- Sternenwal (geheim) ---------- */
.pbg-mystery { background: radial-gradient(1px 1px at 6% 14%, #fff, transparent), radial-gradient(1px 1px at 18% 72%, #fff, transparent), radial-gradient(1.2px 1.2px at 30% 20%, #fff, transparent), radial-gradient(1px 1px at 72% 12%, #fff, transparent), radial-gradient(1px 1px at 88% 60%, #fff, transparent), radial-gradient(1.2px 1.2px at 94% 24%, #fff, transparent), radial-gradient(50% 80% at 58% 50%, rgba(80,160,255,.28), transparent 70%), linear-gradient(180deg, #030b24 0%, #08204e 50%, #0c2f6a 100%); }
.pbg-mystery .s-neb { inset: 0; background: radial-gradient(40% 60% at 22% 30%, rgba(120,90,255,.32), transparent 70%), radial-gradient(35% 50% at 86% 76%, rgba(60,220,255,.24), transparent 70%); animation: bgBreathe 9s ease-in-out infinite alternate; }
.pbg-mystery .s-whalewrap { left: 54%; top: 50%; height: 82%; aspect-ratio: 240 / 112; transform: translate(-50%, -50%); }
.pbg-mystery .s-whalewrap > svg.sc { filter: drop-shadow(0 0 2.6cqh rgba(110,180,255,.6)); animation: bgWhale 12s ease-in-out infinite alternate; }
@keyframes bgWhale { from { transform: translate(-3cqh, 2cqh) rotate(-2.5deg); } to { transform: translate(4cqh, -2cqh) rotate(1.5deg); } }
.pbg-mystery .dust { left: var(--x); top: var(--y); width: 1.8cqh; height: 1.8cqh; border-radius: 50%; background: #d6ecff; box-shadow: 0 0 1.6cqh .6cqh rgba(140,200,255,.75); animation: bgTwinkle var(--t) ease-in-out var(--d) infinite; }

/* ---------- Kirschblüten ---------- */
.pbg-sakura { background: radial-gradient(60% 100% at 18% -10%, rgba(255,255,255,.8), transparent 60%), linear-gradient(180deg, #ffe0ec 0%, #f8bfd6 42%, #d9a6dc 72%, #a48ad0 100%); }
.pbg-sakura .s-fuji { left: 4%; bottom: 10%; height: 56%; }
.pbg-sakura .s-branch { right: 0; top: 0; height: 100%; transform-origin: 100% 0; animation: bgSway 8s ease-in-out infinite alternate; }
.pbg-sakura .petal { left: calc(25% + var(--x) * .8); top: -8cqh; width: calc(5.4cqh * var(--s)); height: calc(3.8cqh * var(--s)); border-radius: 100% 0 100% 0; background: linear-gradient(135deg, #fff0f6, #ff9ec4); opacity: 0; animation: bgPetal calc(var(--t) * 1.6) linear var(--d) infinite; }
@keyframes bgPetal { 0% { transform: translate(0, 0) rotate(0) rotateX(0); opacity: 0; } 8% { opacity: 1; } 50% { transform: translate(-22cqh, 55cqh) rotate(200deg) rotateX(160deg); } 100% { transform: translate(-50cqh, 116cqh) rotate(380deg) rotateX(340deg); opacity: .9; } }

/* ---------- Lagerfeuer ---------- */
.pbg-campfire { background: radial-gradient(1px 1px at 12% 14%, #fff, transparent), radial-gradient(1px 1px at 30% 8%, #fff, transparent), radial-gradient(1.2px 1.2px at 46% 22%, #fff, transparent), radial-gradient(1px 1px at 64% 6%, #fff, transparent), radial-gradient(1px 1px at 80% 18%, #fff, transparent), radial-gradient(45% 75% at 50% 100%, rgba(255,140,60,.5), transparent 70%), linear-gradient(180deg, #0a0c2a 0%, #1a1740 50%, #3a2142 100%); }
.pbg-campfire .s-pines.l { left: -2%; bottom: 0; height: 86%; }
.pbg-campfire .s-pines.r { right: -2%; bottom: 0; height: 94%; }
.pbg-campfire .s-camp { left: 50%; bottom: 15%; height: 52%; aspect-ratio: 150 / 50; transform: translateX(-50%); }
.pbg-campfire::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 18%; z-index: -1; background: linear-gradient(180deg, #0b0a1c, #120c26); }
.pbg-campfire .s-light { position: absolute; left: 50%; top: 62%; width: 150%; height: 240%; margin: -120% 0 0 -75%; border-radius: 50%; background: radial-gradient(closest-side, rgba(255,150,60,.42), transparent); animation: bgFlicker 2.2s ease-in-out infinite; }
.pbg-campfire .s-fire { position: absolute; left: 39%; bottom: 14%; width: 22%; height: 100%; }
.pbg-campfire .s-fire > i { position: absolute; display: block; }
.pbg-campfire .log { left: 8%; bottom: 0; width: 84%; height: 11%; border-radius: 2cqh; background: linear-gradient(180deg, #8a5532, #4a2a18); }
.pbg-campfire .log.a { transform: rotate(13deg); }
.pbg-campfire .log.b { transform: rotate(-13deg); }
.pbg-campfire .fl { left: 50%; bottom: 7%; transform-origin: 50% 100%; animation: bgFlame .5s ease-in-out infinite alternate; }
.pbg-campfire .fl b { position: absolute; inset: 0; clip-path: polygon(50% 0, 62% 22%, 78% 40%, 88% 62%, 84% 82%, 70% 96%, 50% 100%, 30% 96%, 16% 82%, 12% 62%, 22% 40%, 38% 22%); }
.pbg-campfire .fl.a { width: 56%; height: 80%; margin-left: -28%; }
.pbg-campfire .fl.a b { background: radial-gradient(60% 70% at 50% 85%, #ff9a3d, #e8432a 70%, #b8232a); }
.pbg-campfire .fl.b { width: 40%; height: 60%; margin-left: -20%; animation-duration: .38s; }
.pbg-campfire .fl.b b { background: radial-gradient(60% 70% at 50% 85%, #ffe066, #ff9a3d 75%); }
.pbg-campfire .fl.c { width: 22%; height: 36%; margin-left: -11%; animation-duration: .3s; }
.pbg-campfire .fl.c b { background: radial-gradient(60% 70% at 50% 80%, #fffbe6, #ffe066 80%); }
@keyframes bgFlame { from { transform: scale(1, 1) skewX(-3deg); } to { transform: scale(.9, 1.14) skewX(4deg); } }
.pbg-campfire .ember { left: 50%; top: 30%; width: 1.4cqh; height: 1.4cqh; border-radius: 50%; background: #ffe08a; box-shadow: 0 0 1.4cqh .5cqh rgba(255,140,60,.9); opacity: 0; animation: bgEmber calc(var(--t) * .7) ease-out var(--d) infinite; }

/* ---------- Nebelgalaxie ---------- */
.pbg-nebula { background: radial-gradient(1px 1px at 8% 20%, #fff, transparent), radial-gradient(1px 1px at 20% 70%, #fff, transparent), radial-gradient(1.2px 1.2px at 36% 12%, #fff, transparent), radial-gradient(1px 1px at 48% 80%, #fff, transparent), radial-gradient(1px 1px at 90% 16%, #fff, transparent), radial-gradient(40% 70% at 24% 34%, rgba(255,80,170,.42), transparent 70%), radial-gradient(38% 65% at 82% 70%, rgba(60,200,255,.32), transparent 70%), radial-gradient(50% 80% at 52% 18%, rgba(150,90,255,.4), transparent 70%), linear-gradient(180deg, #05031a, #0d0830); }
.pbg-nebula .s-galaxy { left: 64%; top: 46%; width: 120cqh; height: 120cqh; margin: -60cqh; transform: rotate(-24deg) scaleY(.42); }
.pbg-nebula .s-galaxy > svg.sc { animation: bgSpin 70s linear infinite; }

/* ---------- Prisma ---------- */
.pbg-prism { background: radial-gradient(30% 50% at 30% 30%, rgba(255,107,203,.28), transparent 70%), radial-gradient(25% 45% at 90% 82%, rgba(94,231,255,.24), transparent 70%), radial-gradient(30% 50% at 16% 88%, rgba(255,209,102,.2), transparent 70%), linear-gradient(125deg, #1b1446 0%, #2a1b5e 50%, #14103a 100%); }
.pbg-prism .s-holo { left: calc(70% - 70cqw - 100cqh); top: calc(100% - 70cqw - 100cqh); width: calc(140cqw + 200cqh); height: calc(140cqw + 200cqh); background: conic-gradient(from 0deg, #ff6bcb, #ffd166, #7dff9b, #5ee7ff, #9c7bff, #ff6bcb); opacity: .45; mix-blend-mode: soft-light; animation: bgSpin 26s linear infinite; }

.pbg-prism .s-fan { left: 68%; top: 50%; width: 260cqh; height: 260cqh; margin: -130cqh; border-radius: 50%; background: repeating-conic-gradient(from 10deg, rgba(255,107,203,.22) 0 3deg, transparent 3deg 14deg, rgba(94,231,255,.2) 14deg 17deg, transparent 17deg 30deg, rgba(255,209,102,.2) 30deg 33deg, transparent 33deg 45deg); -webkit-mask: radial-gradient(circle, transparent 8%, #000 14%, transparent 48%); mask: radial-gradient(circle, transparent 8%, #000 14%, transparent 48%); animation: bgSpin 40s linear infinite; }
.pbg-prism .s-gemw { left: 68%; top: 50%; height: 86%; aspect-ratio: 120 / 100; transform: translate(-50%, -50%); }
.pbg-prism .s-gemw > svg.sc { filter: drop-shadow(0 0 2.4cqh rgba(220,200,255,.55)); animation: bgFloat 5s ease-in-out infinite alternate; }
@keyframes bgFloat { from { transform: translateY(-2cqh) rotate(-2deg); } to { transform: translateY(2cqh) rotate(2deg); } }
.pbg-prism .s-sheen { inset: 0; background: linear-gradient(105deg, transparent 35%, rgba(255,255,255,.22) 48%, transparent 60%); transform: translateX(-100%); animation: ppShine 6s ease-in-out infinite; }

/* Bewegung reduziert: alles steht still (Partikel als ruhiges Bild) */
@media (prefers-reduced-motion: reduce) {
  .pbg *, .pbg::before, .pbg::after, .pbg .pp, .pbg .pp > b, .cel-rays, .cel-confetti, .accw-dot, .fr-empty-art .acc-bust, .pf-status.on .dot, .at-shine { animation-play-state: paused !important; }
  .cel-rays, .cel-confetti, .accw-dot, .fr-empty-art .acc-bust, .pf-status.on .dot, .at-shine { animation: none !important; }
  .pbg .meteor, .cel-confetti { display: none; }
  .acc-toast.ach.t-platinum { animation: accToastIn .01s; }
}

/* ==========================================================================
   Handy (Bottom-Sheet) & schmale Fenster
   ========================================================================== */
@media (max-width: 640px) {
  .acc-back { padding: 0; align-items: flex-end; }
  .acc-panel { width: 100%; max-height: calc(100vh - 10px); max-height: calc(100dvh - 10px); border-radius: 24px 24px 0 0; border-bottom: 0; animation: accSheet .36s cubic-bezier(.2,1.1,.4,1); }
  .acc-back.out .acc-panel { animation: accSheetOut .2s ease-in forwards; }
  .pf-panel { height: calc(100vh - 10px); height: calc(100dvh - 10px); }
  .fr-panel { min-height: 62vh; min-height: 62dvh; }
  .acc-confirm-panel { width: 100%; }
  .au { padding: 16px 16px calc(18px + env(safe-area-inset-bottom)); }
  .pf-hero { height: 226px; }
  .pf-hero > .pf-bg { height: 124px; }
  .pf-hero-fade { top: 64px; }
  .pf-id { left: 16px; right: 16px; gap: 12px; }
  .pf-av { width: 98px; height: 112px; }
  .pf-av canvas { width: 98px !important; height: 112px !important; }
  .pf-strip .acc-badge { width: 22px !important; height: 22px !important; }
  .pf-chips { flex-wrap: nowrap; overflow-x: auto; margin: 0 -16px; padding: 2px 16px 10px; }
  .pf-cols.b { grid-template-columns: 1fr; }
  #acc-toasts { top: 8px; }
  .pf-lv { min-width: 34px; height: 34px; font-size: 15px; bottom: 4px; }
  .pf-name { font-size: 24px; }
  .pf-info, .pf-body, .pf-edit { padding-left: 16px; padding-right: 16px; }
  .pf-tabs { margin-left: 16px; margin-right: 16px; }
  .pf-rel { justify-content: flex-start; width: 100%; }
  .pf-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .pf-cols { grid-template-columns: 1fr; }
  .pf-recent-list { grid-template-columns: 1fr; }
  .pf-achsum { gap: 12px; }
  .pf-ring { width: 76px; height: 76px; }
  .pf-slots.edit { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .pf-bgstage { grid-template-columns: minmax(0, 46%) minmax(0, 1fr); top: 58px; border-radius: 14px; }
  .pf-bgstage-pic { min-height: 92px; }
  .pf-bgstage-lock { left: 6px; top: 6px; padding: 2px 7px 2px 5px; font-size: 9.5px; }
  .pf-bgstage .pf-bgmystery b { font-size: 38px; }
  .pf-bgstage-info { padding: 8px 10px 9px; gap: 2px; }
  .pf-typepill { display: none; }
  .pf-rarpill { font-size: 9.5px; padding: 1px 7px; }
  .pf-bgstage-info p, .pf-bgstate-hint { display: none; }
  .pf-bgstage-name { font-size: 16px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .pf-bgstate { font-size: 12px; }
  .pf-bgstate-how span { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
  .pf-bgstate { padding-top: 3px; }
  .pf-bggrid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .pf-bgcount b { font-size: 24px; }
  .pf-bgchips { flex-wrap: nowrap; overflow-x: auto; margin: 0 -16px; padding: 2px 16px 10px; }
  .pf-editfoot { padding: 10px 16px calc(10px + env(safe-area-inset-bottom)); }
  .pf-saveerr { display: none; }
  .pf-saveerr:not(:empty) { display: block; position: absolute; left: 16px; right: 16px; bottom: 100%; padding: 8px 12px; border-radius: 12px 12px 0 0; background: #3a1838; }
  .pf-editfoot { position: relative; }
  .fr { padding: 16px 14px 0; }
  .fr-title h3 { font-size: 23px; }
  .fr-send > span:not(.ai) { display: none; }
  .fr-send .ai { margin: 0; width: 22px; height: 22px; }
  .fr-list { padding-bottom: calc(18px + env(safe-area-inset-bottom)); }
  .acc-tab { font-size: 14.5px; padding: 8px 6px; }
}
@media (max-width: 460px) {
  .fr-row { grid-template-columns: 44px minmax(0, 1fr) auto; gap: 10px; padding: 8px; }
  .fr-row:has(.fr-actions .btn) { grid-template-columns: 44px minmax(0, 1fr); }
  .fr-row:has(.fr-actions .btn) .fr-actions { grid-column: 2; justify-content: flex-start; flex-wrap: wrap; }
  .fr-row:has(.fr-actions .btn) .fr-more { position: absolute; top: 8px; right: 6px; }
  .fr-name small { display: none; }
  .fr-av { width: 44px; height: 44px; }
  .pf-chip.toggle { margin-left: 0; }
  .pf-tile { padding: 9px 10px; }
  .pf-tile b { font-size: 19px; }
  .pf-tile-ic { width: 32px; height: 32px; font-size: 17px; }
}
@keyframes accSheet { from { transform: translateY(100%); } }
@keyframes accSheetOut { to { transform: translateY(100%); } }
body.acc-open { overscroll-behavior: none; }

/* ==========================================================================
   Team-Rollen (Admin/Mod) & Profil-Rahmen (frames.js)
   ========================================================================== */
/* ---------- Rollen-Embleme, -Schild und -Tag ---------- */
.role-em { display: inline-block; flex: none; line-height: 0; filter: drop-shadow(0 1px 1px rgba(0,0,0,.35)); }
.role-em svg { display: block; width: 100%; height: 100%; overflow: visible; }

.role-plate {
  position: relative; display: inline-flex; align-items: center; gap: 6px; margin-bottom: 5px; padding: 3px 11px 3px 7px; overflow: hidden;
  border: 1.5px solid transparent; border-radius: 9px; font: 800 11.5px/1.45 var(--font); letter-spacing: 1.8px; text-transform: uppercase; white-space: nowrap;
  text-shadow: 0 1px 0 rgba(0,0,0,.45);
}
.role-plate b { font-weight: 800; }
.role-plate.admin {
  color: #ffe7a0;
  background: linear-gradient(180deg, #a3173c, #5c0719) padding-box, linear-gradient(120deg, #fff3c4, #f2b632 35%, #8a5a08 62%, #ffd25a) border-box;
  box-shadow: 0 4px 12px rgba(70,4,20,.55), inset 0 1px 0 rgba(255,220,180,.25);
}
.role-plate.mod {
  color: #d3fcff;
  background: linear-gradient(180deg, #11708f, #083c58) padding-box, linear-gradient(120deg, #c9fbff, #2fd3e0 40%, #2b5cff 75%, #9ffbff) border-box;
  box-shadow: 0 4px 12px rgba(2,30,46,.55), inset 0 1px 0 rgba(200,250,255,.22);
}
/* Glanz, der ab und zu über das Schild läuft */
.role-plate:not(.veiled)::after { content: ''; position: absolute; inset: 0; background: linear-gradient(105deg, transparent 35%, rgba(255,255,255,.4) 50%, transparent 65%); transform: translateX(-120%); animation: rolePlateShine 5.5s ease-in-out 1s infinite; pointer-events: none; }
@keyframes rolePlateShine { 0%, 62% { transform: translateX(-120%); } 82%, 100% { transform: translateX(120%); } }
/* Verborgen: nur der Besitzer sieht das Schild – gedämpft und gestrichelt */
.role-plate.veiled { color: #d6d0f5; background: rgba(10,6,35,.5); border: 1.5px dashed rgba(255,255,255,.32); box-shadow: none; text-shadow: none; }
.role-plate.veiled .role-em { filter: grayscale(1) opacity(.7); }
.role-plate small { margin-left: 2px; padding: 0 6px; border-radius: 99px; background: rgba(255,255,255,.12); font: 800 9.5px/1.6 var(--font); letter-spacing: .8px; color: #fff; }

.role-tag {
  display: inline-flex; align-items: center; gap: 4px; flex: none; padding: 1px 8px 1px 4px; border-radius: 99px;
  font: 800 11px/17px var(--font); letter-spacing: .3px; white-space: nowrap;
}
.role-tag.admin { color: #ffe7a0; background: linear-gradient(180deg, #a3173c, #6a0820); box-shadow: inset 0 0 0 1px rgba(255,210,90,.65); }
.role-tag.mod { color: #d3fcff; background: linear-gradient(180deg, #11708f, #0a4566); box-shadow: inset 0 0 0 1px rgba(125,246,255,.6); }
.fr-name .role-tag { font-size: 10.5px; line-height: 16px; }

.pf-hero.staff-admin .pf-name { text-shadow: 0 3px 0 rgba(0,0,0,.25), 0 0 22px rgba(255,190,90,.35); }
.pf-hero.staff-mod .pf-name { text-shadow: 0 3px 0 rgba(0,0,0,.25), 0 0 22px rgba(95,240,255,.3); }

/* ---------- Team-Box (eigene Rolle zeigen/verbergen) ---------- */
.pf-teambox { flex: 1 1 100%; display: flex; align-items: center; gap: 12px; padding: 10px 12px 10px 14px; border-radius: 15px; border: 1px solid; transition: background .2s, border-color .2s; }
.pf-teambox.admin { background: linear-gradient(100deg, rgba(178,24,58,.26), rgba(242,182,50,.07)); border-color: rgba(242,182,50,.38); }
.pf-teambox.mod { background: linear-gradient(100deg, rgba(17,112,143,.32), rgba(43,92,255,.08)); border-color: rgba(125,246,255,.35); }
.pf-teambox.off { background: rgba(255,255,255,.04); border-color: rgba(255,255,255,.14); border-style: dashed; }
.pf-teambox.off .role-em { filter: grayscale(1) opacity(.6); }
.pf-teamtext { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.pf-teamtext b { font: 600 15.5px/1.2 var(--font-display); }
.pf-teamtext small { font-size: 12.5px; font-weight: 700; line-height: 1.35; color: #cfc8f5; }
.pf-switch {
  position: relative; flex: none; width: 66px; height: 34px; padding: 0 9px; border-radius: 99px; cursor: pointer; display: flex; align-items: center; justify-content: flex-start;
  border: 1.5px solid rgba(255,255,255,.2); background: rgba(10,6,35,.55); color: var(--muted); transition: background .2s, border-color .2s;
}
.pf-switch .ai { width: 17px; height: 17px; margin-left: auto; }
.pf-switch-knob { position: absolute; left: 3px; top: 3px; width: 25px; height: 25px; border-radius: 50%; background: #d6d0f5; box-shadow: 0 2px 4px rgba(0,0,0,.4); transition: transform .22s cubic-bezier(.3,1.4,.5,1), background .2s; }
.pf-switch.on { background: var(--good); border-color: rgba(255,255,255,.35); color: #0d3b22; }
.pf-switch.on .ai { margin-left: 0; }
.pf-switch.on .pf-switch-knob { transform: translateX(32px); background: #fff; }
.pf-switch:focus-visible { outline: 3px solid rgba(143,191,255,.8); outline-offset: 2px; }
.pf-switch.is-busy { opacity: .6; pointer-events: none; }

/* ---------- Team-Verwaltung (Admins auf fremden Profilen) ---------- */
.pf-admin { flex: 1 1 100%; display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; padding: 8px 10px 8px 12px; border-radius: 13px; border: 1px dashed rgba(255,95,126,.45); background: rgba(255,95,126,.07); }
.pf-admin-k { display: inline-flex; align-items: center; gap: 6px; font: 800 11.5px var(--font); letter-spacing: 1.1px; text-transform: uppercase; color: #ffb3c1; }
.pf-admin-k .ai { width: 15px; height: 15px; }
.pf-admin-st { display: inline-flex; align-items: center; gap: 5px; font: 600 14px var(--font-display); color: #fff; }
.pf-admin-st.mod { color: #c9fbff; }
.pf-admin-st.admin { color: #ffe7a0; }
.pf-admin > .btn, .pf-admin-note { margin-left: auto; }
.pf-admin-note { font-size: 12px; font-weight: 700; color: var(--muted); }

/* ---------- Profil-Rahmen ---------- */
/* Hinten (Scheibe + Ring) liegt hinter der Figur, vorn (Schmuck) davor; Größe über --fs, Lage je Ort */
.pfr { position: absolute; left: 50%; top: 50%; width: var(--fs, 100px); height: var(--fs, 100px); transform: translate(-50%, -50%); pointer-events: none; }
.pfr-back { z-index: 0; }
.pfr-front { z-index: 2; }
.pfr-svg { display: block; width: 100%; height: 100%; overflow: visible; }
.pfr .pfr-spin { transform-origin: 60px 60px; animation: pfrSpin 16s linear infinite; }
.pfr .pfr-spin.slow { animation-duration: 42s; }
.pfr .pfr-spin.scan { animation-duration: 3.6s; }
.pfr .pfr-spin.shine { animation-duration: 5.5s; }
.pfr .pfr-glow { animation: pfrGlow 2.6s ease-in-out infinite alternate; }
.pfr .pfr-tw { transform-box: fill-box; transform-origin: center; animation: pfrTw 2.4s ease-in-out infinite; }
.pfr .pfr-tw:nth-of-type(2n) { animation-delay: -1.1s; }
.pfr-admin.pfr-back .pfr-svg { filter: drop-shadow(0 0 5px rgba(255,60,90,.4)); }
.pfr-admin.pfr-front .pfr-svg, .pfr-mod.pfr-front .pfr-svg, .pfr-laurel.pfr-front .pfr-svg { filter: drop-shadow(0 2px 2px rgba(0,0,0,.35)); }
@keyframes pfrSpin { to { transform: rotate(360deg); } }
@keyframes pfrGlow { from { opacity: .08; } to { opacity: .32; } }
@keyframes pfrTw { 0%, 100% { transform: scale(.35); opacity: .3; } 50% { transform: scale(1); opacity: 1; } }

/* Orte: Profilkopf (Figur 124×142), Freundesliste (Büste 44/48 px), Rahmen-Auswahl */
.pf-av.framed canvas { z-index: 1; }
.pf-av .pfr { --fs: 150px; top: 54%; }
.pf-av .pf-lv { z-index: 3; }
.fr-av .pfr { --fs: 60px; }
.fr-av .acc-bust { position: relative; z-index: 1; }
.fr-av .fr-dot { z-index: 3; }

/* Auswahl im Bearbeiten-Modus */
.pf-frgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 108px), 1fr)); gap: 8px; }
.pf-frpick {
  position: relative; display: flex; flex-direction: column; align-items: center; gap: 2px; min-width: 0; padding: 10px 6px 9px; border-radius: 14px; cursor: pointer;
  color: #fff; font-family: var(--font); text-align: center;
  border: 2px solid color-mix(in srgb, var(--rc) 40%, transparent);
  background: radial-gradient(circle at 50% 32%, color-mix(in srgb, var(--rc) 18%, transparent), rgba(0,0,0,.2) 68%);
  transition: transform .15s, border-color .15s, box-shadow .15s;
}
.pf-frpick:hover { transform: translateY(-2px); border-color: color-mix(in srgb, var(--rc) 75%, transparent); }
.pf-frpick.sel { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(255,201,51,.28); background: radial-gradient(circle at 50% 32%, rgba(255,201,51,.18), rgba(0,0,0,.2) 68%); }
.pf-frpick.team:not(.sel) { border-color: transparent; background: radial-gradient(circle at 50% 32%, rgba(255,95,126,.2), #1f1750 68%) padding-box, linear-gradient(135deg, #ffd25a, #ff5f7e 45%, #8e1230 75%, #ffd25a) border-box; }
.pf-frpic { position: relative; width: 76px; height: 76px; display: grid; place-items: center; margin-bottom: 4px; }
.pf-frpic .pfr { --fs: 72px; }
.pf-frpic .acc-bust { position: relative; z-index: 1; background: radial-gradient(circle at 50% 40%, rgba(255,255,255,.18), rgba(0,0,0,.22)); }
.pf-frpic .pf-bglock { z-index: 3; border-radius: 50%; }
.pf-frpic .pf-bgcheck { left: -12px; top: -6px; z-index: 3; }
.pf-frpick b { font: 600 13px/1.15 var(--font-display); overflow-wrap: anywhere; }
.pf-frpick small { font-size: 10.5px; font-weight: 800; line-height: 1.25; }
.pf-frpick small.rar { letter-spacing: .7px; text-transform: uppercase; color: var(--rc); }
.pf-frpick small.how { color: var(--muted); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.pf-frpick .pf-bgprog { width: 100%; padding: 0 4px; }
.pf-frpick.locked { cursor: help; }
.pf-frpick.locked .pf-frpic > :not(.pf-bglock) { filter: grayscale(.8) brightness(.55); }
.pf-frpick.locked:hover .pf-frpic > :not(.pf-bglock) { filter: grayscale(.3) brightness(.8); }
.pf-frpick.locked .pfr * { animation-play-state: paused; }

/* Galerie: Team-Hintergründe */
.pf-chip.team { border-color: rgba(255,95,126,.5); color: #ffd0d9; }
.pf-chip.team.sel { background: rgba(255,95,126,.18); border-color: #ff5f7e; color: #fff; }
.pf-bgcard.r-staff:not(.locked) { border-color: transparent; background: linear-gradient(#1f1750, #1f1750) padding-box, linear-gradient(135deg, #ffd25a, #ff5f7e 45%, #8e1230 75%, #ffd25a) border-box; }

/* ---------- Hintergrund: Thronsaal (Admin) ---------- */
.pbg-throne { background: radial-gradient(42% 95% at var(--emx, 64%) var(--emy, 50%), rgba(255,196,96,.45), rgba(196,30,70,.2) 50%, transparent 76%), radial-gradient(80% 120% at 50% 125%, rgba(130,8,40,.95), transparent 62%), linear-gradient(180deg, #24030e 0%, #4f0a20 46%, #2a0513 100%); }
.pbg-throne .s-wall {
  inset: 0; opacity: .8;
  background: radial-gradient(circle, rgba(255,214,130,.2) 0 .8cqh, transparent 1cqh) 0 0 / 14cqh 14cqh,
    repeating-linear-gradient(45deg, rgba(255,200,120,.07) 0 .35cqh, transparent .35cqh 9.9cqh), repeating-linear-gradient(-45deg, rgba(255,200,120,.07) 0 .35cqh, transparent .35cqh 9.9cqh);
  -webkit-mask: linear-gradient(180deg, #000 25%, rgba(0,0,0,.3) 100%); mask: linear-gradient(180deg, #000 25%, rgba(0,0,0,.3) 100%);
}
.pbg-throne .s-rays { left: var(--emx, 64%); top: var(--emy, 50%); width: 300cqh; height: 300cqh; margin: -150cqh; border-radius: 50%; background: repeating-conic-gradient(rgba(255,214,120,.42) 0 3deg, transparent 3deg 12deg); -webkit-mask: radial-gradient(circle, #000 6%, rgba(0,0,0,.42) 22%, transparent 47%); mask: radial-gradient(circle, #000 6%, rgba(0,0,0,.42) 22%, transparent 47%); animation: bgSpin 90s linear infinite; }
.pbg-throne .s-glow { left: var(--emx, 64%); top: var(--emy, 50%); width: 120cqh; height: 120cqh; margin: -60cqh; border-radius: 50%; background: radial-gradient(closest-side, rgba(255,226,150,.6), rgba(255,110,90,.2) 55%, transparent); animation: bgBreathe 3.4s ease-in-out infinite alternate; }
.pbg-throne .s-crestw { left: var(--emx, 64%); top: calc(var(--emy, 50%) + 1%); height: calc(94% * var(--ems, 1)); aspect-ratio: 1; transform: translate(-50%, -50%); }
.pbg-throne .s-crestw > svg.sc { filter: drop-shadow(0 1cqh 1.4cqh rgba(40,0,10,.65)) drop-shadow(0 0 3cqh rgba(255,200,90,.35)); animation: thrFloat 6s ease-in-out infinite alternate; }
.pbg-throne .s-sheen { inset: 0; background: linear-gradient(105deg, transparent 38%, rgba(255,232,170,.2) 48%, transparent 58%); transform: translateX(-100%); animation: ppShine 7.5s ease-in-out infinite; }
.pbg-throne .s-drape { top: -3%; height: 106%; aspect-ratio: 50 / 100; transform-origin: 50% 0; filter: drop-shadow(0 0 1.6cqh rgba(20,0,6,.7)); animation: thrSway 7s ease-in-out infinite alternate; }
.pbg-throne .s-drape.l { left: -3cqh; }
.pbg-throne .s-drape.r { right: -3cqh; animation-delay: -3.5s; }
.pbg-throne .s-valance { left: 0; top: 0; width: 100%; height: 16cqh; filter: drop-shadow(0 .8cqh 1cqh rgba(30,0,8,.6)); }
.pbg-throne .gdust { left: var(--x); bottom: -4cqh; width: calc(1.9cqh * var(--s)); height: calc(1.9cqh * var(--s)); border-radius: 50%; background: #ffe7a0; box-shadow: 0 0 2cqh .5cqh rgba(255,190,80,.85); opacity: 0; animation: ppRise calc(var(--t) * 1.3) linear var(--d) infinite; }
@keyframes thrFloat { from { transform: translateY(-1.6cqh); } to { transform: translateY(1.6cqh); } }
@keyframes thrSway { from { transform: skewX(-1.4deg); } to { transform: skewX(1.4deg); } }

/* ---------- Hintergrund: Schildwacht (Mod) ---------- */
.pbg-watch { background: radial-gradient(40% 85% at var(--emx, 64%) var(--emy, 50%), rgba(47,211,224,.4), transparent 64%), radial-gradient(60% 120% at 0% 100%, rgba(43,92,255,.38), transparent 70%), linear-gradient(165deg, #021820, #063548 52%, #0a2452); }
.pbg-watch .s-hex { inset: 0; width: 100%; height: 100%; opacity: .22; -webkit-mask: radial-gradient(75% 130% at var(--emx, 64%) var(--emy, 50%), #000 15%, transparent 88%); mask: radial-gradient(75% 130% at var(--emx, 64%) var(--emy, 50%), #000 15%, transparent 88%); }
.pbg-watch .s-scan { top: 0; bottom: 0; left: 0; width: 46cqh; background: linear-gradient(90deg, transparent, rgba(125,246,255,.16), transparent); animation: wScan 7s ease-in-out infinite; }
@keyframes wScan { from { transform: translateX(-50cqh); } to { transform: translateX(calc(100cqw + 10cqh)); } }
.pbg-watch .s-radar { left: var(--emx, 64%); top: var(--emy, 50%); width: 112cqh; height: 112cqh; margin: -56cqh; border-radius: 50%; background: conic-gradient(from 0deg, rgba(125,246,255,.42), rgba(125,246,255,0) 24%, transparent); -webkit-mask: radial-gradient(circle, #000 69%, transparent 71%); mask: radial-gradient(circle, #000 69%, transparent 71%); opacity: .55; animation: bgSpin 5s linear infinite; }
.pbg-watch .s-pulse { left: var(--emx, 64%); top: var(--emy, 50%); width: 130cqh; height: 130cqh; margin: -65cqh; }
.pbg-watch .s-pulse i { position: absolute; inset: 0; border-radius: 50%; border: .6cqh solid rgba(125,246,255,.45); animation: bgRipple 4.4s ease-out infinite; }
.pbg-watch .s-pulse i.b { animation-delay: -2.2s; }
.pbg-watch .s-wardw { left: var(--emx, 64%); top: var(--emy, 50%); height: calc(86% * var(--ems, 1)); aspect-ratio: 1; transform: translate(-50%, -50%); }
.pbg-watch .s-wardw > svg.sc { filter: drop-shadow(0 0 2.4cqh rgba(95,240,255,.45)); animation: thrFloat 5s ease-in-out infinite alternate; }
.pbg-watch .mote { left: var(--x); bottom: -3cqh; width: calc(1.4cqh * var(--s)); height: calc(1.4cqh * var(--s)); border-radius: 50%; background: #b8fbff; box-shadow: 0 0 1.6cqh .4cqh rgba(95,240,255,.8); opacity: 0; animation: ppRise calc(var(--t) * 1.4) linear var(--d) infinite; }

/* Profilkopf: Wappen/Schild (samt Strahlen und Licht) nie unter den Kopf-Buttons rechts oben (Bearbeiten, Schließen)
   und nie auf dem Rollen-Schild – breit mittig zwischen den Vorhängen, schmal (Handy) kleiner links oben über dem Schild */
.pf-hero > .pf-bg:is(.pbg-throne, .pbg-watch) { --emx: min(max(50%, 360px), calc(100% - 275px)); }
@media (max-width: 640px) {
  .pf-hero > .pf-bg:is(.pbg-throne, .pbg-watch) { --emx: clamp(90px, 36%, calc(100% - 245px)); --emy: 40%; --ems: .68; }
  .pf-av .pfr { --fs: 122px; } /* gleiche Grenze wie der kleinere Avatar (.pf-av 98px) */
}

@media (max-width: 560px) {
  .role-plate { font-size: 10.5px; padding: 2px 9px 2px 6px; margin-bottom: 4px; letter-spacing: 1.4px; }
  .pf-teambox { gap: 10px; padding: 9px 10px; }
  .pf-teambox > .role-em { display: none; }
  .pf-teamtext b { font-size: 14.5px; }
  .pf-teamtext small { font-size: 12px; }
  .pf-frgrid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
  .pf-frpick { padding: 8px 4px 7px; }
  .pf-frpic { width: 66px; height: 66px; }
  .pf-frpic .pfr { --fs: 62px; }
  .pf-frpic .acc-bust { width: 44px !important; height: 44px !important; }
}
@media (prefers-reduced-motion: reduce) {
  .pfr *, .role-plate::after { animation-play-state: paused !important; }
  .role-plate::after { display: none; }
}

/* Gast-Hinweis in der Siegerehrung (account/index.js guestHint): Karte über den Knöpfen statt Hinweis oben */
.end-guest {
  display: flex; align-items: flex-start; gap: 12px; margin: 16px auto 0; max-width: 560px; padding: 12px 16px; border-radius: 16px; text-align: left;
  background: linear-gradient(135deg, rgba(255, 201, 51, .16), rgba(160, 107, 255, .14)); border: 1px solid rgba(255, 201, 51, .4);
  box-shadow: 0 8px 22px rgba(8, 4, 30, .3); animation: endGuestIn .4s ease-out both;
}
.end-guest .ic { flex: none; width: 42px; height: 42px; display: grid; place-items: center; border-radius: 12px; background: rgba(255, 201, 51, .16); color: var(--primary); }
.end-guest .ic .ai { width: 22px; height: 22px; }
@keyframes endGuestIn { from { opacity: 0; transform: translateY(10px); } }
.end-guest b { display: block; font: 600 16px/1.2 var(--font-display); }
.end-guest small { display: block; margin-top: 3px; font-size: 13px; line-height: 1.35; color: rgba(255, 255, 255, .82); }
.end-guest .eg-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
@media (max-width: 640px) { .end-guest { margin: 12px 8px 0; } }

/* ===== fishing.css ===== */
/* fishing.css – Angelwelt (js/fishing/index.js, scene.js, hud.js, chat.js, input.js) */

#screen-fishing { overflow: hidden; background: #101a3a; touch-action: none; overscroll-behavior: none; }
.fw-root {
  position: absolute; inset: 0; overflow: hidden; font-family: var(--font); color: #fff;
  -webkit-user-select: none; user-select: none; -webkit-tap-highlight-color: transparent;
  --glass: rgba(27, 20, 64, .74);
  --glass-2: rgba(27, 20, 64, .86);
  --glass-b: rgba(255, 255, 255, .14);
  --fw-shadow: 0 8px 24px rgba(8, 4, 30, .35);
  --safe-t: env(safe-area-inset-top, 0px);
  --safe-b: env(safe-area-inset-bottom, 0px);
  --safe-l: env(safe-area-inset-left, 0px);
  --safe-r: env(safe-area-inset-right, 0px);
}
.fw-stage { position: absolute; inset: 0; z-index: 0; }
.fw-canvas { display: block; width: 100%; height: 100%; touch-action: none; outline: none; }
.fw-ui { position: absolute; inset: 0; pointer-events: none; }
.fw-ui > * { pointer-events: auto; }
.fw-catch-ui { position: absolute; inset: 0; z-index: 30; pointer-events: none; }

/* ---------- Namensschilder & Blasen über den Figuren ---------- */
.fw-tags { position: absolute; inset: 0; pointer-events: none; overflow: hidden; z-index: 1; }
.fw-ov { position: absolute; left: 0; top: 0; width: 0; height: 0; will-change: transform; }
.fw-tag {
  position: absolute; left: 0; bottom: 0; transform: translateX(-50%);
  display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; max-width: 220px;
  padding: 3px 10px 3px; border-radius: 999px; background: rgba(20, 14, 50, .66);
  border-bottom: 2.5px solid var(--pc, #fff); box-shadow: 0 2px 8px rgba(0, 0, 0, .25);
  font: 600 13px/1.2 var(--font-display); letter-spacing: .2px; color: #fff; text-shadow: 0 1px 0 rgba(0, 0, 0, .35);
  pointer-events: auto; cursor: pointer; transition: background .15s, transform .15s;
}
.fw-tag:hover { background: rgba(43, 29, 107, .9); transform: translateX(-50%) translateY(-1px); }
.fw-tag.me { pointer-events: none; background: rgba(255, 201, 51, .9); color: #2a1a00; text-shadow: none; border-bottom-color: #e6a100; }
.fw-tag.npc { background: rgba(110, 70, 30, .82); border-bottom-color: #ffd24a; }
.fw-name { overflow: hidden; text-overflow: ellipsis; }
.fw-badge { font-size: 13px; line-height: 1; }
.fw-bubbles { position: absolute; left: 0; bottom: 30px; transform: translateX(-50%); display: flex; flex-direction: column-reverse; align-items: center; gap: 6px; }
.fw-bubble { animation: fwPop .32s cubic-bezier(.2, 1.6, .4, 1) both; transform-origin: 50% 100%; }
.fw-bubble.out { animation: fwFade .4s ease forwards; }
.fw-bubble.chat {
  position: relative; max-width: 230px; width: max-content; padding: 7px 12px; border-radius: 14px;
  background: #fff; color: #231a4a; font: 700 13.5px/1.3 var(--font); box-shadow: 0 6px 18px rgba(10, 6, 40, .3);
  overflow-wrap: anywhere; text-align: center;
}
.fw-bubble.chat::after {
  content: ''; position: absolute; left: 50%; bottom: -6px; width: 12px; height: 12px; background: #fff;
  transform: translateX(-50%) rotate(45deg); border-radius: 2px;
}
.fw-bubble.emote { font: 34px/1 "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif; filter: drop-shadow(0 4px 6px rgba(0, 0, 0, .3)); animation: fwEmote 2.6s ease both; }
.fw-bubble.bite {
  width: 42px; height: 42px; border-radius: 50%; display: grid; place-items: center;
  background: radial-gradient(circle at 35% 30%, #fff6a8, #ffc933 60%, #ff9f1a);
  color: #c2132a; font: 700 30px/1 var(--font-display); box-shadow: 0 0 0 4px rgba(255, 255, 255, .85), 0 0 24px rgba(255, 201, 51, .9);
  animation: fwPop .25s cubic-bezier(.2, 1.8, .4, 1) both, fwShake .35s ease-in-out .25s infinite;
}
.fw-bubble.catch {
  display: flex; flex-direction: column; align-items: center; padding: 6px 12px; border-radius: 12px;
  background: rgba(20, 14, 50, .88); border: 2px solid var(--rc); box-shadow: 0 0 18px color-mix(in srgb, var(--rc) 55%, transparent);
  font: 600 13px/1.2 var(--font-display); white-space: nowrap;
}
.fw-bubble.catch b { color: var(--rc); font-weight: 600; font-size: 14.5px; }
/* Schnur gerissen (andere Spieler): kurzer roter Knall-Zettel, wackelt einmal */
.fw-bubble.snap {
  display: flex; align-items: center; gap: 5px; padding: 5px 11px 5px 8px; border-radius: 12px; white-space: nowrap;
  background: linear-gradient(180deg, #ff6370, #d92a43); color: #fff; font: 700 13px/1.1 var(--font-display);
  box-shadow: 0 0 0 2px rgba(255, 255, 255, .9), 0 6px 16px rgba(120, 10, 30, .45); text-shadow: 0 1px 0 rgba(90, 0, 20, .5);
  animation: fwSnap .5s cubic-bezier(.2, 1.6, .4, 1) both;
}
.fw-bubble.snap i { font-style: normal; font-size: 15px; }
@keyframes fwSnap { 0% { opacity: 0; transform: scale(.3) rotate(-12deg); } 55% { opacity: 1; transform: scale(1.18) rotate(5deg); } 75% { transform: scale(.96) rotate(-3deg); } 100% { transform: none; } }
.fw-bubble.catch span { font-family: var(--font); font-weight: 800; font-size: 11.5px; color: #d9d3f5; }
@keyframes fwPop { from { opacity: 0; transform: scale(.4) translateY(8px); } to { opacity: 1; transform: none; } }
@keyframes fwFade { to { opacity: 0; transform: translateY(-8px) scale(.9); } }
@keyframes fwEmote { 0% { opacity: 0; transform: scale(.3) translateY(10px); } 12% { opacity: 1; transform: scale(1.25) translateY(-4px); } 22% { transform: scale(1); } 85% { opacity: 1; transform: translateY(-6px); } 100% { opacity: 0; transform: translateY(-16px); } }
@keyframes fwShake { 0%, 100% { transform: rotate(0); } 25% { transform: rotate(-12deg) scale(1.08); } 75% { transform: rotate(12deg) scale(1.08); } }

/* ---------- Gemeinsame Bausteine ---------- */
.fw-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 7px; height: 42px; padding: 0 14px;
  border: 1px solid var(--glass-b); border-radius: 14px; background: var(--glass); color: #fff; cursor: pointer;
  font: 600 15px/1 var(--font-display); white-space: nowrap; backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  box-shadow: 0 4px 0 rgba(0, 0, 0, .2), var(--fw-shadow); transition: transform .12s, background .15s, filter .15s;
}
.fw-btn:hover { background: var(--glass-2); transform: translateY(-1px); }
.fw-btn:active { transform: translateY(2px); box-shadow: 0 1px 0 rgba(0, 0, 0, .2); }
.fw-btn .ic { font-size: 18px; line-height: 1; }
.fw-ibtn { padding: 0 11px; position: relative; }
.fw-x {
  border: none; background: rgba(255, 255, 255, .1); color: #fff; width: 30px; height: 30px; border-radius: 10px;
  cursor: pointer; font: 700 14px/1 var(--font); flex: none;
}
.fw-x:hover { background: rgba(255, 255, 255, .2); }
.fw-panel {
  position: absolute; z-index: 40; background: var(--glass-2); border: 1px solid var(--glass-b); border-radius: 18px;
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); box-shadow: var(--shadow); padding: 12px;
}
.fw-panel-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.fw-panel-head b { font: 600 17px/1.2 var(--font-display); }
.fw-unread {
  position: absolute; top: -6px; right: -6px; min-width: 19px; height: 19px; padding: 0 5px; border-radius: 10px;
  background: var(--danger); color: #fff; font: 800 11px/19px var(--font); text-align: center; box-shadow: 0 2px 6px rgba(0, 0, 0, .3);
}

/* ---------- Kopfleiste ---------- */
.fw-top {
  position: absolute; z-index: 20; top: calc(10px + var(--safe-t)); left: calc(10px + var(--safe-l)); right: calc(10px + var(--safe-r));
  display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; pointer-events: none;
}
.fw-top > * { pointer-events: auto; }
.fw-top-left, .fw-top-right { display: flex; align-items: center; gap: 8px; min-width: 0; }
.fw-top-right { flex-wrap: wrap; justify-content: flex-end; }
.fw-back .ar { font-size: 18px; }
.fw-title {
  display: flex; flex-direction: column; justify-content: center; height: 42px; padding: 0 14px; border-radius: 14px;
  background: var(--glass); border: 1px solid var(--glass-b); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); box-shadow: var(--fw-shadow);
}
.fw-title b { font: 600 16px/1.1 var(--font-display); white-space: nowrap; }
.fw-inst { font: 800 11px/1.2 var(--font); color: var(--muted); letter-spacing: .4px; text-transform: uppercase; }
.fw-online {
  display: inline-flex; align-items: center; gap: 7px; height: 30px; padding: 0 12px; border-radius: 999px;
  background: rgba(27, 20, 64, .6); border: 1px solid var(--glass-b); font: 800 12.5px/1 var(--font); color: #e6e1ff; white-space: nowrap;
}
.fw-online .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--good); box-shadow: 0 0 0 3px rgba(51, 209, 122, .25); animation: livePulse 1.8s ease-out infinite; }
.fw-root.offline .fw-online .dot { background: var(--danger); box-shadow: none; animation: none; }
.fw-clock {
  display: inline-flex; align-items: center; gap: 7px; height: 42px; padding: 0 13px; border-radius: 14px;
  background: var(--glass); border: 1px solid var(--glass-b); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); box-shadow: var(--fw-shadow);
}
.fw-clock .ph { font-size: 18px; }
.fw-clock .ph:has(.fw-wx-svg) { display: inline-flex; }
.fw-wx-svg { width: 21px; height: 21px; display: block; filter: drop-shadow(0 1px 1px rgba(0, 0, 0, .25)); }
.fw-clock b { font: 600 16px/1 var(--font-display); font-variant-numeric: tabular-nums; letter-spacing: .5px; }
.fw-clock .wx { font: 800 12px/1 var(--font); color: var(--muted); }
.fw-pcount { font: 800 13px/1 var(--font); color: #ffe48a; }
.fw-dexbtn { background: linear-gradient(180deg, rgba(255, 224, 102, .95), rgba(255, 201, 51, .95)); color: #2a1a00; border-color: rgba(255, 255, 255, .4); }
.fw-dexbtn:hover { background: linear-gradient(180deg, #ffe680, #ffd04d); }
.fw-acct { display: flex; align-items: center; max-width: 260px; }
.fw-acct > * { max-width: 100%; }

/* ---------- Lobby-Banner ---------- */
.fw-banner {
  position: absolute; z-index: 19; top: calc(64px + var(--safe-t)); left: 50%; transform: translateX(-50%);
  display: flex; align-items: center; gap: 12px; padding: 9px 10px 9px 14px; border-radius: 16px; max-width: min(760px, calc(100% - 24px)); width: max-content; /* (QA P3) sonst nur halbe Breite (left: 50 %) und dreizeilig auf dem Tablet */
  background: linear-gradient(135deg, rgba(43, 29, 107, .92), rgba(74, 31, 110, .92)); border: 1.5px solid rgba(255, 201, 51, .55);
  box-shadow: var(--fw-shadow), 0 0 0 4px rgba(255, 201, 51, .08); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  animation: fwSlideDown .4s cubic-bezier(.2, 1.3, .4, 1) both;
}
.fw-ban-ic { font-size: 22px; animation: wobble 3s ease-in-out infinite; }
.fw-ban-txt { font: 700 14px/1.3 var(--font); color: #efeaff; min-width: 0; }
.fw-ban-txt b { font: 600 15px/1.2 var(--font-display); color: var(--primary); letter-spacing: .5px; }
.fw-ban-txt small { display: block; font-size: 12px; font-weight: 700; color: var(--muted); }
.fw-ban-btns { display: flex; gap: 8px; flex: none; }
.fw-ban-btns .btn { box-shadow: 0 3px 0 rgba(0, 0, 0, .25); }
.fw-ban-err { position: absolute; left: 14px; top: 100%; margin-top: 6px; color: #ff9aa5; font-weight: 800; font-size: 13px; text-shadow: 0 1px 4px rgba(0, 0, 0, .6); }
@keyframes fwSlideDown { from { opacity: 0; transform: translate(-50%, -14px); } to { opacity: 1; transform: translate(-50%, 0); } }

/* ---------- Ortsname ---------- */
.fw-area {
  position: absolute; z-index: 12; top: 19%; left: 50%; transform: translateX(-50%); pointer-events: none !important;
  display: flex; flex-direction: column; align-items: center; opacity: 0; text-align: center; white-space: nowrap;
}
.fw-area small { font: 800 13px/1 var(--font); letter-spacing: 3px; text-transform: uppercase; color: rgba(255, 255, 255, .85); text-shadow: 0 2px 6px rgba(0, 0, 0, .45); }
.fw-area b {
  font: 600 clamp(30px, 5vw, 48px)/1.15 var(--font-display); color: #fff; letter-spacing: 1px;
  text-shadow: 0 3px 0 rgba(43, 29, 107, .55), 0 6px 22px rgba(0, 0, 0, .35);
}
.fw-area.show { animation: fwArea 2.6s ease both; }
@keyframes fwArea { 0% { opacity: 0; transform: translate(-50%, 10px) scale(.96); } 15% { opacity: 1; transform: translate(-50%, 0) scale(1); } 75% { opacity: 1; } 100% { opacity: 0; transform: translate(-50%, -8px); } }

/* ---------- Hinweise ---------- */
.fw-hint {
  position: absolute; z-index: 15; left: 50%; bottom: calc(84px + var(--safe-b)); transform: translate(-50%, 10px);
  display: flex; align-items: center; gap: 9px; padding: 8px 14px 8px 10px; border-radius: 999px; opacity: 0;
  background: var(--glass-2); border: 1px solid var(--glass-b); box-shadow: var(--fw-shadow); pointer-events: none !important;
  font: 800 13.5px/1 var(--font); white-space: nowrap; transition: opacity .25s, transform .25s;
}
.fw-hint.show { opacity: 1; transform: translate(-50%, 0); }
/* Tafel-Hinweis über der Steuerungshilfe (die bleibt sichtbar) */
.fw-hint.board { bottom: calc(138px + var(--safe-b)); }
.fw-hint-hab { padding: 4px 9px; border-radius: 999px; background: rgba(61, 139, 255, .28); color: #cfe3ff; font-size: 12.5px; }
.fw-hint-hab.gold { background: rgba(255, 201, 51, .25); }
/* ohne Angel: dezenter, die Taste F leuchtet */
.fw-hint.uneq { background: rgba(27, 20, 64, .62); }
.fw-hint.uneq .kc { background: linear-gradient(180deg, #fff6c2, #ffd23f); color: #2a1a00; }
.fw-hint.uneq .fw-hint-t { color: #ffe9a8; }
.fw-kbd { padding: 3px 8px; border-radius: 7px; background: #fff; color: #1b1440; font: 700 12px/1 var(--font); box-shadow: 0 2px 0 rgba(0, 0, 0, .35); }
.fw-warn {
  position: absolute; z-index: 16; left: 50%; top: 58%; transform: translateX(-50%); pointer-events: none !important;
  padding: 10px 18px; border-radius: 16px; background: rgba(255, 255, 255, .95); color: #2a1f5c; opacity: 0;
  font: 600 17px/1.2 var(--font-display); box-shadow: 0 10px 30px rgba(8, 4, 30, .35); white-space: nowrap;
}
.fw-warn.show { animation: fwWarn 1.7s ease both; }
@keyframes fwWarn { 0% { opacity: 0; transform: translate(-50%, 12px) scale(.9); } 12% { opacity: 1; transform: translate(-50%, 0) scale(1.04); } 20% { transform: translate(-50%, 0) scale(1); } 80% { opacity: 1; } 100% { opacity: 0; transform: translate(-50%, -6px); } }
.fw-help {
  position: absolute; z-index: 14; left: 396px; right: 270px; bottom: calc(84px + var(--safe-b));
  display: flex; justify-content: center; pointer-events: none !important; transition: opacity .4s;
}
.fw-ui.fw-hinting .fw-help { opacity: 0 !important; }
.fw-help > * {
  pointer-events: auto; padding: 6px 12px; border-radius: 14px; background: rgba(27, 20, 64, .6); border: 1px solid rgba(255, 255, 255, .1);
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); box-shadow: var(--fw-shadow);
}
.fw-help.dim { opacity: .3; }
.fw-help:hover { opacity: 1; }
.fw-help .kc-list { flex-wrap: wrap; justify-content: center; row-gap: 4px; }

/* ---------- Chat ---------- */
.fw-chat {
  position: absolute; z-index: 20; left: calc(12px + var(--safe-l)); bottom: calc(12px + var(--safe-b)); width: 370px; max-width: calc(100% - 24px);
  display: flex; flex-direction: column; border-radius: 18px; overflow: hidden;
  background: var(--glass); border: 1px solid var(--glass-b); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); box-shadow: var(--fw-shadow);
  transition: background .2s;
}
.fw-chat-head { display: flex; align-items: center; gap: 8px; padding: 9px 10px 9px 14px; cursor: pointer; position: relative; }
.fw-chat-head b { font: 600 15px/1 var(--font-display); }
.fw-chat-head .sub { font: 800 11px/1 var(--font); color: var(--muted); letter-spacing: .4px; text-transform: uppercase; margin-right: auto; }
.fw-chat-head .fw-unread { position: static; }
.fw-chat-min { border: none; background: rgba(255, 255, 255, .1); color: #fff; width: 28px; height: 26px; border-radius: 8px; cursor: pointer; font-size: 13px; }
.fw-chat-log, .fw-chat-quick, .fw-chat-row, .fw-chat-err { display: none; }
.fw-chat.open { background: var(--glass-2); }
.fw-chat.open .fw-chat-log { display: flex; }
.fw-chat.open .fw-chat-quick, .fw-chat.open .fw-chat-row { display: flex; }
.fw-chat.open .fw-chat-err { display: block; }
.fw-chat-log {
  flex-direction: column; gap: 3px; height: 176px; overflow-y: auto; padding: 2px 12px 8px; scrollbar-width: thin; scrollbar-color: rgba(255, 255, 255, .25) transparent;
  -webkit-user-select: text; user-select: text; overscroll-behavior: contain;
}
.fw-msg { font: 700 13.5px/1.35 var(--font); color: #f2efff; overflow-wrap: anywhere; }
.fw-msg-name {
  border: none; background: none; padding: 0; margin-right: 5px; cursor: pointer; font: 800 13.5px/1.35 var(--font);
  color: color-mix(in srgb, var(--pc) 72%, white); text-shadow: 0 1px 0 rgba(0, 0, 0, .35);
}
.fw-msg-name::after { content: ':'; color: rgba(255, 255, 255, .5); }
.fw-msg-name:hover { text-decoration: underline; }
.fw-msg-badge { margin-right: 3px; font-size: 13px; }
.fw-msg-inst { display: inline-block; margin-right: 5px; padding: 1px 5px; border-radius: 6px; background: rgba(255, 255, 255, .12); color: var(--muted); font: 800 10px/1.4 var(--font); vertical-align: 1px; }
.fw-msg.me .txt { color: #fff; }
.fw-msg.sys { color: var(--muted); font-style: italic; font-weight: 700; font-size: 12.5px; }
.fw-msg.sys.k-weather { color: #aee3ff; }
.fw-msg.sys.k-local { color: #ffe9a8; }
.fw-msg.rar { font-style: normal; font-weight: 800; padding: 4px 8px; margin: 2px 0; border-radius: 9px; font-size: 13px; color: #fff; background: rgba(255, 255, 255, .06); border-left: 3px solid var(--rc, #fff); }
.fw-msg.rar-common { --rc: #b8c4d6; }
.fw-msg.rar-uncommon { --rc: #62d98a; }
.fw-msg.rar-rare { --rc: #4fb0ff; }
.fw-msg.rar-epic { --rc: #c58bff; background: rgba(197, 139, 255, .12); }
.fw-msg.rar-legendary { --rc: #ffb83d; background: linear-gradient(90deg, rgba(255, 184, 61, .25), rgba(255, 184, 61, .04)); }
.fw-msg.rar-mythic { --rc: #ff66b3; background: linear-gradient(90deg, rgba(255, 102, 179, .28), rgba(255, 102, 179, .04)); }
.fw-msg.rar-secret { --rc: #8ef3ff; background: linear-gradient(90deg, rgba(142, 243, 255, .25), rgba(142, 243, 255, .04)); }
.fw-msg.rar .txt { text-shadow: 0 0 10px color-mix(in srgb, var(--rc) 60%, transparent); }
.fw-chat-quick { gap: 4px; padding: 2px 10px 7px; }
.fw-chat-quick .ct-list { --ct-h: 32px; gap: 4px; }
.fw-chat-quick .ct-more { --ct-h: 32px; min-width: 38px; padding: 0 8px; border-radius: 10px; font-size: 12.5px; }
.fw-chat-quick .ct-chip {
  flex: none; border: none; background: rgba(255, 255, 255, .09); border-radius: 10px; width: 36px; height: 32px; padding: 0; cursor: pointer;
  font: 19px/1 "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif; transition: transform .12s, background .12s;
}
.fw-chat-quick .ct-chip:hover { background: rgba(255, 255, 255, .18); transform: translateY(-1px) scale(1.08); }
.fw-chat-quick .ct-chip:active { transform: scale(.94); }
.fw-chat-quick .ct-chip:focus-visible { outline: none; background: rgba(255, 201, 51, .22); box-shadow: 0 0 0 2px var(--primary); }
.fw-root.touch .fw-chat-quick .ct-list, .fw-root.touch .fw-chat-quick .ct-more { --ct-h: 38px; }
.fw-root.touch .fw-chat-quick .ct-chip { width: 42px; height: 38px; font-size: 21px; }
.fw-chat-row { align-items: center; gap: 6px; padding: 0 10px 10px; }
.fw-chat-input {
  flex: 1; min-width: 0; height: 38px; padding: 0 12px; border-radius: 12px; border: 2px solid rgba(255, 255, 255, .14);
  background: rgba(10, 6, 35, .5); color: #fff; font: 600 14.5px/1 var(--font); outline: none; transition: border-color .15s;
}
.fw-chat-input:focus { border-color: var(--primary); }
.fw-chat-count { font: 800 11px/1 var(--font); color: var(--muted); }
.fw-chat-send { width: 38px; height: 38px; border: none; border-radius: 12px; background: linear-gradient(180deg, #ffe066, var(--primary)); color: #1b1440; font-size: 16px; cursor: pointer; box-shadow: 0 3px 0 rgba(0, 0, 0, .25); }
.fw-chat-send:disabled { opacity: .5; }
.fw-chat-err { padding: 0 14px 6px; color: #ff9aa5; font: 800 12.5px/1.2 var(--font); min-height: 0; }
.fw-chat-err:empty { display: none !important; }
.fw-feed {
  position: absolute; z-index: 18; left: calc(14px + var(--safe-l)); bottom: calc(64px + var(--safe-b)); width: 360px; max-width: calc(100% - 28px);
  display: flex; flex-direction: column; gap: 4px; pointer-events: none !important;
}
.fw-feed .fw-msg { align-self: flex-start; max-width: 100%; padding: 5px 10px; border-radius: 11px; background: rgba(20, 14, 50, .7); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); animation: fwPop .3s ease both; }
.fw-feed .fw-msg.out { animation: fwFade .45s ease forwards; }

/* ---------- Spielerliste ---------- */
.fw-players { top: calc(64px + var(--safe-t)); right: calc(12px + var(--safe-r)); width: 300px; max-height: min(60vh, 520px); display: flex; flex-direction: column; animation: fwPop .25s ease both; transform-origin: 90% 0; }
.fw-plist { display: flex; flex-direction: column; gap: 4px; overflow-y: auto; scrollbar-width: thin; margin: 0 -4px; padding: 0 4px; }
.fw-prow {
  display: flex; align-items: center; gap: 10px; padding: 5px 8px; border: none; border-radius: 12px; background: rgba(255, 255, 255, .05);
  color: #fff; cursor: pointer; text-align: left; transition: background .12s;
}
.fw-prow:hover { background: rgba(255, 255, 255, .12); }
.fw-prow-w { display: flex; align-items: center; gap: 4px; }
.fw-prow-w > .fw-prow { flex: 1; min-width: 0; }
.fw-prow-act { display: flex; align-items: center; gap: 4px; flex: none; }
.fw-prow-act button { width: 34px; height: 34px; border: none; border-radius: 10px; background: rgba(255, 255, 255, .08); color: #fff; font-size: 16px; cursor: pointer; transition: background .12s, transform .12s; }
.fw-prow-act button:hover { background: rgba(255, 255, 255, .18); transform: scale(1.06); }
.fw-prow-act button:disabled { opacity: .4; cursor: default; transform: none; }
.fw-prow.me { background: rgba(255, 201, 51, .14); }
.fw-av { width: 38px; height: 42px; flex: none; }
.fw-pinfo { display: flex; flex-direction: column; min-width: 0; }
.fw-pname { display: flex; align-items: center; gap: 5px; font: 600 15px/1.2 var(--font-display); color: color-mix(in srgb, var(--pc) 55%, white); }
.fw-pname > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fw-pname em { font: 800 10px/1 var(--font); font-style: normal; padding: 3px 6px; border-radius: 6px; background: var(--primary); color: #1b1440; text-transform: uppercase; }
.fw-pname em.g { background: rgba(255, 255, 255, .15); color: var(--muted); }
.fw-pinfo small { font: 700 12px/1.3 var(--font); color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ---------- Minikarte ---------- */
.fw-minimap {
  position: absolute; z-index: 17; right: calc(12px + var(--safe-r)); bottom: calc(12px + var(--safe-b));
  padding: 6px; border-radius: 18px; background: var(--glass); border: 1px solid var(--glass-b); box-shadow: var(--fw-shadow);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); cursor: zoom-in; transition: transform .15s;
}
.fw-minimap:not(.big):hover { transform: translateY(-2px); }
.fw-mm-cv { display: block; border-radius: 13px; }
.fw-mm-label {
  position: absolute; left: 50%; bottom: 12px; transform: translateX(-50%); padding: 3px 9px; border-radius: 999px;
  background: rgba(20, 14, 50, .78); font: 600 12px/1.2 var(--font-display); white-space: nowrap; pointer-events: none;
}
.fw-mm-x { display: none; position: absolute; top: 12px; right: 12px; }
.fw-minimap.big {
  z-index: 55; left: 50%; right: auto; bottom: auto; top: 50%; transform: translate(-50%, -50%); cursor: default;
  padding: 10px; box-shadow: 0 0 0 100vmax rgba(8, 4, 30, .55), var(--shadow); animation: fwPopC .25s ease both;
}
.fw-minimap.big .fw-mm-x { display: block; }
/* große Karte: Ortsschild oben links (dort ist Meer) – unten stünde es auf Fähre und Steg */
.fw-minimap.big .fw-mm-label { left: 18px; top: 18px; bottom: auto; transform: none; font-size: 14px; }

/* ---------- Emote-Rad ---------- */
.fw-wheel { position: absolute; inset: 0; z-index: 60; background: radial-gradient(circle, rgba(27, 20, 64, .55) 0, rgba(27, 20, 64, .25) 180px, transparent 260px); }
.fw-wheel-c {
  position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 86px; height: 86px; border-radius: 50%;
  display: grid; place-items: center; background: var(--glass-2); border: 1px solid var(--glass-b); font: 600 15px/1 var(--font-display); color: var(--muted);
}
.fw-wheel-e {
  position: absolute; transform: translate(-50%, -50%); width: 60px; height: 60px; border-radius: 50%; border: 2px solid rgba(255, 255, 255, .2);
  background: var(--glass-2); cursor: pointer; font: 30px/1 "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif;
  box-shadow: var(--fw-shadow); transition: transform .12s, background .12s, border-color .12s; animation: fwPop .25s cubic-bezier(.2, 1.6, .4, 1) both;
}
.fw-wheel-e:hover { transform: translate(-50%, -50%) scale(1.16); background: rgba(74, 52, 170, .95); border-color: var(--primary); }
.fw-wheel-e small { position: absolute; right: -3px; bottom: -3px; width: 19px; height: 19px; border-radius: 6px; background: #fff; color: #1b1440; font: 800 11px/19px var(--font); }
.fw-root.touch .fw-wheel-e small { display: none; }

/* ---------- Ton ---------- */
.fw-sound { top: calc(64px + var(--safe-t)); right: calc(12px + var(--safe-r)); width: 280px; display: flex; flex-direction: column; gap: 10px; animation: fwPop .2s ease both; transform-origin: 90% 0; }
.fw-snd-row { display: flex; align-items: center; gap: 12px; font: 800 13px/1 var(--font); }
.fw-snd-row span { width: 82px; color: #e9e4ff; }
.fw-snd-row input { flex: 1; accent-color: var(--primary); }

/* ---------- Info-Karte ---------- */
.fw-card {
  position: absolute; z-index: 60; left: 50%; top: 50%; transform: translate(-50%, -50%); width: min(420px, calc(100% - 28px));
  padding: 16px; border-radius: 20px; background: var(--glass-2); border: 1px solid var(--glass-b); box-shadow: 0 0 0 100vmax rgba(8, 4, 30, .35), var(--shadow);
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); animation: fwPopC .25s ease both;
}
@keyframes fwPopC { from { opacity: 0; transform: translate(-50%, -50%) scale(.9); } to { opacity: 1; transform: translate(-50%, -50%); } }
.fw-card > .fw-x { position: absolute; top: 10px; right: 10px; }
.fw-card-in { display: flex; gap: 14px; align-items: flex-start; }
.fw-card-in canvas { flex: none; background: radial-gradient(circle at 50% 70%, rgba(255, 255, 255, .14), transparent 65%); border-radius: 16px; }
.fw-card-txt { display: flex; flex-direction: column; gap: 4px; min-width: 0; padding-right: 26px; }
.fw-card-txt b { font: 600 21px/1.15 var(--font-display); color: color-mix(in srgb, var(--pc, #fff) 60%, white); }
.fw-tagline { font: 800 12.5px/1.3 var(--font); color: var(--muted); }
.fw-where { font: 700 13.5px/1.3 var(--font); }
.fw-card-txt small { font: 700 12.5px/1.4 var(--font); color: #cfc8f2; margin-top: 4px; }
.fw-tips { margin: 6px 0 0; padding: 0 0 0 18px; display: flex; flex-direction: column; gap: 6px; font: 700 13.5px/1.35 var(--font); color: #efeaff; }

/* ---------- Ladebildschirm ---------- */
.fw-loading {
  position: absolute; inset: 0; z-index: 80; display: grid; place-items: center;
  background: radial-gradient(1000px 700px at 30% 0%, #3b2a8f 0%, transparent 60%), radial-gradient(800px 600px at 100% 100%, #1f6b8f 0%, transparent 55%), linear-gradient(160deg, #1b1440, #173a5c);
  transition: opacity .6s;
}
.fw-loading.out { opacity: 0; pointer-events: none; }
.fw-load-card { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 26px 34px; text-align: center; }
.fw-load-scene { position: relative; width: 200px; height: 120px; border-radius: 22px; overflow: hidden; background: linear-gradient(180deg, #8fd6ff 0%, #cdeeff 58%, #2fb2e6 58%, #1c6fb4 100%); box-shadow: var(--shadow); }
.fw-load-sun { position: absolute; left: 26px; top: 16px; width: 34px; height: 34px; border-radius: 50%; background: #ffe066; box-shadow: 0 0 22px #ffd24a; }
.fw-load-wave { position: absolute; left: -20px; right: -20px; height: 18px; border-radius: 50%; background: rgba(255, 255, 255, .35); }
.fw-load-wave.w1 { top: 66px; animation: fwWave 3s ease-in-out infinite; }
.fw-load-wave.w2 { top: 86px; opacity: .6; animation: fwWave 3.6s ease-in-out infinite reverse; }
.fw-load-bobber { position: absolute; left: 50%; top: 52px; width: 22px; height: 22px; margin-left: -11px; border-radius: 50%; background: linear-gradient(180deg, #ff4a4a 50%, #fff 50%); box-shadow: 0 2px 6px rgba(0, 0, 0, .25); animation: fwBob 1.6s ease-in-out infinite; }
.fw-load-bobber i { position: absolute; left: 50%; top: -10px; width: 3px; height: 11px; margin-left: -1.5px; background: #ffd24a; border-radius: 2px; }
.fw-load-title { font: 600 32px/1.1 var(--font-display); background: linear-gradient(180deg, #fff6c2, #ffc933 60%, #ff8a3d); -webkit-background-clip: text; background-clip: text; color: transparent; filter: drop-shadow(0 3px 0 #4a1a6a); margin-top: 8px; }
.fw-load-txt { font: 800 14px/1.3 var(--font); color: #d6cff8; min-height: 18px; }
.fw-loading.err .fw-load-txt { color: #ff9aa5; }
.fw-load-bar { width: 220px; height: 8px; border-radius: 6px; background: rgba(255, 255, 255, .12); overflow: hidden; }
.fw-load-bar i { display: block; height: 100%; background: linear-gradient(90deg, #ffe066, var(--primary)); transform-origin: 0 50%; transform: scaleX(0); transition: transform .3s ease; }
.fw-fail-btns { position: absolute; z-index: 81; left: 50%; top: calc(50% + 130px); transform: translateX(-50%); }
@keyframes fwBob { 0%, 100% { transform: translateY(0) rotate(-6deg); } 50% { transform: translateY(6px) rotate(6deg); } }
@keyframes fwWave { 0%, 100% { transform: translateX(-10px); } 50% { transform: translateX(10px); } }

/* ---------- Kamera ---------- */
.fw-stage.cam-drag, .fw-stage.cam-drag .fw-canvas { cursor: grabbing; }
/* Kompass an der Minikarte (nur bei gedrehter Kamera; Klick setzt zurück) */
.fw-compass {
  position: absolute; z-index: 18; right: calc(244px + var(--safe-r)); bottom: calc(232px + var(--safe-b)); width: 42px; height: 42px; padding: 0;
  border-radius: 50%; border: 2px solid rgba(255, 255, 255, .55); background: radial-gradient(circle at 40% 35%, #3b2d8f, #1b1440); cursor: pointer;
  box-shadow: 0 4px 0 rgba(0, 0, 0, .25), var(--fw-shadow); opacity: 0; transform: scale(.6); pointer-events: none !important;
  transition: opacity .25s, transform .3s cubic-bezier(.2, 1.5, .4, 1);
}
.fw-compass.show { opacity: 1; transform: none; pointer-events: auto !important; }
.fw-compass:hover { border-color: var(--primary); }
.fw-cmp-needle { position: absolute; inset: 0; display: block; transition: transform .12s linear; }
.fw-cmp-needle::before { content: ''; position: absolute; left: 50%; top: 7px; margin-left: -5px; border: 5px solid transparent; border-bottom: 13px solid #ff5a4f; border-top: 0; }
.fw-cmp-needle::after { content: ''; position: absolute; left: 50%; bottom: 7px; margin-left: -5px; border: 5px solid transparent; border-top: 13px solid #e9e4ff; border-bottom: 0; }
.fw-root.touch .fw-compass { right: calc(12px + var(--safe-r)); bottom: auto; top: calc(var(--fw-top-h, 100px) + 52px); }
/* Handy quer: rechts am Rand stehen 🎒/😀/💬 → Kompass links daneben (über dem Kescher, siehe fishing-catch.css) */
@media (orientation: landscape) and (max-height: 560px) {
  .fw-root.touch .fw-compass { right: calc(106px + var(--safe-r)); top: calc(var(--fw-top-h, 60px) + 8px); }
}

/* ---------- Ausrüstungsleiste (Desktop, unten mittig) ---------- */
.fw-hotbar {
  position: absolute; z-index: 16; left: 50%; bottom: calc(12px + var(--safe-b)); transform: translateX(-50%);
  display: flex; align-items: center; gap: 7px; padding: 6px; border-radius: 21px;
  background: rgba(20, 14, 50, .58); border: 1px solid var(--glass-b); box-shadow: var(--fw-shadow);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); transition: opacity .25s, transform .3s cubic-bezier(.2, 1.2, .4, 1);
}
.fw-hb-slot {
  position: relative; display: flex; align-items: center; gap: 9px; height: 54px; padding: 0 14px 0 6px; border-radius: 15px;
  border: 1.5px solid rgba(255, 255, 255, .12); background: linear-gradient(180deg, rgba(255, 255, 255, .1), rgba(255, 255, 255, .03));
  color: #fff; cursor: pointer; font-family: var(--font); text-align: left;
  transition: transform .14s, background .15s, border-color .2s, box-shadow .25s;
}
.fw-hb-slot:hover { background: linear-gradient(180deg, rgba(255, 255, 255, .17), rgba(255, 255, 255, .06)); transform: translateY(-2px); }
.fw-hb-slot:active { transform: translateY(1px); }
.fw-hb-slot:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.fw-hb-ic {
  width: 42px; height: 42px; flex: none; display: grid; place-items: center; border-radius: 12px;
  background: radial-gradient(circle at 50% 40%, rgba(255, 255, 255, .1), rgba(10, 6, 35, .55)); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .08);
}
.fw-hb-ic.emoji { font: 23px/1 "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif; }
.fw-hb-ic canvas { display: block; }
.fw-hb-txt { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.fw-hb-txt b { font: 600 15px/1.05 var(--font-display); white-space: nowrap; max-width: 124px; overflow: hidden; text-overflow: ellipsis; }
.fw-hb-txt small { font: 800 10.5px/1 var(--font); letter-spacing: .5px; text-transform: uppercase; color: var(--muted); white-space: nowrap; }
.fw-hb-key { position: absolute; top: -8px; right: -7px; box-shadow: 0 2px 0 rgba(0, 0, 0, .35), 0 2px 8px rgba(0, 0, 0, .3); }
.fw-hb-rod { min-width: 186px; }
.fw-hb-rod.on {
  border-color: color-mix(in srgb, var(--rc, #ffd23f) 70%, white);
  background: linear-gradient(180deg, color-mix(in srgb, var(--rc, #ffd23f) 34%, transparent), color-mix(in srgb, var(--rc, #ffd23f) 8%, transparent));
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--rc, #ffd23f) 40%, transparent), 0 0 20px color-mix(in srgb, var(--rc, #ffd23f) 32%, transparent);
}
.fw-hb-rod.on small { color: #ffe9a8; }
.fw-hb-rod.on .fw-hb-ic { background: radial-gradient(circle at 50% 40%, color-mix(in srgb, var(--rc, #ffd23f) 35%, transparent), rgba(10, 6, 35, .55)); }
.fw-hb-rod.nudge { animation: fwNudge .55s ease; }
@keyframes fwNudge { 0%, 100% { transform: none; } 20% { transform: translateX(-5px) rotate(-1.5deg); } 45% { transform: translateX(5px) rotate(1.5deg); } 70% { transform: translateX(-3px); } }
.fw-hb-rod.nudge .fw-hb-key { animation: fwKeyGlow .8s ease; }
@keyframes fwKeyGlow { 0%, 100% { box-shadow: 0 2px 0 rgba(0, 0, 0, .35); } 40% { box-shadow: 0 0 0 4px rgba(255, 210, 63, .55), 0 0 18px rgba(255, 210, 63, .8); } }
.fw-hb-gear { padding: 0 6px; }
.fw-hb-lv {
  position: absolute; left: 50%; bottom: -7px; transform: translateX(-50%); padding: 2px 6px; border-radius: 7px; white-space: nowrap;
  background: var(--primary); color: #1b1440; font: 800 10px/1.2 var(--font); box-shadow: 0 2px 0 rgba(0, 0, 0, .3);
}
@media (max-width: 1240px) {
  .fw-hb-txt { display: none; }
  .fw-hb-rod { min-width: 0; }
  .fw-hb-slot { padding: 0 6px; }
}

/* Kopfleiste: Bestenliste-Knopf leuchtet bei neuen Daten kurz auf */
.fw-lbbtn.ping, .fw-morebtn.ping { animation: fwPing 1.4s ease; }
@keyframes fwPing { 0% { box-shadow: 0 4px 0 rgba(0, 0, 0, .2), 0 0 0 0 rgba(255, 210, 63, .9); } 40% { background: rgba(255, 201, 51, .45); box-shadow: 0 4px 0 rgba(0, 0, 0, .2), 0 0 0 10px rgba(255, 210, 63, 0); } 100% { box-shadow: 0 4px 0 rgba(0, 0, 0, .2), var(--fw-shadow); } }

/* ---------- „⋯“-Menü der Kopfleiste (immer da; Phase 2: Insel-Werkzeuge der Erweiterungen) ---------- */
.fw-morebtn { display: inline-flex; position: relative; }
.fw-more-dot { display: none; }
.fw-morebtn.x-lo .fw-more-dot { display: block; }
/* Karte (M, Minikarte), Ton und Freunde (Konto-Widget) stehen im Menü; Bestenliste & Spieler als Knöpfe */
.fw-frbtn, .fw-mapbtn, .fw-sndbtn { display: none; }
.fw-more-it.m-lb, .fw-more-it.m-pl { display: none; }
.fw-more-sep { padding: 9px 10px 3px; font: 800 10.5px/1.2 var(--font); letter-spacing: .6px; text-transform: uppercase; color: var(--muted); }
.fw-morebtn .ic { font-size: 22px; font-weight: 800; letter-spacing: 1px; transform: translateY(-3px); }
.fw-morebtn.on { background: var(--glass-2); border-color: rgba(255, 201, 51, .6); }
.fw-more {
  position: absolute; z-index: 42; top: calc(var(--fw-top-h, 54px) + 8px); right: calc(10px + var(--safe-r)); width: min(290px, calc(100% - 20px));
  padding: 6px; border-radius: 18px; background: rgba(29, 21, 80, .96); border: 1.5px solid var(--glass-b); box-shadow: var(--shadow);
  backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); animation: fwMore .2s cubic-bezier(.2, 1.3, .4, 1) both;
  max-height: calc(100% - var(--fw-top-h, 54px) - 20px); overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin;
}
.fw-more-head { display: flex; flex-direction: column; gap: 2px; padding: 6px 10px 9px; margin-bottom: 4px; border-bottom: 1px solid rgba(255, 255, 255, .1); }
.fw-more-head b { font: 600 15px/1.2 var(--font-display); }
.fw-more-head small { font: 800 11.5px/1.3 var(--font); color: var(--muted); }
.fw-more-it {
  display: flex; align-items: center; gap: 11px; width: 100%; min-height: 46px; padding: 0 10px; border: 0; border-radius: 12px;
  background: none; color: #fff; font: 700 15px/1.2 var(--font); text-align: left; cursor: pointer;
}
.fw-more-it:hover, .fw-more-it:focus-visible { background: rgba(255, 255, 255, .09); outline: none; }
.fw-more-it:active { background: rgba(255, 255, 255, .14); }
.fw-more-it .ic { width: 26px; font-size: 20px; text-align: center; flex: none; }
.fw-more-it .lb { flex: 1; min-width: 0; }
.fw-more-n { min-width: 22px; height: 20px; padding: 0 6px; border-radius: 10px; background: var(--primary); color: #1b1440; font: 800 11.5px/20px var(--font); text-align: center; }
.fw-more-key { flex: none; padding: 3px 6px; border: 1px solid rgba(255, 255, 255, .18); border-radius: 6px; font: 800 11px/1 var(--font); color: var(--muted); }
.fw-root.touch .fw-more-key { display: none; }
/* Sprache (DE | EN) rechts im Kopf des ⋯-Menüs – Schalter aus lang-switch.js / i18n.css */
.fw-more-head { flex-direction: row; align-items: center; gap: 10px; }
.fw-more-head-t { display: flex; flex-direction: column; gap: 2px; flex: 1; min-width: 0; }
.fw-more-lang { flex: none; }
.fw-root.touch .fw-more-lang .lang-sw-b { min-width: 40px; height: 32px; font-size: 13px; }
@keyframes fwMore { from { opacity: 0; transform: translateY(-6px) scale(.97); } to { opacity: 1; transform: none; } }
/* Angemeldet bringt das Konto-Widget einen eigenen Freunde-Knopf mit – kein doppelter Knopf */
.fw-top-right:has(.accw.in) .fw-frbtn { display: none; }

/* ---------- Bestenliste (Panel) ---------- */
.fw-lb-back { position: absolute; inset: 0; z-index: 58; display: grid; place-items: center; background: rgba(8, 4, 30, .42); animation: fwFadeIn .2s ease both; }
.fw-lb-back.hidden { display: none; }
@keyframes fwFadeIn { from { opacity: 0; } to { opacity: 1; } }
.fw-lb {
  width: min(580px, calc(100% - 24px)); max-height: min(84vh, 740px); display: flex; flex-direction: column; padding: 14px 14px 12px;
  border-radius: 22px; background: var(--glass-2); border: 1px solid var(--glass-b); box-shadow: var(--shadow);
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); animation: fwPop .26s cubic-bezier(.2, 1.3, .4, 1) both;
}
.fw-lb-head b { display: flex; align-items: center; gap: 9px; font: 600 21px/1.2 var(--font-display); }
.fw-lb-cup { font-size: 24px; filter: drop-shadow(0 2px 6px rgba(255, 201, 51, .55)); }
.fw-lb-tabs { display: flex; gap: 5px; padding: 4px; margin-bottom: 10px; border-radius: 15px; background: rgba(10, 6, 35, .45); }
.fw-lb-tab {
  flex: 1 1 0; min-width: 0; display: flex; align-items: center; justify-content: center; gap: 6px; height: 40px; padding: 0 8px;
  border: none; border-radius: 11px; background: transparent; color: #cfc8f2; cursor: pointer; font: 600 14px/1 var(--font-display);
  transition: background .15s, color .15s;
}
.fw-lb-tab .ic { font-size: 16px; flex: none; }
.fw-lb-tab .lb { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fw-lb-tab:hover { background: rgba(255, 255, 255, .08); color: #fff; }
.fw-lb-tab.on { background: linear-gradient(180deg, #ffe066, var(--primary)); color: #2a1a00; box-shadow: 0 3px 0 rgba(0, 0, 0, .25); }
.fw-lb-sub { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; padding: 0 6px 2px; }
.fw-lb-sub b { font: 600 15px/1.2 var(--font-display); color: #ffe48a; }
.fw-lb-sub span { font: 800 11px/1 var(--font); letter-spacing: .5px; text-transform: uppercase; color: var(--muted); }
.fw-lb-list { display: flex; flex-direction: column; gap: 5px; overflow-y: auto; margin: 0 -6px; padding: 2px 6px 4px; scrollbar-width: thin; scrollbar-color: rgba(255, 255, 255, .25) transparent; overscroll-behavior: contain; }
.fw-lb-row {
  display: grid; grid-template-columns: 38px 40px minmax(0, 1fr) auto; align-items: center; gap: 10px; min-height: 54px; padding: 4px 14px 4px 8px;
  border: none; border-radius: 14px; background: rgba(255, 255, 255, .05); color: #fff; text-align: left; cursor: pointer; font-family: var(--font);
  transition: background .12s, transform .12s;
}
.fw-lb-row:hover:not(:disabled) { background: rgba(255, 255, 255, .12); transform: translateX(2px); }
.fw-lb-row:disabled { cursor: default; opacity: 1; }
.fw-lb-row.me { background: rgba(255, 210, 63, .15); box-shadow: inset 0 0 0 2px rgba(255, 210, 63, .65); }
.fw-lb-row.static { grid-template-columns: 38px minmax(0, 1fr) auto; cursor: default; }
.fw-lb-rank { justify-self: center; width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; background: rgba(255, 255, 255, .1); font: 600 16px/1 var(--font-display); }
.fw-lb-row.r1 .fw-lb-rank { background: radial-gradient(circle at 35% 30%, #fff3a8, #ffc933 60%, #c98a00); color: #3a2400; box-shadow: 0 0 14px rgba(255, 201, 51, .45); }
.fw-lb-row.r2 .fw-lb-rank { background: radial-gradient(circle at 35% 30%, #ffffff, #d5dbe6 60%, #8a94a8); color: #2a2f3c; }
.fw-lb-row.r3 .fw-lb-rank { background: radial-gradient(circle at 35% 30%, #ffd2a8, #e0915a 60%, #9a5428); color: #3a1c00; }
.fw-lb-av { width: 40px; height: 46px; }
.fw-lb-who { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.fw-lb-name { display: flex; align-items: center; gap: 5px; min-width: 0; font: 600 16px/1.2 var(--font-display); color: color-mix(in srgb, var(--pc, #fff) 45%, white); }
.fw-lb-name .nm { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fw-lb-name em { flex: none; padding: 3px 6px; border-radius: 6px; background: var(--primary); color: #1b1440; font: 800 10px/1 var(--font); font-style: normal; text-transform: uppercase; }
.fw-lb-badge { font-size: 14px; flex: none; }
.fw-lb-who small { font: 800 12px/1.2 var(--font); color: var(--rc, var(--muted)); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fw-lb-val { font: 600 17px/1 var(--font-display); color: #ffe066; white-space: nowrap; font-variant-numeric: tabular-nums; }
.fw-lb-empty { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 34px 12px; text-align: center; }
.fw-lb-empty b { font: 600 18px/1.2 var(--font-display); }
.fw-lb-empty span { font: 700 13.5px/1.35 var(--font); color: var(--muted); }
.fw-lb-gap { text-align: center; color: var(--muted); letter-spacing: 4px; font-weight: 800; line-height: 1; }
.fw-lb-foot { display: flex; align-items: center; gap: 8px; margin-top: 10px; padding: 0 4px; font: 800 12px/1.2 var(--font); color: var(--muted); }
.fw-lb-foot .dot { width: 8px; height: 8px; border-radius: 50%; flex: none; background: var(--good); box-shadow: 0 0 0 3px rgba(51, 209, 122, .25); animation: livePulse 1.8s ease-out infinite; }
.fw-lb-tip { margin-left: auto; text-align: right; }

/* ---------- Touch ---------- */
.fw-joy-zone { position: absolute; z-index: 9; left: 0; bottom: 0; width: 52%; height: 48%; touch-action: none; }
.fw-joy-base {
  position: absolute; width: 124px; height: 124px; margin: -62px 0 0 -62px; border-radius: 50%; opacity: 0; pointer-events: none;
  background: radial-gradient(circle, rgba(255, 255, 255, .1), rgba(255, 255, 255, .22)); border: 2px solid rgba(255, 255, 255, .45);
  box-shadow: 0 6px 20px rgba(0, 0, 0, .25); transition: opacity .15s;
}
.fw-joy-base.on { opacity: 1; }
.fw-joy-knob { position: absolute; left: 50%; top: 50%; width: 56px; height: 56px; border-radius: 50%; transform: translate(-50%, -50%); background: radial-gradient(circle at 40% 35%, #fff, #e4dcff); box-shadow: 0 4px 12px rgba(0, 0, 0, .3); }
.fw-root.touch .fw-joy-zone::after {
  content: ''; position: absolute; left: 70px; bottom: calc(80px + var(--safe-b)); width: 96px; height: 96px; margin: -48px 0 0 -48px; border-radius: 50%;
  border: 2px dashed rgba(255, 255, 255, .28); pointer-events: none; transition: opacity .2s;
}
.fw-root.touch .fw-joy-zone:has(.fw-joy-base.on)::after { opacity: 0; }
.fw-act {
  position: absolute; z-index: 21; right: calc(18px + var(--safe-r)); bottom: calc(24px + var(--safe-b)); width: 98px; height: 98px; border-radius: 50%;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px; border: 3px solid rgba(255, 255, 255, .75);
  background: radial-gradient(circle at 40% 30%, #8f86b8, #4e4682); color: #fff; touch-action: none; cursor: pointer;
  box-shadow: 0 6px 0 rgba(0, 0, 0, .25), 0 10px 24px rgba(0, 0, 0, .3); transition: transform .1s, filter .2s, background .2s; opacity: .8;
}
.fw-act .ic { font-size: 34px; line-height: 1; }
.fw-act .lb { font: 600 13px/1 var(--font-display); letter-spacing: .3px; }
.fw-act .ring { position: absolute; inset: -8px; border-radius: 50%; border: 3px solid rgba(255, 224, 102, 0); pointer-events: none; }
.fw-act.ready { background: radial-gradient(circle at 40% 30%, #ffe680, #ffb21f); color: #3a2200; opacity: 1; }
.fw-act.ready .ring { animation: fwRing 1.6s ease-out infinite; }
.fw-act.busy { background: radial-gradient(circle at 40% 30%, #8ec6ff, #3d8bff); color: #fff; opacity: 1; }
.fw-act.down { transform: translateY(4px) scale(.96); box-shadow: 0 2px 0 rgba(0, 0, 0, .25); }
@keyframes fwRing { 0% { border-color: rgba(255, 224, 102, .8); transform: scale(.94); } 100% { border-color: rgba(255, 224, 102, 0); transform: scale(1.18); } }
.fw-tbtns { position: absolute; z-index: 21; right: calc(24px + var(--safe-r)); bottom: calc(136px + var(--safe-b)); display: flex; flex-direction: column; gap: 10px; }
.fw-tbtn {
  position: relative; width: 52px; height: 52px; border-radius: 50%; border: 1px solid var(--glass-b); background: var(--glass-2); color: #fff;
  font: 24px/1 "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif; box-shadow: 0 4px 0 rgba(0, 0, 0, .22); cursor: pointer;
}
.fw-tbtn:active { transform: translateY(2px); }
/* Angeln-Knopf erst mit ausgerüsteter Angel */
.fw-act { transition: transform .28s cubic-bezier(.2, 1.5, .4, 1), opacity .2s, filter .2s, background .2s; }
.fw-ui.fw-uneq .fw-act { opacity: 0; transform: scale(.4); pointer-events: none !important; }
.fw-eqbtn {
  position: absolute; z-index: 22; right: calc(28px + var(--safe-r)); bottom: calc(34px + var(--safe-b)); width: 78px; height: 78px; border-radius: 50%;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0; padding: 0;
  border: 3px solid rgba(255, 255, 255, .75); background: radial-gradient(circle at 40% 30%, #7a6fc4, #3a3172); color: #fff;
  box-shadow: 0 6px 0 rgba(0, 0, 0, .25), 0 10px 24px rgba(0, 0, 0, .3); touch-action: manipulation; cursor: pointer;
  transition: right .3s cubic-bezier(.2, 1.2, .4, 1), bottom .3s cubic-bezier(.2, 1.2, .4, 1), width .3s, height .3s, background .2s, border-width .2s;
}
.fw-eqbtn .fw-eq-ic { display: grid; place-items: center; height: 36px; }
.fw-eqbtn .lb { font: 600 11px/1 var(--font-display); letter-spacing: 0; margin-top: 1px; }
.fw-eqbtn .fw-eq-x { display: none; }
.fw-eqbtn:active { transform: translateY(3px); box-shadow: 0 2px 0 rgba(0, 0, 0, .25); }
.fw-eqbtn.ready { background: radial-gradient(circle at 40% 30%, #ffe680, #ffb21f); color: #3a2200; animation: fwEqPulse 1.6s ease-in-out infinite; }
@keyframes fwEqPulse { 0%, 100% { box-shadow: 0 6px 0 rgba(0, 0, 0, .25), 0 0 0 0 rgba(255, 224, 102, .7); } 50% { box-shadow: 0 6px 0 rgba(0, 0, 0, .25), 0 0 0 12px rgba(255, 224, 102, 0); } }
.fw-eqbtn.on { right: calc(128px + var(--safe-r)); bottom: calc(24px + var(--safe-b)); width: 56px; height: 56px; border-width: 2px; background: var(--glass-2); }
.fw-eqbtn.on .lb { display: none; }
.fw-eqbtn.on .fw-eq-x {
  display: grid; place-items: center; position: absolute; right: -5px; bottom: -5px; width: 22px; height: 22px; border-radius: 50%;
  background: var(--primary); color: #1b1440; font: 800 13px/1 var(--font); box-shadow: 0 2px 0 rgba(0, 0, 0, .3);
}

/* Touch-Anpassungen */
.fw-root.touch .fw-help, .fw-root.touch .fw-chat-head .sub { display: none; }
.fw-root.touch .fw-hint { bottom: auto; top: calc(var(--fw-top-h, 104px) + 8px); padding: 6px 12px 6px 6px; font-size: 12.5px; transform: translate(-50%, -8px); max-width: calc(100% - 20px); }
.fw-hint-hab { flex: none; }
.fw-hint-t { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.fw-root.touch .fw-hint.show { transform: translate(-50%, 0); }
.fw-root.touch .fw-minimap:not(.big) { display: none; }
.fw-root.touch .fw-chat { display: none; }
.fw-root.touch .fw-chat.open {
  display: flex; left: 8px; right: 8px; width: auto; max-width: none; bottom: calc(8px + var(--safe-b)); z-index: 45;
}
.fw-root.touch .fw-chat.open .fw-chat-log { height: min(34vh, 260px); }
.fw-root.touch .fw-chat-input { font-size: 16px; height: 42px; }
.fw-root.touch .fw-feed { top: calc(64px + var(--safe-t)); bottom: auto; left: 10px; width: min(78%, 330px); }
.fw-root.touch .fw-feed .fw-msg { font-size: 12.5px; padding: 4px 9px; }
/* (Feinschliff) Handy: Inselfunk-Zeilen unter der HUD-Zeile aus Muschel-Pille und Event-Leiste (--ew-row/--ew-h aus
   fish-economy.css) und unter dem Fischschwarm-Hinweis – vorher lagen sie halb verdeckt dahinter */
@media (max-width: 760px) {
  .fw-root.touch .fw-feed { top: calc(var(--ew-row, 100px) + var(--ew-h, 48px) + 8px); }
  .fw-root.touch:has(.fsw-pill:not(.hidden)) .fw-feed { top: calc(var(--ew-row, 100px) + var(--ew-h, 48px) + 50px); }
}

/* Während des Angelns (Wurf, Warten, Drill, Fang-Karte) gehört der Platz unten der Fang-Oberfläche */
.fw-root.busy .fw-help, .fw-root.busy .fw-hint { opacity: 0 !important; pointer-events: none !important; }
.fw-root.busy .fw-hotbar { opacity: 0; transform: translate(-50%, 26px); pointer-events: none !important; }
@media (max-width: 1340px) {
  .fw-help .kc-row:nth-child(n+5) { display: none; }
}
@media (max-width: 1180px) {
  .fw-help { display: none; }
}
@media (max-width: 1100px) {
  .fw-ibtn .lb, .fw-dexbtn .lb { display: none; }
}
/* Mittlere Breiten (Tablet, kleines Notebook): Kopfleiste bleibt einzeilig – Freunde, Karte und Ton ins ⋯-Menü */
@media (max-width: 1240px) {
  .fw-back .lb, .fw-online, .fw-clock .wx { display: none; }
  .fw-back { width: 42px; padding: 0; }
  .fw-frbtn, .fw-mapbtn, .fw-sndbtn { display: none; }
  .fw-morebtn { display: inline-flex; }
  .fw-more-it.m-lb, .fw-more-it.m-pl { display: none; }
  .fw-acct .accw-text, .fw-acct .accw-chev { display: none; }
  .fw-acct .accw-avbadge { display: inline-block; }
  .fw-acct .accw-chip { padding: 0 3px; }
}
/* (QA P3) Tablet/kleines Notebook: der Gast-Knopf „Anmelden“ rutschte mit Text in eine zweite Zeile – nur Symbol */
@media (max-width: 1100px) {
  .fw-acct .accw-login { width: 42px; height: 42px; padding: 0; justify-content: center; }
  .fw-acct .accw-login span:not(.ai) { display: none; }
}
/* (QA P3) Tablet hochkant (bis 960 px): ohne Insel-Schild passt die Kopfleiste wieder in eine Zeile (vorher rutschten
   Konto und Freunde in eine zweite Zeile und Lobby-Banner, Muschel-Pille und Event-Leiste schoben sich übereinander) */
@media (max-width: 960px) {
  .fw-title { display: none; }
}
@media (max-height: 640px) {
  .fw-help { display: none; }
}
@media (max-width: 760px) {
  .fw-top { top: calc(8px + var(--safe-t)); left: calc(8px + var(--safe-l)); right: calc(8px + var(--safe-r)); gap: 6px; }
  .fw-top-left, .fw-top-right { gap: 6px; }
  .fw-btn, .fw-title, .fw-clock { height: 40px; }
  .fw-back .lb, .fw-online, .fw-clock .wx { display: none; }
  .fw-back { width: 40px; padding: 0; }
  .fw-title { padding: 0 10px; }
  .fw-title b { font-size: 14px; }
  .fw-clock { padding: 0 9px; gap: 5px; }
  .fw-clock b { font-size: 14px; }
  .fw-ibtn { width: 40px; padding: 0; }
  .fw-pcount { position: absolute; right: -4px; bottom: -4px; min-width: 17px; height: 17px; padding: 0 4px; border-radius: 9px; background: var(--primary); color: #1b1440; font-size: 10.5px; line-height: 17px; }
  /* eine ruhige Zeile: ← … Uhr · Lexikon · ⋯ · Konto (Rest im ⋯-Menü) */
  .fw-title { display: none; }
  .fw-top-right { flex-wrap: nowrap; }
  .fw-lbbtn, .fw-pbtn, .fw-frbtn, .fw-mapbtn, .fw-sndbtn { display: none; }
  .fw-morebtn { display: inline-flex; }
  .fw-more-it.m-lb, .fw-more-it.m-pl { display: flex; }
  .fw-more { right: calc(8px + var(--safe-r)); }
  .fw-acct { max-width: none; }
  .fw-acct .accw { gap: 6px; }
  .fw-acct .accw-text, .fw-acct .accw-chev { display: none; }
  .fw-acct .accw-avbadge { display: inline-block; }
  .fw-acct .accw-chip { height: 40px; padding: 0 2px; }
  .fw-acct .accw-av { width: 32px; height: 32px; }
  .fw-acct .accw-friends { width: 40px; height: 40px; }
  .fw-acct .accw-login { width: 40px; height: 40px; padding: 0; justify-content: center; }
  .fw-acct .accw-login span:not(.ai) { display: none; }
  .fw-banner { top: calc(var(--fw-top-h, 100px) + 8px); width: calc(100% - 16px); padding: 8px 8px 8px 10px; gap: 8px; }
  .fw-ban-ic { display: none; }
  .fw-ban-txt { font-size: 12.5px; }
  .fw-ban-txt small { font-size: 11px; }
  .fw-ban-btns { flex-direction: column; gap: 5px; }
  .fw-ban-btns .btn { padding: 6px 10px; font-size: 13px; }
  .fw-players, .fw-sound { top: calc(var(--fw-top-h, 96px) + 8px); right: 8px; left: 8px; width: auto; }
  .fw-area { top: 24%; }
  .fw-warn { font-size: 15px; }
  /* Bestenliste als Blatt von unten */
  .fw-lb-back { place-items: end center; }
  .fw-lb { width: 100%; max-height: 86vh; border-radius: 22px 22px 0 0; padding: 12px 10px calc(10px + var(--safe-b)); animation: fwSheet .28s cubic-bezier(.2, 1.1, .4, 1) both; }
  .fw-lb-tab { flex-direction: column; gap: 3px; height: 50px; padding: 0 4px; font-size: 11.5px; }
  .fw-lb-tab .lb { max-width: 100%; }
  .fw-lb-row { grid-template-columns: 32px 34px minmax(0, 1fr) auto; gap: 8px; padding: 4px 10px 4px 6px; min-height: 50px; }
  .fw-lb-rank { width: 30px; height: 30px; font-size: 14px; }
  .fw-lb-av { width: 34px; height: 39px; }
  .fw-lb-name { font-size: 15px; }
  .fw-lb-val { font-size: 15px; }
  .fw-lb-tip { display: none; }
}
@keyframes fwSheet { from { transform: translateY(40px); opacity: 0; } to { transform: none; opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
  .fw-area.show, .fw-bubble, .fw-act.ready .ring, .fw-load-bobber, .fw-load-wave { animation-duration: .01s !important; animation-iteration-count: 1 !important; }
  /* fwEmote endet unsichtbar (opacity 0) – verkürzt wäre das Emote sofort weg: ruhig stehen lassen, scene.js entfernt es */
  .fw-bubble.emote { animation: none !important; }
  .fw-bubble.emote.out { opacity: 0; transition: opacity .3s; }
}

/* ───────── Erweiterungs-Knöpfe (ext.js / hud.addButton) ───────── */
.fw-xbtn { position: relative; }
.fw-xbadge { position: absolute; right: -4px; top: -4px; min-width: 17px; height: 17px; padding: 0 4px; border-radius: 9px; background: var(--primary); color: #1b1440; font-size: 10.5px; font-weight: 800; line-height: 17px; text-align: center; pointer-events: none; }
.fw-xbadge.hidden, .fw-more-n.hidden { display: none; }
.fw-more-it.m-x { display: none; }
.fw-xbtn.lo { display: none; }
.fw-more-it.m-x.lo { display: flex; }
/* (QA P3) Abschnitte im ⋯-Menü (hud.js GROUPS) */
.fw-more-sep.g-empty, .fw-more-sep.g-hi { display: none; }
/* Notebook-Breiten: Online-Zähler und Konto-Name weg, damit die Kopfleiste einzeilig bleibt */
@media (max-width: 1366px) {
  .fw-online { display: none; }
  .fw-acct .accw-text, .fw-acct .accw-chev { display: none; }
  .fw-acct .accw-avbadge { display: inline-block; }
  .fw-acct .accw-chip { padding: 0 3px; }
}
@media (max-width: 760px) {
  .fw-xbtn { display: none; }
  .fw-more-it.m-x { display: flex; }
  .fw-more-sep.g-hi:not(.g-empty) { display: block; }
  .fw-morebtn.x-any .fw-more-dot { display: block; }
}
/* (Polish P2) ⋯-Menü auf dem Handy: zweispaltige Kacheln statt einer langen Liste (≈ 17 Einträge) – gut antippbar,
   Abschnitts-Überschriften über die volle Breite, Abzeichen als Ecke an der Kachel */
@media (max-width: 760px) {
  .fw-more { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px; align-content: start; width: min(400px, calc(100% - 16px)); padding: 8px; }
  .fw-more.hidden { display: none; }
  .fw-more-head, .fw-more-sep { grid-column: 1 / -1; }
  .fw-more-head { margin-bottom: 0; }
  .fw-more-sep { padding: 7px 4px 1px; }
  .fw-more-it { position: relative; gap: 8px; min-height: 52px; padding: 6px 8px; border-radius: 13px; background: rgba(255, 255, 255, .06); border: 1px solid rgba(255, 255, 255, .07); font-size: 13.5px; line-height: 1.15; }
  .fw-more-it .ic { width: 24px; font-size: 20px; }
  .fw-more-it .lb { overflow-wrap: anywhere; hyphens: auto; }
  .fw-more-it .fw-more-n { position: absolute; top: -5px; right: -4px; min-width: 19px; height: 18px; padding: 0 5px; font-size: 10.5px; line-height: 18px; box-shadow: 0 0 0 2px rgba(29, 21, 80, .96); }
  .fw-more-it .fw-more-key { display: none; }
}
@media (max-width: 340px) {
  .fw-more { grid-template-columns: minmax(0, 1fr); }
}

/* Eine Angel-Sitzung je Konto: Hinweis im älteren Fenster (index.js replacedNotice) */
.modal.fw-replaced-modal { max-width: 430px; padding: 22px 22px 18px; }
.fw-replaced { text-align: center; display: flex; flex-direction: column; align-items: center; gap: 10px; }
.fw-replaced-art { width: 112px; height: 82px; margin: -4px 0 2px; filter: drop-shadow(0 6px 14px rgba(0, 0, 0, .35)); animation: fwRepl .6s .1s cubic-bezier(.2, 1.4, .4, 1) both; }
.fw-replaced-art svg { width: 100%; height: 100%; display: block; }
@keyframes fwRepl { from { opacity: 0; transform: translateY(8px) scale(.9); } }
.fw-replaced h3 { margin: 0; font-size: 22px; line-height: 1.2; }
.fw-replaced p { margin: 0; color: var(--muted); max-width: 360px; line-height: 1.45; }
.fw-replaced-safe { display: flex; flex-direction: column; gap: 6px; align-items: center; width: 100%; padding: 10px 12px; border-radius: 14px; background: rgba(51, 209, 122, .1); border: 1px solid rgba(51, 209, 122, .32); }
.fw-replaced-safe b { font: 800 12.5px/1.2 var(--font); color: #a8f0c6; letter-spacing: .2px; }
.fw-replaced-safe > div { display: flex; gap: 8px; flex-wrap: wrap; justify-content: center; }
.fw-replaced-safe span { display: inline-flex; align-items: center; gap: 5px; padding: 5px 10px; border-radius: 999px; background: rgba(255, 255, 255, .08); font: 700 13px/1 var(--font); }
.fw-replaced-safe i { font-style: normal; }
.fw-replaced-btns { display: flex; gap: 10px; flex-wrap: wrap; justify-content: center; margin-top: 6px; }
@media (max-width: 420px) { .fw-replaced-btns { width: 100%; } .fw-replaced-btns .btn { flex: 1; } }
@media (prefers-reduced-motion: reduce) { .fw-replaced-art { animation: none; } }

/* ───────── Phase 3 QA 8 (Helfer H2): Schillernde in den Eimer-Auswahlen ─────────
   Opa-Abgabe (quests-ui), Werkbank-Zerlegen (craft-ui), Füttern (pet-ui), Lagerfeuer (island-ui), Bauhütten-Spende (growth-ui).
   .shy-ring = Regenbogen-Rand um die Karte · .shy-badge = ✦ oben links · .shy-art = Zeichnung + Funkeln · .shy-armed = Nachfrage aktiv */
.shy-ring { position: relative; }
.shy-ring::before { content: ''; position: absolute; inset: -3px; border-radius: 15px; padding: 2px; pointer-events: none; z-index: 0;
  background: var(--shy-rainbow, linear-gradient(115deg, #ff8ad8, #ffd36b, #8dffb0, #7fd8ff, #b79bff, #ff8ad8)); background-size: 220% 100%;
  animation: shyFlow 6s linear infinite;
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude; }
.shy-ring { box-shadow: 0 0 14px rgba(231, 182, 255, .35); }
.shy-badge { position: absolute; top: 4px; left: 5px; z-index: 2; width: 20px; height: 20px; border-radius: 50%; pointer-events: none;
  font: 900 12px/20px var(--font, Nunito, sans-serif); font-style: normal; text-align: center; color: #1b1440;
  background: var(--shy-rainbow, linear-gradient(115deg, #ff8ad8, #ffd36b, #8dffb0, #7fd8ff)); box-shadow: 0 0 8px rgba(255, 220, 255, .75); }
.shy-art { position: relative; display: inline-block; line-height: 0; }
.shy-art canvas { display: block; }
.shy-ring.shy-armed { box-shadow: 0 0 0 3px rgba(255, 138, 77, .85), 0 0 18px rgba(255, 138, 77, .55); animation: shyAsk 1s ease-in-out infinite alternate; }
.shy-ring.shy-armed small, .shy-ring.shy-armed .shy-ask { color: #ffb07a; font-weight: 900; }
.fq-fishbtn.shy-armed .shy-ask { color: #b0381a; font-style: normal; font-size: 11.5px; font-weight: 900; }
.btn.shy-armed { background: linear-gradient(180deg, #ffb07a, #ff7a4d) !important; color: #2a0e00 !important; }
@keyframes shyAsk { to { transform: translateY(-2px); } }
@media (prefers-reduced-motion: reduce) { .shy-ring::before, .shy-ring.shy-armed { animation: none; } }

/* ===== fishing-catch.css ===== */
/* fishing-catch.css – Auswerfen, Biss, Drill, Fang-Karte, Feier, Kescher (js/fishing/catch-ui.js),
   das Fischlexikon (js/fishing/dex.js) und das Ausrüstungs-Fenster (js/fishing/gear-ui.js).
   Präfixe: .fc-* (Fang), .fdx-* (Lexikon), .gw-* (Ausrüstung). */

/* ═════════════ Grundgerüst ═════════════ */
.fc { position: absolute; inset: 0; pointer-events: none; z-index: 30; font-family: var(--font); color: #fff; }
.fc .hidden { display: none !important; }
.fc-hold { position: absolute; inset: 0; pointer-events: none; touch-action: none; }
.fc-hold.on { pointer-events: auto; cursor: grab; }
.fc-hold.on:active { cursor: grabbing; }

/* Bildschirmrand-Puls bei harten Fischen (Farbe = Seltenheit), rot wenn er fast weg ist */
.fc-vignette { position: absolute; inset: 0; opacity: 0; transition: opacity .4s; pointer-events: none;
  box-shadow: inset 0 0 calc(60px + 90px * var(--vi, .3)) calc(-10px + 30px * var(--vi, .3)) var(--vc, #c58bff); }
.fc-vignette.on { opacity: 1; animation: fcVig 1.1s ease-in-out infinite; }
.fc-vignette.danger { opacity: 1; box-shadow: inset 0 0 140px 10px rgba(255, 60, 80, .75); animation: fcVig .55s ease-in-out infinite; }
@keyframes fcVig { 0%, 100% { filter: brightness(.85); } 50% { filter: brightness(1.25); } }

.fc-dock { position: absolute; left: 50%; bottom: calc(86px + env(safe-area-inset-bottom)); transform: translateX(-50%);
  display: flex; flex-direction: column; align-items: center; gap: 10px; width: min(580px, calc(100vw - 24px)); }
.fc-touch .fc-dock { bottom: calc(150px + env(safe-area-inset-bottom)); }
@media (max-width: 700px) {
  /* Handy: rechts liegen Angeln-, Emote- und Chat-Knöpfe – die Leiste bleibt links davon */
  .fc-touch .fc-dock { left: calc(10px + env(safe-area-inset-left)); transform: none; width: calc(100vw - 96px - env(safe-area-inset-left) - env(safe-area-inset-right)); }
}

.fc-panel, .fc-power, .fc-wait, .fc-reel {
  background: linear-gradient(180deg, rgba(51, 40, 122, .92), rgba(33, 25, 86, .94));
  border: 2px solid rgba(255, 255, 255, .16); border-radius: 20px; box-shadow: 0 14px 40px rgba(8, 4, 30, .5);
  backdrop-filter: blur(8px); }

/* ═════════════ Kraftleiste ═════════════ */
.fc-power { width: min(340px, 100%); padding: 10px 14px 14px; animation: fcRise .18s ease-out; }
.fc-pow-label { font-family: var(--font-display); font-weight: 600; font-size: 15px; text-align: center; margin-bottom: 8px; color: var(--muted); letter-spacing: .3px; }
.fc-pow-bar { position: relative; height: 22px; border-radius: 12px; background: rgba(8, 4, 30, .55); overflow: visible;
  box-shadow: inset 0 2px 6px rgba(0, 0, 0, .45); }
.fc-pow-fill { position: absolute; inset: 0; border-radius: 12px; transform-origin: left center;
  background: linear-gradient(90deg, #3d8bff 0%, #33d1c4 35%, #ffe066 70%, #ff8a3d 100%); }
.fc-pow-sweet { position: absolute; top: -4px; bottom: -4px; border-radius: 8px; z-index: 1;
  border: 2px solid rgba(255, 230, 120, .95); box-shadow: 0 0 12px rgba(255, 210, 80, .6);
  background: linear-gradient(110deg, transparent 20%, rgba(255, 255, 255, .55) 45%, transparent 70%) no-repeat;
  background-size: 250% 100%; animation: fcShine 1.4s linear infinite; }
.fc-pow-mark { position: absolute; top: -8px; bottom: -8px; width: 6px; margin-left: -3px; border-radius: 4px; z-index: 2;
  background: #fff; box-shadow: 0 0 0 2px #1b1440, 0 0 10px rgba(255, 255, 255, .8); }
.fc-power.fc-pow-in .fc-pow-sweet { background-color: rgba(255, 220, 90, .3); box-shadow: 0 0 22px rgba(255, 210, 80, .95); }
.fc-power.fc-pow-in .fc-pow-label { color: #ffe066; }
@keyframes fcShine { from { background-position: 150% 0; } to { background-position: -150% 0; } }
@keyframes fcRise { from { transform: translateY(12px) scale(.96); opacity: 0; } }

/* ═════════════ Warten ═════════════ */
.fc-wait { display: flex; align-items: center; gap: 12px; padding: 10px 12px 10px 14px; width: min(400px, 100%); animation: fcRise .2s ease-out; pointer-events: auto; }
.fc-bob-wrap { position: relative; width: 46px; height: 46px; flex: none; display: grid; place-items: center;
  background: radial-gradient(circle at 50% 70%, rgba(80, 180, 255, .35), rgba(20, 60, 120, .2) 60%, transparent 70%); border-radius: 50%; }
.fc-bobber { width: 20px; height: 28px; position: relative; animation: fcBob 2.2s ease-in-out infinite; }
.fc-bobber::before { content: ''; position: absolute; left: 0; right: 0; top: 0; height: 52%; border-radius: 10px 10px 4px 4px;
  background: linear-gradient(180deg, #ff6b6b, #e8323a); box-shadow: inset -3px -2px 0 rgba(0, 0, 0, .15); }
.fc-bobber::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 50%; border-radius: 4px 4px 10px 10px;
  background: linear-gradient(180deg, #ffffff, #d9def0); box-shadow: inset -3px -2px 0 rgba(0, 0, 0, .1); }
.fc-bobber i { position: absolute; left: 50%; top: -9px; width: 2px; height: 10px; margin-left: -1px; background: #1b1440; border-radius: 2px; }
.fc-bobber.fc-dip { animation: fcDip .45s cubic-bezier(.3, 1.6, .5, 1); }
.fc-bobber.fc-under { animation: fcUnder .5s ease-in forwards; }
@keyframes fcBob { 0%, 100% { transform: translateY(-2px) rotate(-3deg); } 50% { transform: translateY(2px) rotate(3deg); } }
@keyframes fcDip { 0% { transform: translateY(0); } 35% { transform: translateY(7px) rotate(-8deg); } 100% { transform: translateY(0); } }
@keyframes fcUnder { to { transform: translateY(12px) scale(.85); opacity: .35; } }
.fc-wait-ring { position: absolute; inset: -2px; border-radius: 50%; border: 2px solid rgba(160, 220, 255, .0); pointer-events: none; }
.fc-wait-ring.go { animation: fcRing .7s ease-out; }
@keyframes fcRing { from { transform: scale(.5); border-color: rgba(160, 220, 255, .9); } to { transform: scale(1.35); border-color: rgba(160, 220, 255, 0); } }
.fc-wait.fc-bite .fc-wait-ring { border-color: #ffd23a; border-width: 3px; animation: none; }
.fc-wait-txt { flex: 1; min-width: 0; }
.fc-wait-title { font-family: var(--font-display); font-weight: 600; font-size: 17px; }
.fc-wait-sub { font-size: 13px; color: var(--muted); font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fc-wait.fc-bite { border-color: #ffd23a; box-shadow: 0 0 0 3px rgba(255, 210, 58, .35), 0 14px 40px rgba(8, 4, 30, .5); }
.fc-wait.fc-bite .fc-wait-title { color: #ffe066; }
.fc-wait-x { flex: none; width: 34px; height: 34px; border-radius: 50%; border: none; cursor: pointer; font-size: 15px; font-weight: 800;
  background: rgba(255, 255, 255, .1); color: #fff; transition: background .15s; }
.fc-wait-x:hover { background: rgba(255, 77, 94, .55); }

/* ═════════════ Biss „!“ ═════════════ */
.fc-bang { position: absolute; left: 50%; top: 24%; transform: translateX(-50%); text-align: center; pointer-events: none; }
.fc-bang span { display: grid; place-items: center; margin: 0 auto; width: 124px; height: 124px; border-radius: 50%;
  font-family: var(--font-display); font-weight: 700; font-size: 92px; line-height: 1; color: #1b1440; padding-bottom: 4px;
  background: radial-gradient(circle at 38% 30%, #fff6b0, #ffd23a 45%, #ff9f1c 100%);
  border: 6px solid #1b1440; box-shadow: 0 8px 0 #7a2a9a, 0 0 0 10px rgba(255, 220, 80, .28), 0 0 60px rgba(255, 210, 60, .85); }
.fc-bang em { display: inline-block; margin-top: 16px; font-style: normal; font-family: var(--font-display); font-weight: 700; font-size: 22px;
  background: #ffd23a; color: #1b1440; padding: 6px 16px; border-radius: 14px; box-shadow: 0 5px 0 rgba(0, 0, 0, .25); }
.fc-bang.pop span { animation: fcBang .5s cubic-bezier(.2, 1.8, .4, 1), fcWobble .5s .5s ease-in-out infinite; }
.fc-bang.pop em { animation: fcRise .25s .1s ease-out both; }
@keyframes fcBang { from { transform: scale(.2) rotate(-20deg); opacity: 0; } }
@keyframes fcWobble { 0%, 100% { transform: rotate(-6deg); } 50% { transform: rotate(6deg) scale(1.06); } }

/* ═════════════ Drill ═════════════ */
.fc-reel { width: 100%; padding: 10px 12px 10px; --rc: #b8c4d6; --rc-a: rgba(184, 196, 214, .35); --pulse: .5;
  border-color: var(--rc); box-shadow: 0 0 0 3px var(--rc-a), 0 0 calc(10px + 26px * var(--pulse)) var(--rc-a), 0 14px 40px rgba(8, 4, 30, .5);
  animation: fcRise .2s ease-out; }
.fc-reel.r-secret { animation: fcRise .2s ease-out, fcHue 2.2s linear infinite; }
@keyframes fcHue { to { filter: hue-rotate(360deg); } }
.fc-reel-head { display: flex; align-items: center; gap: 10px; margin: 0 4px 6px; min-height: 24px; }
.fc-reel-title { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  font-family: var(--font-display); font-weight: 700; font-size: 18px; color: var(--rc); text-shadow: 0 2px 0 rgba(0, 0, 0, .35); }
.fc-reel-warn { flex: none; margin-left: auto; font-weight: 800; font-size: 13px; color: #ffd23a; opacity: 0; transition: opacity .15s, color .15s; white-space: nowrap; }
.fc-reel-warn:empty { display: none; }
.fc-reel-warn.on { opacity: 1; animation: fcBlink .5s steps(2) infinite; }
/* Spannung: gelb ruhig (Vorwarnung), rot hektisch blinkend, müde Schnur in Lila */
/* Spannungs-Warnungen als Plakette (besser lesbar als farbiger Text auf Lila) */
.fc-reel-warn.t1, .fc-reel-warn.t2, .fc-reel-warn.tired { padding: 2px 10px; border-radius: 999px; line-height: 1.35; }
.fc-reel-warn.t1 { color: #2a1a00; background: #ffc93a; box-shadow: 0 0 0 1px rgba(255, 255, 255, .35) inset; animation: none; }
.fc-reel-warn.t2 { color: #fff; font-size: 14px; background: #e8243c; box-shadow: 0 0 0 2px rgba(255, 255, 255, .85), 0 0 16px rgba(255, 77, 94, .85);
  text-shadow: 0 1px 0 rgba(90, 0, 20, .5); animation: fcWarnPulse .32s ease-in-out infinite alternate; }
.fc-reel-warn.tired { color: #f1eaff; background: rgba(140, 100, 230, .55); box-shadow: 0 0 0 1px rgba(205, 184, 255, .7) inset; animation: none; }
@keyframes fcWarnPulse { from { transform: scale(1); } to { transform: scale(1.07); } }
@keyframes fcBlink { 50% { opacity: .45; } }
/* Rute + Schnur-Stärke dieses Drills (weicht, sobald eine Warnung erscheint) */
.fc-reel-rod { flex: none; margin-left: auto; display: inline-flex; align-items: center; gap: 5px; padding: 2px 9px 2px 7px; border-radius: 999px;
  font-size: 12px; font-weight: 800; color: rgba(255, 255, 255, .78); white-space: nowrap;
  background: rgba(8, 4, 30, .35); border: 1px solid color-mix(in srgb, var(--gc, #b0773f) 60%, transparent); }
.fc-reel-rod i { font-style: normal; font-size: 11px; }
.fc-reel-warn.on ~ .fc-reel-rod { display: none; }
.fc-reel.fc-strain { border-color: color-mix(in srgb, var(--rc) 45%, #ffc93a); }
.fc-reel.fc-red { border-color: #ff4d5e; box-shadow: 0 0 0 3px rgba(255, 77, 94, .45), 0 0 26px rgba(255, 77, 94, .55), 0 14px 40px rgba(8, 4, 30, .5); }
.fc-reel.fc-snapped { border-color: #ff4d5e; animation: fcSnapJolt .5s cubic-bezier(.3, 1.6, .5, 1); }
.fc-reel.fc-snapped .fc-prog > i { filter: grayscale(.85) brightness(.7); }
@keyframes fcSnapJolt { 0% { transform: none; } 14% { transform: translateY(-8px) rotate(-.7deg); } 40% { transform: translateY(3px) rotate(.4deg); } 100% { transform: none; } }
.fc-prog { position: relative; height: 14px; border-radius: 8px; background: rgba(8, 4, 30, .6); box-shadow: inset 0 2px 5px rgba(0, 0, 0, .5); margin: 0 6px; }
.fc-prog > i { position: absolute; inset: 0; border-radius: 8px; transform-origin: left center; transform: scaleX(.3);
  background: linear-gradient(90deg, #ff9f3d, #ffd23a); transition: filter .2s; }
.fc-prog.fc-drain > i { filter: saturate(.7) brightness(.85); }
.fc-prog-fish { position: absolute; top: 50%; width: 26px; height: 26px; margin: -13px 0 0 -13px; border-radius: 50%;
  background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 12c3-5 9-6 13-3l4-3v12l-4-3c-4 3-10 2-13-3z' fill='%231b1440'/%3E%3Ccircle cx='8' cy='11' r='1.3' fill='%23fff'/%3E%3C/svg%3E") center/70% no-repeat;
  box-shadow: 0 0 0 2px var(--rc), 0 3px 8px rgba(0, 0, 0, .4); transition: left .05s linear; }
.fc-reel-canvas { display: block; width: 100%; height: 108px; margin-top: 2px; }
.fc-reel-hint { text-align: center; font-size: 12.5px; color: var(--muted); font-weight: 700; margin-top: 4px; }
.fc-reel-hint b { color: #fff; font-weight: 800; }
.fc-reel.fc-landing { animation: fcLand .6s ease-in-out infinite alternate; }
.fc-reel.fc-lost { opacity: .7; filter: grayscale(.5); }
@keyframes fcLand { to { transform: translateY(-4px); box-shadow: 0 0 0 4px var(--rc), 0 0 40px var(--rc-a); } }

/* ═════════════ Schwebetexte & Entkommen ═════════════ */
.fc-floats { position: absolute; left: 50%; top: 22%; transform: translateX(-50%); width: min(560px, 92vw); display: flex; flex-direction: column; align-items: center; gap: 8px; }
.fc-float { font-family: var(--font-display); font-weight: 700; font-size: 26px; text-shadow: 0 3px 0 #1b1440, 0 0 18px rgba(0, 0, 0, .5);
  animation: fcFloat 1.5s ease-out forwards; white-space: nowrap; }
.fc-float-gold { color: #ffe066; }
.fc-float-hint { font-size: 17px; background: rgba(27, 20, 64, .92); border: 2px solid rgba(255, 255, 255, .16); padding: 10px 16px; border-radius: 14px;
  text-shadow: none; white-space: normal; text-align: center; animation: fcFloat 2.2s ease-out forwards; }
@keyframes fcFloat { 0% { transform: translateY(10px) scale(.8); opacity: 0; } 12% { transform: none; opacity: 1; } 80% { opacity: 1; } 100% { transform: translateY(-18px); opacity: 0; } }
.fc-escape { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 12px 22px 14px; border-radius: 18px;
  background: rgba(27, 20, 64, .9); border: 2px solid rgba(255, 255, 255, .14); box-shadow: 0 12px 30px rgba(8, 4, 30, .5);
  animation: fcRise .25s ease-out; transition: opacity .35s, transform .35s; text-align: center; }
.fc-escape.out { opacity: 0; transform: translateY(-10px); }
.fc-escape b { font-family: var(--font-display); font-size: 24px; font-weight: 700; }
.fc-escape span { color: var(--muted); font-weight: 700; font-size: 14px; }
.fc-esc-fish { width: 90px; height: 45px; animation: fcSwimAway 1.6s ease-in forwards; }
.fc-esc-art { position: relative; width: 90px; height: 45px; }
.fc-esc-art .fc-esc-fish { display: block; }
.fc-esc-line { position: absolute; inset: 0; width: 100%; height: 100%; animation: fcRise .3s ease-out; }
.fc-escape.fc-esc-snap { border-color: rgba(255, 107, 120, .6); box-shadow: 0 0 0 3px rgba(255, 77, 94, .18), 0 12px 30px rgba(8, 4, 30, .5); }
.fc-escape.fc-esc-snap b { color: #ff9aa4; }
.fc-escape small { margin-top: 5px; font-size: 12.5px; font-weight: 800; color: #ffd27a; }
@keyframes fcSwimAway { 0% { transform: translateX(0); } 20% { transform: translateX(-6px) rotate(-6deg); } 100% { transform: translateX(160px) rotate(4deg); opacity: 0; } }

/* ═════════════ Kescher ═════════════ */
.fc-net { position: absolute; right: calc(10px + env(safe-area-inset-right)); top: 50%; transform: translateY(-50%); display: flex; flex-direction: column; gap: 6px; align-items: center; pointer-events: auto; }
.fc-net-head { width: 46px; height: 46px; border-radius: 50%; border: 2px solid rgba(255, 255, 255, .2); cursor: pointer; position: relative;
  background: linear-gradient(180deg, #4a3aa0, #2b1d6b); color: #fff; font-size: 22px; box-shadow: 0 4px 0 rgba(0, 0, 0, .25); }
.fc-net-head b { position: absolute; right: -4px; top: -4px; min-width: 20px; height: 20px; padding: 0 5px; border-radius: 10px; background: var(--primary); color: #1b1440; font: 700 12px/20px var(--font-display); }
.fc-net-item { position: relative; width: 66px; padding: 3px 2px 2px; border-radius: 12px; text-align: center;
  background: rgba(27, 20, 64, .82); border: 2px solid var(--rc, #b8c4d6); box-shadow: 0 3px 10px rgba(0, 0, 0, .35); }
.fc-net-item canvas { width: 58px; height: 38px; display: block; margin: 0 auto; }
.fc-net-item small { display: block; font: 700 11.5px/1.1 var(--font-display); color: #fff; white-space: nowrap; }
.fc-net-item em { position: absolute; left: -6px; top: -7px; font: 700 9.5px/1 var(--font-display); font-style: normal; background: #ff4d8d; color: #fff; padding: 3px 5px; border-radius: 6px; transform: rotate(-10deg); }
.fc-net-item.fresh { animation: fcNetIn .5s cubic-bezier(.2, 1.6, .4, 1); }
@keyframes fcNetIn { from { transform: translateX(40px) scale(.5); opacity: 0; } }
/* Touch: Kescher sitzt rechts zwischen Kompass (oben) und 🎒/😀/💬 (unten) und darf keinen Knopf verdecken.
   Feste Höhe + Spalten-Umbruch: Fänge, die nicht mehr ganz hineinpassen, rutschen in eine zweite Spalte, die abgeschnitten wird
   → es verschwinden immer ganze Karten statt halber. Innenabstand lässt Platz für „NEU“-Schild und Zähler. */
.fc-touch .fc-net {
  top: calc(var(--fw-top-h, 100px) + 104px); bottom: calc(324px + var(--safe-b, 0px)); right: calc(4px + var(--safe-r, 0px)); transform: none;
  width: 80px; padding: 8px 4px 4px 10px; flex-wrap: wrap; align-content: flex-start; justify-content: flex-start; overflow: hidden; pointer-events: none;
  row-gap: 6px; column-gap: 60px; /* zweite Spalte landet sicher außerhalb */
}
/* Handy quer: rechts stehen 🎒/😀/💬 fast über die ganze Höhe → Kescher links daneben, über dem Angeln-Knopf */
@media (orientation: landscape) and (max-height: 560px) {
  .fc-touch .fc-net { top: calc(var(--fw-top-h, 60px) + 56px); bottom: calc(128px + var(--safe-b, 0px)); right: calc(88px + var(--safe-r, 0px)); }
}
.fc-touch .fc-net > * { pointer-events: auto; }
.fc-touch .fc-net-head { width: 44px; height: 44px; font-size: 21px; }
.fc-touch .fc-net-item { width: 62px; }
.fc-touch .fc-net-item canvas { width: 52px; height: 32px; }
.fc-touch .fc-net-item:nth-of-type(n+5) { display: none; }

/* ═════════════ Fang-Karte ═════════════ */
.fc-overlay { position: absolute; inset: 0; pointer-events: auto; display: flex; align-items: center; justify-content: center; padding: 16px;
  background: radial-gradient(circle at 50% 45%, rgba(27, 20, 64, .35), rgba(10, 6, 35, .78)); animation: fcFade .2s ease-out; overflow: hidden; }
.fc-overlay.out { animation: fcFadeOut .2s ease-in forwards; }
@keyframes fcFade { from { opacity: 0; } }
@keyframes fcFadeOut { to { opacity: 0; } }
.fc-rays { position: absolute; left: 50%; top: 45%; width: 1400px; height: 1400px; margin: -700px 0 0 -700px; opacity: .16; pointer-events: none;
  background: repeating-conic-gradient(from 0deg, var(--rc, #fff) 0deg 7deg, transparent 7deg 22deg);
  -webkit-mask: radial-gradient(circle, #000 0, transparent 60%); mask: radial-gradient(circle, #000 0, transparent 60%);
  animation: fcSpin 26s linear infinite; }
.fc-overlay.r-common .fc-rays, .fc-overlay.r-junk .fc-rays { opacity: .06; }
.fc-overlay.r-legendary .fc-rays, .fc-overlay.r-mythic .fc-rays, .fc-overlay.r-secret .fc-rays { opacity: .38; }
@keyframes fcSpin { to { transform: rotate(360deg); } }

.fc-cardbox { position: relative; width: min(420px, 100%); max-height: calc(100% - 8px); display: flex; --rc: #b8c4d6;
  animation: fcCardIn .5s cubic-bezier(.2, 1.4, .4, 1); }
.fc-cardbox.out { animation: fcCardOut .2s ease-in forwards; }
.fc-card { position: relative; width: 100%; max-height: calc(100vh - 56px); overflow: auto; overscroll-behavior: contain;
  padding: 34px 20px 18px; border-radius: 24px; text-align: center;
  background: linear-gradient(180deg, #3a2d8a 0%, #261c5e 100%); border: 3px solid var(--rc);
  box-shadow: 0 0 0 5px rgba(27, 20, 64, .6), 0 0 50px color-mix(in srgb, var(--rc) 45%, transparent), 0 24px 60px rgba(0, 0, 0, .55);
  scrollbar-width: thin; }
.fc-cardbox.fc-card-late { animation: fcCardIn .6s cubic-bezier(.2, 1.4, .4, 1); }
@keyframes fcCardIn { from { transform: translateY(40px) scale(.85); opacity: 0; } }
@keyframes fcCardOut { to { transform: translateY(20px) scale(.95); opacity: 0; } }
.fc-ribbon { position: absolute; left: 50%; top: 0; transform: translate(-50%, -45%); z-index: 2; padding: 6px 22px; border-radius: 12px; overflow: hidden;
  background: var(--rc); color: #1b1440; font: 700 15px/1.2 var(--font-display); letter-spacing: 2px; text-transform: uppercase; white-space: nowrap;
  box-shadow: 0 4px 0 rgba(0, 0, 0, .3), 0 0 18px color-mix(in srgb, var(--rc) 70%, transparent); }
.fc-ribbon::after { content: ''; position: absolute; inset: 0; background: linear-gradient(110deg, transparent 30%, rgba(255, 255, 255, .7) 48%, transparent 66%);
  background-size: 250% 100%; animation: fcShine 2.2s ease-in-out infinite; }
.fc-cardbox.r-secret .fc-ribbon { background: linear-gradient(90deg, #8ef3ff, #b28cff, #ff9be0, #ffe066, #8ef3ff); background-size: 300% 100%; animation: fcRainbow 3s linear infinite; }
@keyframes fcRainbow { to { background-position: 300% 0; } }
.fc-card-stage { position: relative; display: flex; justify-content: center; margin: 2px auto 4px; }
.fc-card-glow { position: absolute; left: 50%; top: 50%; width: 80%; height: 70%; transform: translate(-50%, -50%); border-radius: 50%;
  background: radial-gradient(closest-side, color-mix(in srgb, var(--rc) 40%, transparent), transparent); pointer-events: none; }
.fc-card-fish { position: relative; max-width: 100%; }
.fc-stamps { position: absolute; inset: 0; pointer-events: none; }
.fc-stamp { position: absolute; font: 700 22px/1 var(--font-display); padding: 6px 12px; border-radius: 10px; border: 3px solid currentColor; letter-spacing: 1px;
  background: rgba(27, 20, 64, .55); animation: fcStamp .35s cubic-bezier(.3, 1.7, .5, 1) both; text-transform: uppercase; }
.fc-stamp-new { right: 2%; top: 4%; color: #ff4d8d; transform: rotate(12deg); }
.fc-stamp-rec { left: 2%; bottom: 6%; color: #ffd23a; transform: rotate(-9deg); }
@keyframes fcStamp { from { transform: scale(2.6) rotate(0); opacity: 0; } }
.fc-card-name { font: 700 30px/1.1 var(--font-display); margin-top: 2px; text-shadow: 0 3px 0 rgba(0, 0, 0, .3); }
.fc-card-weight { font: 600 22px/1.2 var(--font-display); color: var(--rc); margin-top: 2px; font-variant-numeric: tabular-nums; }
.fc-card-weight.fc-giant { animation: fcPulseTxt .9s ease-in-out 2; }
@keyframes fcPulseTxt { 50% { transform: scale(1.18); } }
.fc-card-badges { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; margin: 10px 0 2px; }
.fc-chip { display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px; border-radius: 999px; font-size: 13px; font-weight: 800;
  background: rgba(255, 255, 255, .1); border: 1px solid rgba(255, 255, 255, .14); animation: fcRise .3s ease-out both; }
.fc-chip i { font-style: normal; }
.fc-card-desc { margin: 10px 4px 4px; color: var(--muted); font-size: 14.5px; line-height: 1.45; font-style: italic; }
.fc-note { margin: 8px auto 2px; max-width: 320px; padding: 12px 14px; border-radius: 6px; background: #f3e7c6; color: #4a3a22; font: 600 15px/1.4 var(--font);
  transform: rotate(-1.5deg); box-shadow: 0 6px 14px rgba(0, 0, 0, .35); font-style: italic; }
.fc-xp { display: flex; align-items: center; gap: 10px; margin: 14px 4px 4px; }
.fc-xp-lv { flex: none; font: 700 14px/1 var(--font-display); background: rgba(255, 255, 255, .12); padding: 6px 9px; border-radius: 10px; transition: transform .3s; }
.fc-xp-lv.up { background: var(--primary); color: #1b1440; animation: fcLvl .6s cubic-bezier(.2, 1.8, .4, 1); }
@keyframes fcLvl { 40% { transform: scale(1.35) rotate(-6deg); } }
.fc-xp-bar { flex: 1; height: 12px; border-radius: 8px; background: rgba(8, 4, 30, .6); overflow: hidden; box-shadow: inset 0 2px 4px rgba(0, 0, 0, .45); }
.fc-xp-bar i { display: block; height: 100%; border-radius: 8px; transform-origin: left center; background: linear-gradient(90deg, #7db3ff, #b28cff); }
.fc-xp-gain { flex: none; font: 700 15px/1 var(--font-display); color: #b28cff; animation: fcRise .4s .35s ease-out both; }
.fc-levelup { margin: 10px 0 2px; padding: 10px 12px; border-radius: 14px; background: linear-gradient(135deg, rgba(255, 201, 51, .22), rgba(255, 138, 61, .18));
  border: 2px solid rgba(255, 201, 51, .55); display: flex; flex-direction: column; gap: 3px; animation: fcCardIn .45s cubic-bezier(.2, 1.6, .4, 1); }
.fc-levelup b { font: 700 18px/1.2 var(--font-display); color: #ffe066; }
.fc-levelup span { font-size: 13px; font-weight: 700; color: #fff; opacity: .9; }
.fc-levelup .fc-rod { color: #ffe066; opacity: 1; }
.fc-guest { margin-top: 10px; font-size: 13px; font-weight: 700; color: var(--muted); background: rgba(255, 255, 255, .06); padding: 8px 10px; border-radius: 12px; }
.fc-card-next { margin-top: 14px; min-width: 160px; position: sticky; bottom: 0; z-index: 2; }
/* Handy: nur „Weiter“ schließt – kurz nach dem Erscheinen gesperrt (Rest-Tipps vom Drill), Tipps daneben lassen ihn hüpfen */
.fc-overlay .btn.fc-locked { opacity: .5; filter: saturate(.5); pointer-events: none; }
.fc-overlay .btn { transition: transform .12s ease, box-shadow .12s ease, filter .25s, opacity .25s; }
.fc-overlay .btn.fc-nudge { animation: fcNudge .45s cubic-bezier(.3, 1.6, .5, 1); }
@keyframes fcNudge { 0%, 100% { transform: none; } 30% { transform: scale(1.1) translateY(-3px); } 60% { transform: scale(.96); } }
@media (max-height: 720px) {
  .fc-card { padding: 28px 16px 12px; }
  .fc-card-name { font-size: 24px; }
  .fc-card-weight { font-size: 19px; }
  .fc-card-desc { font-size: 13px; margin: 6px 2px 2px; }
  .fc-card-badges { margin-top: 6px; }
  .fc-xp { margin-top: 8px; }
  .fc-levelup { padding: 7px 10px; margin-top: 6px; }
  .fc-guest { margin-top: 6px; padding: 6px 8px; }
  .fc-card-next { margin-top: 10px; }
}

/* ═════════════ Feier ab legendär ═════════════ */
.fc-ov-cel { background: radial-gradient(circle at 50% 42%, rgba(40, 20, 90, .55), rgba(5, 2, 20, .92)); }
.fc-celebrate { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; pointer-events: none; }
.fc-fx { position: absolute; inset: 0; width: 100%; height: 100%; }
.fc-cel-rays { position: absolute; left: 50%; top: 42%; width: 1600px; height: 1600px; margin: -800px 0 0 -800px; opacity: .5;
  background: repeating-conic-gradient(from 0deg, var(--rc) 0deg 5deg, transparent 5deg 18deg);
  -webkit-mask: radial-gradient(circle, #000 0, transparent 55%); mask: radial-gradient(circle, #000 0, transparent 55%);
  animation: fcSpin 12s linear infinite, fcFade .6s ease-out; }
.fc-cel-word { position: relative; font: 700 clamp(44px, 11vw, 96px)/1 var(--font-display); color: var(--rc); letter-spacing: 3px; text-align: center; padding: 0 12px;
  -webkit-text-stroke: 3px rgba(27, 20, 64, .9); paint-order: stroke fill;
  text-shadow: 0 6px 0 rgba(27, 20, 64, .9), 0 0 40px var(--rc); animation: fcCelWord .9s cubic-bezier(.2, 1.6, .4, 1) both; }
.fc-cel-sub { position: relative; font: 600 20px/1.2 var(--font-display); color: #fff; opacity: .9; animation: fcRise .5s .45s ease-out both; text-align: center; padding: 0 16px; }
.fc-celebrate.r-secret .fc-cel-word { background: linear-gradient(90deg, #8ef3ff, #b28cff, #ff9be0, #ffe066, #8ef3ff); background-size: 300% 100%;
  -webkit-background-clip: text; background-clip: text; color: transparent; -webkit-text-stroke: 0; text-shadow: none;
  filter: drop-shadow(0 5px 0 #1b1440) drop-shadow(0 0 24px rgba(160, 230, 255, .8)); animation: fcCelWord .9s cubic-bezier(.2, 1.6, .4, 1) both, fcRainbow 3s linear infinite; }
@keyframes fcCelWord { 0% { transform: scale(3); opacity: 0; filter: blur(8px); } 60% { transform: scale(.92); opacity: 1; filter: none; } 100% { transform: scale(1); } }

@media (max-width: 560px) {
  .fc-bang span { width: 100px; height: 100px; font-size: 74px; }
  .fc-bang em { font-size: 18px; }
  .fc-card { padding: 30px 14px 14px; }
  .fc-card-name { font-size: 25px; }
  .fc-reel-canvas { height: 100px; }
  .fc-reel-title { font-size: 16px; }
  .fc-reel-head { gap: 8px; }
  .fc-reel-warn { font-size: 12px; }
  .fc-reel-warn.t2 { font-size: 13px; }
  .fc-reel-rod { font-size: 11px; padding: 1px 7px 1px 6px; }
  .fc-wait-title { font-size: 15.5px; }
  /* Hinweis „erst beim „!“ anschlagen“ nicht abschneiden: zwei Zeilen erlaubt */
  .fc-wait-sub { white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; line-height: 1.3; font-size: 12.5px; }
}
@media (prefers-reduced-motion: reduce) {
  .fc-rays, .fc-cel-rays, .fc-vignette.on, .fc-vignette.danger { animation: none !important; }
  .fc-reel.fc-snapped, .fc-reel-warn.t2 { animation: none !important; }
}

/* ═════════════ Fischlexikon (dex.js) ═════════════ */
.fdx { --gap: 10px; color: #fff; font-family: var(--font); display: flex; flex-direction: column; gap: 14px; min-width: 0; }
.fdx-head { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; }
.fdx-title { flex: 1; min-width: 200px; }
.fdx-title h3 { margin: 0; font: 700 24px/1.1 var(--font-display); text-align: left; }
.fdx-title p { margin: 3px 0 0; text-align: left; color: var(--muted); font-size: 13.5px; font-weight: 700; }
.fdx-ring { position: relative; width: 74px; height: 74px; flex: none; border-radius: 50%;
  background: rgba(255, 255, 255, .1); display: grid; place-items: center; }
.fdx-ring::before { content: ''; position: absolute; inset: 7px; border-radius: 50%; background: #2a2160; }
.fdx-ring span { position: relative; text-align: center; font: 700 17px/1 var(--font-display); }
.fdx-ring small { display: block; font: 700 10.5px/1.2 var(--font); color: var(--muted); }
.fdx-lvl { flex: none; display: flex; flex-direction: column; gap: 4px; min-width: 140px; }
.fdx-lvl b { font: 700 16px/1 var(--font-display); }
.fdx-lvl b em { font-style: normal; font-size: 12px; color: var(--muted); margin-left: 6px; font-family: var(--font); font-weight: 800; }
.fdx-lvl .fdx-bar { height: 8px; border-radius: 6px; background: rgba(8, 4, 30, .55); overflow: hidden; }
.fdx-lvl .fdx-bar i { display: block; height: 100%; background: linear-gradient(90deg, #7db3ff, #b28cff); border-radius: 6px; }
.fdx-lvl small { color: var(--muted); font-weight: 700; font-size: 11.5px; }

.fdx-trophies { display: grid; grid-template-columns: 1fr 1fr; gap: var(--gap); }
.fdx-trophy { position: relative; display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 16px; min-width: 0;
  background: linear-gradient(135deg, color-mix(in srgb, var(--rc, #888) 22%, rgba(255, 255, 255, .04)), rgba(255, 255, 255, .04));
  border: 2px solid color-mix(in srgb, var(--rc, #888) 60%, transparent); }
.fdx-trophy canvas { width: 76px; height: 50px; flex: none; }
.fdx-trophy div { min-width: 0; }
.fdx-trophy small { display: block; color: var(--muted); font-weight: 800; font-size: 11px; text-transform: uppercase; letter-spacing: .8px; }
.fdx-trophy b { display: block; font: 600 16px/1.2 var(--font-display); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fdx-trophy span { font-weight: 800; font-size: 13px; color: var(--rc); }
.fdx-trophy.empty { --rc: #6c63a8; opacity: .7; }

.fdx-rar { display: flex; flex-wrap: wrap; gap: 6px; }
.fdx-rar-chip { display: inline-flex; align-items: center; gap: 6px; padding: 4px 9px 4px 6px; border-radius: 999px; font-size: 12px; font-weight: 800;
  background: rgba(255, 255, 255, .07); border: 1px solid rgba(255, 255, 255, .1); cursor: pointer; color: #fff; font-family: var(--font); transition: background .15s, border-color .15s; }
.fdx-rar-chip i { width: 10px; height: 10px; border-radius: 50%; background: var(--rc); box-shadow: 0 0 6px var(--rc); }
.fdx-rar-chip em { font-style: normal; color: var(--muted); }
.fdx-rar-chip.sel { background: color-mix(in srgb, var(--rc) 25%, transparent); border-color: var(--rc); }

.fdx-filters { display: flex; flex-wrap: wrap; gap: 4px; padding: 4px; border-radius: 14px; background: rgba(0, 0, 0, .22); } /* (QA P3) 10 Orte: umbrechen statt abschneiden */
.fdx-filters::-webkit-scrollbar { display: none; }
.fdx-tab { flex: 1 0 auto; border: none; border-radius: 10px; padding: 7px 10px; background: transparent; color: var(--muted); cursor: pointer;
  font: 600 14px/1 var(--font-display); white-space: nowrap; transition: background .15s, color .15s; }
.fdx-tab:hover { color: #fff; background: rgba(255, 255, 255, .06); }
.fdx-tab.sel { background: var(--primary); color: #1b1440; box-shadow: 0 3px 0 rgba(0, 0, 0, .2); }

.fdx-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(118px, 1fr)); gap: var(--gap); }
.fdx-card { position: relative; border-radius: 16px; padding: 8px 8px 9px; text-align: center; cursor: pointer; min-width: 0;
  background: linear-gradient(180deg, rgba(255, 255, 255, .09), rgba(255, 255, 255, .04)); border: 2px solid color-mix(in srgb, var(--rc, #888) 70%, transparent);
  transition: transform .12s, box-shadow .12s; font-family: var(--font); color: #fff; }
.fdx-card:hover { transform: translateY(-2px); box-shadow: 0 6px 18px rgba(0, 0, 0, .35), 0 0 14px color-mix(in srgb, var(--rc) 40%, transparent); }
.fdx-card canvas { width: 100%; height: 62px; display: block; }
.fdx-no { position: absolute; left: 7px; top: 5px; font: 700 10.5px/1 var(--font-display); color: rgba(255, 255, 255, .45); }
.fdx-cnt { position: absolute; right: 6px; top: 5px; font: 700 10.5px/1 var(--font-display); color: #fff; background: rgba(0, 0, 0, .3); padding: 2px 5px; border-radius: 6px; }
.fdx-name { display: block; font: 600 14px/1.15 var(--font-display); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: 2px; }
.fdx-sub { display: block; font-size: 11.5px; font-weight: 800; color: var(--rc); margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fdx-card.unknown { cursor: default; border-style: dashed; border-color: color-mix(in srgb, var(--rc, #888) 45%, transparent); background: rgba(10, 6, 35, .35); }
.fdx-card.unknown:hover { transform: none; box-shadow: none; }
.fdx-card.unknown .fdx-name { color: rgba(255, 255, 255, .55); letter-spacing: 2px; }
.fdx-card.unknown .fdx-hint { display: block; font-size: 10.5px; line-height: 1.25; color: var(--muted); font-weight: 700; margin-top: 3px; min-height: 2.5em; }
.fdx-card.theirs { cursor: default; }
.fdx-card.theirs .fdx-found { position: absolute; left: 50%; top: 34px; transform: translateX(-50%); font: 700 10px/1 var(--font-display); padding: 3px 7px; border-radius: 6px;
  background: color-mix(in srgb, var(--rc) 80%, #000); color: #fff; white-space: nowrap; }
.fdx-card.viewer { opacity: .75; }
.fdx-card.secret { --rc: #8ef3ff; border-style: solid; background: radial-gradient(circle at 50% 35%, rgba(142, 243, 255, .16), rgba(10, 6, 35, .55) 70%); overflow: hidden; }
.fdx-card.secret .fdx-name { color: #c9f8ff; }
.fdx-sparkle { position: absolute; width: 6px; height: 6px; border-radius: 50%; background: #fff; box-shadow: 0 0 8px #8ef3ff; animation: fdxTw 2.4s ease-in-out infinite; pointer-events: none; }
@keyframes fdxTw { 0%, 100% { opacity: 0; transform: scale(.3); } 50% { opacity: 1; transform: scale(1); } }
.fdx-card.secret.found { background: radial-gradient(circle at 50% 35%, rgba(178, 140, 255, .35), rgba(10, 6, 35, .55) 70%); }

.fdx-empty { text-align: center; color: var(--muted); font-weight: 700; padding: 24px 10px; }
.fdx-recent { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 4px; scrollbar-width: thin; }
.fdx-rc { flex: none; width: 92px; text-align: center; border-radius: 12px; padding: 4px; background: rgba(255, 255, 255, .06); border: 1px solid color-mix(in srgb, var(--rc) 60%, transparent); }
.fdx-rc canvas { width: 80px; height: 44px; display: block; margin: 0 auto; }
.fdx-rc b { display: block; font: 600 12px/1.2 var(--font-display); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fdx-rc small { color: var(--muted); font-weight: 800; font-size: 10.5px; }
.fdx-sec-title { font: 700 13px/1 var(--font); color: var(--muted); text-transform: uppercase; letter-spacing: 1px; margin: 2px 0 -4px; }
.fdx-guest { font-size: 13px; font-weight: 700; color: var(--muted); background: rgba(255, 255, 255, .06); padding: 9px 12px; border-radius: 12px; }

/* Detailansicht (innerhalb des Containers – funktioniert auch im Profil-Modal) */
.fdx-wrap { position: relative; }
.fdx-detail { position: absolute; inset: 0; z-index: 5; display: flex; align-items: flex-start; justify-content: center; padding: 6px;
  background: rgba(20, 14, 52, .72); backdrop-filter: blur(3px); border-radius: 18px; animation: fcFade .15s ease-out; }
.fdx-dcard { position: sticky; top: 6px; width: min(440px, 100%); border-radius: 22px; padding: 16px 16px 14px; text-align: center; --rc: #888;
  background: linear-gradient(180deg, #3a2d8a, #261c5e); border: 3px solid var(--rc); box-shadow: 0 0 40px color-mix(in srgb, var(--rc) 35%, transparent), 0 18px 50px rgba(0, 0, 0, .5);
  animation: fcCardIn .35s cubic-bezier(.2, 1.4, .4, 1); }
.fdx-dcard canvas { width: 100%; max-width: 340px; height: auto; display: block; margin: 0 auto; }
.fdx-dcard h4 { margin: 6px 0 2px; font: 700 26px/1.1 var(--font-display); }
.fdx-dcard .fdx-dr { display: inline-block; padding: 3px 12px; border-radius: 10px; background: var(--rc); color: #1b1440; font: 700 13px/1.3 var(--font-display); letter-spacing: 1.5px; text-transform: uppercase; }
.fdx-dcard p { color: var(--muted); font-style: italic; line-height: 1.45; margin: 10px 2px; font-size: 14.5px; text-align: center; }
.fdx-stats { display: grid; grid-template-columns: repeat(2, 1fr); gap: 6px; margin: 10px 0 4px; }
.fdx-stats div { background: rgba(255, 255, 255, .07); border-radius: 12px; padding: 7px 8px; text-align: left; min-width: 0; }
.fdx-stats small { display: block; font-size: 10.5px; font-weight: 800; color: var(--muted); text-transform: uppercase; letter-spacing: .6px; }
.fdx-stats b { display: block; font: 600 15px/1.25 var(--font-display); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fdx-close { position: absolute; right: 10px; top: 10px; width: 34px; height: 34px; border-radius: 50%; border: none; cursor: pointer; background: rgba(255, 255, 255, .12); color: #fff; font-size: 16px; font-weight: 800; }
.fdx-close:hover { background: rgba(255, 255, 255, .22); }
.fdx-modal { max-width: 860px !important; }

@media (max-width: 560px) {
  .fdx-grid { grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); --gap: 8px; }
  .fdx-card canvas { height: 52px; }
  .fdx-name { font-size: 13px; }
  .fdx-trophies { grid-template-columns: 1fr; }
  .fdx-ring { width: 64px; height: 64px; }
  .fdx-title h3 { font-size: 21px; }
  .fdx-lvl { min-width: 0; flex: 1 1 100%; }
}

/* ═════════════ Lexikon-Fenster: ✕ fest in der Ecke, Inhalt scrollt darunter ═════════════ */
.fdx-modal { position: relative; padding: 0 !important; overflow: hidden !important; }
.fdx-frame { position: relative; display: flex; flex-direction: column; max-height: calc(100vh - 32px); max-height: calc(100dvh - 32px); }
.fdx-scroll { min-height: 0; overflow: auto; overscroll-behavior: contain; padding: 22px; scrollbar-width: thin; }
.fdx-x { position: absolute; right: 12px; top: 12px; z-index: 10; width: 40px; height: 40px; border-radius: 50%; cursor: pointer;
  border: 2px solid rgba(255, 255, 255, .18); background: rgba(27, 20, 64, .9); color: #fff; font: 800 17px/1 var(--font);
  box-shadow: 0 4px 14px rgba(0, 0, 0, .35); backdrop-filter: blur(6px); transition: background .15s, transform .15s; }
.fdx-x:hover, .fdx-x:focus-visible { background: rgba(255, 77, 94, .8); transform: scale(1.06); }
.fdx-modal .fdx-head { padding-right: 46px; }
.fdx-lvl .fdx-rod { font-size: 12px; font-weight: 800; color: var(--muted); white-space: nowrap; }
.fdx-lvl .fdx-rod em { font-style: normal; opacity: .75; }
/* (QA P3) Detailkarte offen: das ✕ des Fensters ausblenden (die Karte hat ihr eigenes – sonst zwei ✕ übereinander) */
.fdx-frame:has(.fdx-detail) > .fdx-x { opacity: 0; pointer-events: none; }
@media (max-width: 560px) {
  .fdx-tab { padding: 6px 7px; font-size: 12.5px; }
  .fdx-scroll { padding: 16px 14px; }
  .fdx-x { right: 8px; top: 8px; width: 38px; height: 38px; }
  .fdx-modal .fdx-head { padding-right: 40px; }
}

/* ═════════════ Fang-Karte: nächste Angel, neue Köder ═════════════ */
.fc-rodprog { --gc: #ffc933; display: flex; align-items: center; gap: 8px; margin: 10px 4px 0; padding: 5px 10px 5px 4px; border-radius: 14px;
  background: rgba(8, 4, 30, .28); text-align: left; animation: fcRise .35s .3s ease-out both; }
.fc-rodprog canvas { width: 54px; height: 36px; flex: none; }
.fc-rodprog-txt { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.fc-rodprog-txt small { font-size: 12px; font-weight: 800; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fc-rodprog-bar { height: 7px; border-radius: 5px; background: rgba(8, 4, 30, .6); overflow: hidden; box-shadow: inset 0 1px 3px rgba(0, 0, 0, .4); }
.fc-rodprog-bar i { display: block; height: 100%; border-radius: 5px; transform-origin: left center;
  background: linear-gradient(90deg, color-mix(in srgb, var(--gc) 55%, #fff), var(--gc)); }
.fc-rodprog > b { flex: none; font: 700 13px/1 var(--font-display); font-variant-numeric: tabular-nums; }
.fc-rodprog.close > b { color: #ffe066; animation: fcPulseTxt .9s ease-in-out 2; }
.fc-rodprog.done { border: 2px solid color-mix(in srgb, var(--gc) 75%, transparent);
  background: linear-gradient(135deg, color-mix(in srgb, var(--gc) 32%, transparent), rgba(255, 255, 255, .04)); }
.fc-rodprog.done small { color: #ffe066; }
.fc-rodprog.done b { font: 700 17px/1.1 var(--font-display); color: #fff; }
.fc-rodprog.done em { font-style: normal; font-size: 22px; }
.fc-newbait { display: flex; align-items: center; gap: 8px; margin-top: 6px; padding: 6px 8px; border-radius: 12px; background: rgba(27, 20, 64, .45); text-align: left; }
.fc-newbait canvas { width: 44px; height: 44px; flex: none; }
.fc-newbait-txt { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.fc-levelup .fc-newbait-txt b { font: 700 14.5px/1.2 var(--font-display); color: #fff; }
.fc-levelup .fc-newbait-txt span { font-size: 12px; font-weight: 700; opacity: .85; }
.fc-bait-btn { flex: none; border: none; border-radius: 10px; padding: 9px 12px; font: 700 14px/1 var(--font-display); cursor: pointer;
  background: linear-gradient(180deg, #ffe98a, #ffc933); color: #1b1440; box-shadow: 0 3px 0 rgba(0, 0, 0, .25); transition: transform .1s; }
.fc-bait-btn:active { transform: translateY(2px); box-shadow: 0 1px 0 rgba(0, 0, 0, .25); }
.fc-bait-btn.ok, .fc-bait-btn:disabled { background: #62d98a; cursor: default; }

/* ═════════════ Feier: neue Angel ═════════════ */
.fc-rodcel-wrap { --rc: #ffc933; position: relative; width: min(470px, 100%); display: flex; justify-content: center; max-height: 100%;
  animation: fcCardIn .55s cubic-bezier(.2, 1.4, .4, 1); }
.fc-rodcel-wrap.out { animation: fcCardOut .2s ease-in forwards; }
.fc-rodcel { position: relative; width: 100%; max-height: calc(100vh - 40px); max-height: calc(100dvh - 40px); overflow: auto; overscroll-behavior: contain;
  text-align: center; padding: 20px 18px 18px; border-radius: 26px; background: linear-gradient(180deg, #3a2d8a, #22195a);
  border: 3px solid var(--rc); scrollbar-width: thin;
  box-shadow: 0 0 0 5px rgba(27, 20, 64, .6), 0 0 70px color-mix(in srgb, var(--rc) 50%, transparent), 0 24px 60px rgba(0, 0, 0, .55); }
.fc-rodcel-kicker { font: 700 clamp(24px, 6.4vw, 34px)/1.05 var(--font-display); color: var(--rc); letter-spacing: .5px;
  -webkit-text-stroke: 2px rgba(27, 20, 64, .9); paint-order: stroke fill; text-shadow: 0 4px 0 rgba(27, 20, 64, .9), 0 0 30px color-mix(in srgb, var(--rc) 70%, transparent);
  animation: fcCelWord .8s cubic-bezier(.2, 1.6, .4, 1) both; }
.fc-rodcel-stage { position: relative; display: flex; justify-content: center; margin-top: 2px; }
.fc-rodcel-glow { position: absolute; inset: 6% 8%; border-radius: 50%; background: radial-gradient(closest-side, color-mix(in srgb, var(--rc) 45%, transparent), transparent); }
.fc-rodcel-cv { position: relative; max-width: 100%; height: auto; }
.fc-rodcel-name { font: 700 30px/1.1 var(--font-display); text-shadow: 0 3px 0 rgba(0, 0, 0, .3); margin-top: -2px; animation: fcRise .4s .35s ease-out both; }
.fc-rodcel-desc { margin: 6px 8px 0; color: var(--muted); font-style: italic; font-size: 14.5px; line-height: 1.45; animation: fcRise .4s .45s ease-out both; }
.fc-rodcel-stats { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; margin-top: 12px; }
.fc-rodcel-stats .fc-chip { background: color-mix(in srgb, var(--rc) 22%, rgba(255, 255, 255, .06)); border-color: color-mix(in srgb, var(--rc) 55%, transparent); }
.fc-rodcel-stats .fc-chip:nth-child(2) { animation-delay: .08s; }
.fc-rodcel-stats .fc-chip:nth-child(3) { animation-delay: .16s; }
.fc-rodcel-stats .fc-chip:nth-child(4) { animation-delay: .24s; }
.fc-rodcel-note { margin-top: 10px; font-size: 13px; font-weight: 800; color: #ffe066; }
.fc-rodcel-btns { display: flex; gap: 8px; justify-content: center; flex-wrap: wrap; margin-top: 14px; }
.fc-rodcel-btns .btn { min-width: 150px; }
.fc-rodcel-more { background: rgba(255, 255, 255, .12); color: #fff; }
.fc-ov-rod .fc-cel-rays { top: 40%; opacity: .45; }
@media (max-width: 560px) {
  .fc-rodcel { padding: 16px 12px 14px; }
  .fc-rodcel-name { font-size: 25px; }
  .fc-rodcel-desc { font-size: 13.5px; }
  .fc-rodcel-btns { flex-direction: column; align-items: stretch; }
  .fc-rodcel-btns .btn { width: 100%; min-width: 0; }
}

/* ═════════════ Ausrüstungs-Fenster (gear-ui.js) ═════════════ */
.gw-modal { max-width: 900px !important; padding: 0 !important; overflow: hidden !important; }
.gw { position: relative; display: flex; flex-direction: column; max-height: calc(100vh - 32px); max-height: calc(100dvh - 32px); color: #fff; font-family: var(--font); }
.gw-head { display: flex; align-items: center; gap: 12px; padding: 18px 16px 10px 22px; }
.gw-title { flex: 1; min-width: 0; }
.gw .gw-title h3 { margin: 0; text-align: left; font: 700 26px/1.1 var(--font-display); }
.gw .gw-sub { margin: 3px 0 0; text-align: left; font-size: 13.5px; font-weight: 700; color: var(--muted); }
.gw-x { flex: none; width: 40px; height: 40px; border-radius: 50%; cursor: pointer; border: 2px solid rgba(255, 255, 255, .18);
  background: rgba(27, 20, 64, .7); color: #fff; font: 800 17px/1 var(--font); transition: background .15s, transform .15s; }
.gw-x:hover, .gw-x:focus-visible { background: rgba(255, 77, 94, .8); transform: scale(1.06); }
.gw-tabs { display: flex; gap: 6px; margin: 0 22px 12px; padding: 4px; border-radius: 16px; background: rgba(0, 0, 0, .22); }
.gw-tab { flex: 1; display: flex; align-items: center; justify-content: center; gap: 8px; padding: 10px 12px; border: none; border-radius: 12px; cursor: pointer;
  background: transparent; color: var(--muted); font: 600 16px/1 var(--font-display); transition: background .15s, color .15s; }
.gw-tab:hover { color: #fff; background: rgba(255, 255, 255, .06); }
.gw-tab-ic { font-size: 17px; }
.gw-tab em { font: 800 11.5px/1 var(--font); font-style: normal; padding: 4px 7px; border-radius: 8px; background: rgba(255, 255, 255, .1); color: #fff; }
.gw-tab.sel { background: var(--primary); color: #1b1440; box-shadow: 0 3px 0 rgba(0, 0, 0, .22); }
.gw-tab.sel em { background: rgba(27, 20, 64, .16); color: #1b1440; }
.gw-body { min-height: 0; overflow: auto; overscroll-behavior: contain; padding: 0 22px 20px; scrollbar-width: thin; }
.gw-view { display: flex; flex-direction: column; gap: 14px; }
.gw-loading { display: flex; align-items: center; justify-content: center; gap: 10px; padding: 50px 10px; color: var(--muted); font-weight: 800; }
.gw-spin { width: 20px; height: 20px; border-radius: 50%; border: 3px solid rgba(255, 255, 255, .2); border-top-color: var(--primary); animation: fcSpin .8s linear infinite; }

/* Schaufenster */
.gw-show { --gc: #ffc933; display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr); gap: 16px; align-items: center; padding: 14px 18px 16px 10px; border-radius: 22px;
  background: radial-gradient(ellipse at 28% 45%, color-mix(in srgb, var(--gc) 24%, transparent), transparent 62%), linear-gradient(180deg, rgba(255, 255, 255, .08), rgba(255, 255, 255, .03));
  border: 2px solid color-mix(in srgb, var(--gc) 45%, rgba(255, 255, 255, .08)); }
.gw-show.pop { animation: gwPop .4s cubic-bezier(.2, 1.5, .4, 1); }
@keyframes gwPop { 40% { transform: scale(1.015); box-shadow: 0 0 0 4px color-mix(in srgb, var(--gc) 35%, transparent); } }
.gw-stage { position: relative; display: grid; place-items: center; min-height: 170px; }
.gw-stage-glow { position: absolute; inset: 12% 6%; border-radius: 50%; background: radial-gradient(closest-side, color-mix(in srgb, var(--gc) 42%, transparent), transparent); }
.gw-stage-cv { position: relative; max-width: 100%; height: auto !important; }
.gw-stage.locked .gw-stage-glow { opacity: .4; }
.gw-lock { position: absolute; left: 50%; top: 50%; width: 52px; height: 52px; margin: -26px 0 0 -26px; display: grid; place-items: center; border-radius: 50%;
  background: rgba(27, 20, 64, .85); border: 2px solid color-mix(in srgb, var(--gc) 60%, transparent); color: var(--gc);
  box-shadow: 0 0 24px color-mix(in srgb, var(--gc) 45%, transparent); animation: gwLock 2.4s ease-in-out infinite; }
.gw-lock svg { width: 24px; height: 24px; }
@keyframes gwLock { 50% { transform: scale(1.07); } }
.gw-info { min-width: 0; display: flex; flex-direction: column; gap: 7px; }
.gw-kicker { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 11.5px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--muted); }
.gw-pill { padding: 3px 8px; border-radius: 8px; font-size: 10.5px; letter-spacing: .6px; }
.gw-pill.on { background: #62d98a; color: #0f2e1a; }
.gw-pill.lock { background: rgba(255, 255, 255, .12); color: #fff; }
.gw .gw-name { margin: 0; font: 700 30px/1.05 var(--font-display); text-align: left; text-shadow: 0 3px 0 rgba(0, 0, 0, .3); }
.gw .gw-desc { margin: 0; text-align: left; font-style: italic; font-size: 14px; line-height: 1.42; color: var(--muted); }
.gw-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin-top: 2px; }
.gw-stat { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; column-gap: 7px; row-gap: 5px; padding: 7px 10px 8px 8px; border-radius: 12px; background: rgba(8, 4, 30, .3); }
.gw-stat-ic { grid-row: span 2; font-size: 18px; line-height: 1; }
.gw-stat small { font-size: 10.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .6px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gw-stat b { font: 700 15px/1.1 var(--font-display); white-space: nowrap; font-variant-numeric: tabular-nums; }
.gw-stat b em { font-style: normal; font-size: 10px; margin-left: 3px; vertical-align: 2px; }
.gw-stat b em.up { color: #62d98a; }
.gw-stat b em.down { color: #ff8a9a; }
/* fünfter Wert (Schnur, seit dem Drill-Umbau) über die ganze Breite; gear-ui.js kennt sein Symbol noch nicht */
.gw-stats > .gw-stat:nth-child(5):last-child { grid-column: 1 / -1; }
.gw-stat-bar { grid-column: 2 / 4; height: 5px; border-radius: 4px; background: rgba(255, 255, 255, .1); overflow: hidden; }
.gw-stat-bar i { display: block; height: 100%; border-radius: 4px; background: linear-gradient(90deg, color-mix(in srgb, var(--gc) 55%, #fff), var(--gc)); }
.gw-lines { list-style: none; margin: 2px 0 0; padding: 0; display: flex; flex-direction: column; gap: 5px; }
.gw-lines li { display: flex; align-items: flex-start; gap: 8px; padding: 7px 10px; border-radius: 12px; background: rgba(8, 4, 30, .3); font-size: 14px; font-weight: 700; line-height: 1.3; }
.gw-lines li i { flex: none; width: 20px; height: 20px; border-radius: 50%; display: grid; place-items: center; font: 800 14px/1 var(--font); font-style: normal;
  background: color-mix(in srgb, #62d98a 30%, transparent); color: #8ff0b0; }
.gw-lines li.minus { color: var(--muted); }
.gw-lines li.minus i { background: rgba(255, 255, 255, .1); color: var(--muted); }
.gw-act { display: flex; align-items: center; gap: 10px; min-height: 46px; margin-top: 4px; }
.gw-equip { min-width: 160px; }
.gw-on { display: inline-flex; align-items: center; gap: 2px; padding: 10px 16px; border-radius: 12px; background: rgba(98, 217, 138, .16);
  border: 2px solid rgba(98, 217, 138, .6); color: #8ff0b0; font: 700 15px/1 var(--font-display); }
.gw-prog-wrap { flex: 1; display: flex; flex-direction: column; gap: 5px; }
.gw-prog { height: 10px; border-radius: 6px; background: rgba(8, 4, 30, .55); overflow: hidden; box-shadow: inset 0 1px 3px rgba(0, 0, 0, .45); }
.gw-prog i { display: block; height: 100%; border-radius: 6px; background: linear-gradient(90deg, color-mix(in srgb, var(--gc) 55%, #fff), var(--gc)); }
.gw-prog-wrap small, .gw-need { font-size: 12.5px; font-weight: 800; color: var(--muted); }

/* Sammlung */
.gw-grid { display: grid; gap: 8px; }
.gw-grid-rods { grid-template-columns: repeat(7, minmax(0, 1fr)); }
.gw-grid-baits { grid-template-columns: repeat(8, minmax(0, 1fr)); }
.gw-card { --gc: #fff; position: relative; display: flex; flex-direction: column; align-items: center; gap: 2px; min-width: 0; padding: 6px 4px 9px; border-radius: 14px; cursor: pointer;
  border: 2px solid rgba(255, 255, 255, .1); background: linear-gradient(180deg, rgba(255, 255, 255, .08), rgba(255, 255, 255, .03)); color: #fff; font-family: var(--font);
  overflow: hidden; transition: transform .12s, border-color .12s, box-shadow .12s; }
.gw-card:hover { transform: translateY(-2px); border-color: color-mix(in srgb, var(--gc) 60%, transparent); }
.gw-card:focus-visible { outline: 3px solid var(--primary); outline-offset: 2px; }
.gw-card-cv { width: 100%; height: auto; aspect-ratio: 150 / 104; }
.gw-card-bait .gw-card-cv { width: 76%; aspect-ratio: 1; }
.gw-card-bait .gw-card-name { white-space: normal; hyphens: manual; line-height: 1.08; text-align: center; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.gw-card-name { max-width: 100%; font: 600 13px/1.15 var(--font-display); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gw-card-sub { max-width: 100%; font-size: 10.5px; font-weight: 800; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gw-card.cur { border-color: var(--gc); background: linear-gradient(180deg, color-mix(in srgb, var(--gc) 24%, transparent), rgba(255, 255, 255, .03));
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--gc) 30%, transparent), 0 0 18px color-mix(in srgb, var(--gc) 35%, transparent); }
.gw-card.cur .gw-card-sub { color: #8ff0b0; }
.gw-card.sel { box-shadow: 0 0 0 3px #fff, 0 6px 16px rgba(0, 0, 0, .35); }
.gw-card.cur.sel { box-shadow: 0 0 0 3px #fff, 0 0 18px color-mix(in srgb, var(--gc) 45%, transparent); }
.gw-card.locked { background: rgba(10, 6, 35, .4); border-style: dashed; border-color: rgba(255, 255, 255, .14); }
.gw-card.locked .gw-card-name { color: rgba(255, 255, 255, .62); }
.gw-card.next { border-style: solid; border-color: color-mix(in srgb, var(--gc) 55%, transparent); background: linear-gradient(180deg, color-mix(in srgb, var(--gc) 12%, rgba(10, 6, 35, .4)), rgba(10, 6, 35, .4)); }
.gw-card.next::before { content: attr(data-next); /* Text aus gear-ui.js (übersetzt) */ position: absolute; left: 50%; top: 5px; transform: translateX(-50%); z-index: 1; padding: 2px 6px; border-radius: 6px;
  font: 800 8.5px/1.2 var(--font); letter-spacing: .5px; text-transform: uppercase; white-space: nowrap; background: var(--gc); color: #1b1440; }
.gw-card.next .gw-card-sub { color: #fff; }
.gw-card-prog { position: absolute; left: 0; bottom: 0; height: 4px; background: var(--gc); box-shadow: 0 0 8px var(--gc); }
.gw-card-lock { position: absolute; right: 6px; top: 6px; width: 15px; height: 15px; color: rgba(255, 255, 255, .5); }
.gw-card-lock svg { width: 100%; height: 100%; display: block; }
.gw-card.next .gw-card-lock { display: none; } /* „Als Nächstes“ + Fortschrittsbalken sagen genug; das Schloss stieß ans Etikett */
.gw .gw-foot { margin: 0; text-align: center; font-size: 12.5px; font-weight: 700; color: var(--muted); }
.gw-msg { position: absolute; left: 50%; bottom: 16px; transform: translate(-50%, 12px); opacity: 0; pointer-events: none; z-index: 5; max-width: calc(100% - 32px);
  padding: 10px 16px; border-radius: 14px; background: rgba(27, 20, 64, .95); border: 2px solid rgba(98, 217, 138, .6); font: 600 15px/1.2 var(--font-display);
  box-shadow: 0 10px 30px rgba(0, 0, 0, .45); transition: opacity .2s, transform .2s; text-align: center; }
.gw-msg.on { opacity: 1; transform: translate(-50%, 0); }
.gw-msg.bad { border-color: rgba(255, 77, 94, .7); }

@media (max-width: 760px) {
  .gw-grid-rods { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .gw-grid-baits { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .gw-head { padding: 14px 12px 8px 16px; }
  .gw .gw-title h3 { font-size: 23px; }
  .gw-tabs { margin: 0 14px 10px; }
  .gw-tab { font-size: 15px; padding: 9px 8px; gap: 6px; }
  .gw-body { padding: 0 14px 16px; }
  .gw-show { grid-template-columns: 1fr; gap: 6px; padding: 8px 12px 14px; }
  .gw-stage { min-height: 0; }
  .gw .gw-name { font-size: 26px; }
  .gw .gw-desc { font-size: 13.5px; }
  .gw-stat b { font-size: 14px; }
  .gw-equip { flex: 1; }
  .gw-card-name { font-size: 12px; white-space: normal; hyphens: manual; line-height: 1.08; text-align: center; min-height: 2.16em;
    display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
  .gw-stat { column-gap: 6px; padding: 7px 8px 8px 7px; }
  .gw-stat-ic { font-size: 16px; }
  .gw-stat small { text-transform: none; letter-spacing: 0; font-size: 11.5px; }
  .gw-stat b { font-size: 13.5px; }
  .gw-stat b em { margin-left: 1px; }
}
@media (prefers-reduced-motion: reduce) {
  .gw-lock, .gw-show.pop { animation: none !important; }
}

/* ===== fish-economy.css ===== */
/* fish-economy.css – Muscheln/Perlen-Pille, Ausgeruht, Freilassen-Glück, Level-Aufstieg ohne Fang
   (public/js/fishing/wallet-ui.js, Phase 1 – Agent A). Präfix ew-. Variablen aus .fw-root (fishing.css). */

.fw-root { --ew-shell: #ffc29a; --ew-shell-2: #ff8f6b; --ew-pearl: #d8c4ff; --ew-pearl-2: #8ef3ff; --ew-rest: #9fe3ff; --ew-luck: #8ff0a4; }

/* ───────── Pille ───────── */
.ew {
  position: absolute; z-index: 19; top: calc(var(--fw-top-h, 52px) + 10px); left: calc(10px + var(--safe-l));
  display: inline-flex; align-items: center; gap: 8px; height: 38px; padding: 0 12px 0 10px; border-radius: 14px;
  background: var(--glass); border: 1px solid var(--glass-b); box-shadow: var(--fw-shadow);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  color: #fff; font: 600 15px/1 var(--font-display); cursor: pointer; white-space: nowrap;
  transition: background .15s, transform .15s, box-shadow .3s;
  animation: ewIn .4s cubic-bezier(.2, 1.3, .4, 1) both;
}
.ew:hover { background: var(--glass-2); }
.ew:active { transform: scale(.97); }
.ew:focus-visible { outline: 3px solid rgba(255, 201, 51, .8); outline-offset: 2px; }
.ew.hidden, .ew-chip.hidden { display: none; }
.ew-cur { display: inline-flex; align-items: center; gap: 5px; font-variant-numeric: tabular-nums; }
.ew-ic { display: inline-flex; flex: none; width: 19px; height: 19px; font-style: normal; filter: drop-shadow(0 1px 1px rgba(0, 0, 0, .35)); }
.ew-ic svg { width: 100%; height: 100%; display: block; overflow: visible; }
.ew-float .ew-ic { width: 18px; height: 18px; margin-left: 3px; vertical-align: -3px; }
.ew-row-ic .ew-ic { width: 24px; height: 24px; }
.ew-sh .ew-num { color: var(--ew-shell); }
.ew-pe .ew-num { color: var(--ew-pearl); }
.ew-num { min-width: 1ch; letter-spacing: .2px; text-shadow: 0 1px 0 rgba(0, 0, 0, .35); }
.ew-sep { width: 1px; height: 18px; background: rgba(255, 255, 255, .16); }
.ew-cur.bump .ew-ic { animation: ewBump .45s cubic-bezier(.2, 1.8, .4, 1); }
.ew-cur.bump .ew-num { animation: ewNum .5s ease; }
.ew.glow { box-shadow: var(--fw-shadow), 0 0 0 3px rgba(216, 196, 255, .35), 0 0 22px rgba(142, 243, 255, .45); }
@keyframes ewIn { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: none; } }
@keyframes ewBump { 40% { transform: scale(1.45) rotate(-10deg); } }
@keyframes ewNum { 30% { color: #fff; text-shadow: 0 0 10px rgba(255, 255, 255, .8); } }

/* Ausgeruht / Glück als Chips in der Pille */
.ew-chip {
  display: inline-flex; align-items: center; gap: 4px; height: 26px; margin-left: 2px; padding: 0 9px 0 7px; border-radius: 999px;
  font: 600 13px/1 var(--font-display);
}
.ew-chip i { font-style: normal; font-size: 14px; }
.ew-chip small { font: 800 11.5px/1 var(--font); opacity: .85; }
.ew-rest { background: linear-gradient(135deg, rgba(110, 170, 255, .28), rgba(178, 140, 255, .28)); border: 1px solid rgba(159, 227, 255, .4); color: var(--ew-rest); }
.ew-rest i { animation: ewZz 2.8s ease-in-out infinite; }
.ew-luck { background: rgba(80, 210, 120, .22); border: 1px solid rgba(143, 240, 164, .45); color: var(--ew-luck); }
.ew-luck small { font-variant-numeric: tabular-nums; }
@keyframes ewZz { 0%, 100% { transform: translateY(0) rotate(0); } 50% { transform: translateY(-2px) rotate(-8deg); } }
.ew.guest .ew-num { opacity: .85; }

/* ───────── Effekte ───────── */
.ew-fx { position: absolute; inset: 0; z-index: 42; pointer-events: none !important; overflow: hidden; }
.ew-float {
  position: absolute; transform: translate(-50%, -50%); white-space: nowrap; pointer-events: none; display: inline-flex; align-items: center;
  font: 700 17px/1 var(--font-display); text-shadow: 0 2px 0 rgba(30, 10, 60, .6), 0 0 12px rgba(0, 0, 0, .3);
  animation: ewFly 1.15s cubic-bezier(.2, .8, .3, 1) both;
}
.ew-float.sh { color: #ffd8b8; }
.ew-float.pe { color: #e9dcff; text-shadow: 0 2px 0 rgba(30, 10, 60, .6), 0 0 14px rgba(142, 243, 255, .9); }
.ew-float.minus { color: #ffb3bd; font-size: 15px; animation-name: ewDrop; }
@keyframes ewFly {
  0% { opacity: 0; transform: translate(-50%, 34px) scale(.7); }
  25% { opacity: 1; transform: translate(-50%, 22px) scale(1.12); }
  70% { opacity: 1; transform: translate(-50%, 4px) scale(1); }
  100% { opacity: 0; transform: translate(-50%, -6px) scale(.8); }
}
@keyframes ewDrop {
  0% { opacity: 0; transform: translate(-50%, 0) scale(.9); }
  20% { opacity: 1; transform: translate(-50%, 12px); }
  100% { opacity: 0; transform: translate(-50%, 34px) scale(.9); }
}
.ew-spark {
  position: absolute; width: 7px; height: 7px; margin: -3.5px 0 0 -3.5px; border-radius: 2px; transform: rotate(45deg);
  background: #fff; box-shadow: 0 0 8px var(--ew-pearl-2); animation: ewSpark .75s ease-out both;
}
.ew-spark.lv { background: #ffe066; box-shadow: 0 0 8px #ffb83d; }
@keyframes ewSpark { from { opacity: 1; transform: translate(0, 0) rotate(45deg) scale(1); } to { opacity: 0; transform: translate(var(--dx), var(--dy)) rotate(45deg) scale(.3); } }

/* ───────── Erklär-Fenster ───────── */
.ew-pop {
  top: calc(var(--fw-top-h, 52px) + 56px); left: calc(10px + var(--safe-l)); width: 330px; max-width: calc(100% - 20px);
  max-height: calc(100% - var(--fw-top-h, 52px) - 80px); overflow-y: auto; z-index: 41;
  animation: fwPop .22s ease both; transform-origin: 12% 0;
}
.ew-pop-body { display: flex; flex-direction: column; gap: 8px; }
.ew-row { display: flex; gap: 10px; align-items: flex-start; padding: 9px 10px; border-radius: 14px; background: rgba(255, 255, 255, .06); }
.ew-row-ic { flex: none; width: 34px; height: 34px; display: grid; place-items: center; border-radius: 11px; font-size: 20px; background: rgba(255, 255, 255, .08); }
.ew-row.sh .ew-row-ic { background: linear-gradient(160deg, rgba(255, 194, 154, .35), rgba(255, 143, 107, .2)); }
.ew-row.pe .ew-row-ic { background: linear-gradient(160deg, rgba(216, 196, 255, .35), rgba(142, 243, 255, .2)); }
.ew-row.rest.on { background: linear-gradient(135deg, rgba(110, 170, 255, .16), rgba(178, 140, 255, .14)); }
.ew-row.luck.on { background: rgba(80, 210, 120, .12); }
.ew-row-txt { display: flex; flex-direction: column; gap: 3px; min-width: 0; flex: 1; }
.ew-row-txt b { font: 600 15.5px/1.2 var(--font-display); }
.ew-row.sh b { color: var(--ew-shell); }
.ew-row.pe b { color: var(--ew-pearl); }
.ew-row.rest.on b { color: var(--ew-rest); }
.ew-row.luck b { color: var(--ew-luck); }
.ew-row-txt > span { font: 700 12.5px/1.4 var(--font); color: #e3ddff; opacity: .9; }
.ew-bar { position: relative; height: 16px; margin-top: 4px; border-radius: 8px; background: rgba(8, 4, 30, .55); overflow: hidden; box-shadow: inset 0 2px 4px rgba(0, 0, 0, .4); }
.ew-bar i { display: block; height: 100%; border-radius: 8px; background: linear-gradient(90deg, #7db3ff, #b28cff); transition: width .6s cubic-bezier(.2, .9, .3, 1); }
.ew-bar small { position: absolute; inset: 0; display: grid; place-items: center; font: 800 10.5px/1 var(--font); color: #fff; text-shadow: 0 1px 2px rgba(0, 0, 0, .6); }
.ew-guest { margin: 0; padding: 8px 10px; border-radius: 12px; background: rgba(255, 201, 51, .1); border: 1px dashed rgba(255, 201, 51, .35); font: 700 12.5px/1.4 var(--font); color: #ffe9a8; }
.ew-shop {
  height: 40px; border: none; border-radius: 12px; cursor: pointer; margin-top: 2px;
  background: linear-gradient(180deg, #ffe066, var(--primary)); color: #1b1440; font: 600 15px/1 var(--font-display);
  box-shadow: 0 3px 0 rgba(0, 0, 0, .25); transition: transform .1s;
}
.ew-shop:active { transform: translateY(2px); box-shadow: 0 1px 0 rgba(0, 0, 0, .25); }

/* ───────── Willkommen zurück ───────── */
.ew-note {
  position: absolute; z-index: 41; top: calc(var(--fw-top-h, 52px) + 56px); left: calc(10px + var(--safe-l)); width: 340px; max-width: calc(100% - 20px);
  display: flex; gap: 11px; align-items: flex-start; padding: 12px 38px 12px 12px; border-radius: 16px; cursor: pointer;
  background: linear-gradient(135deg, rgba(43, 40, 120, .94), rgba(74, 41, 130, .94)); border: 1.5px solid rgba(159, 227, 255, .45);
  box-shadow: var(--fw-shadow), 0 0 0 4px rgba(159, 227, 255, .08); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  animation: ewNoteIn .45s cubic-bezier(.2, 1.4, .4, 1) both;
}
.ew-note.out, .ew-lvl.out { animation: ewOut .26s ease forwards; }
.ew-note-ic { flex: none; width: 40px; height: 40px; display: grid; place-items: center; border-radius: 12px; font-size: 22px; background: rgba(159, 227, 255, .16); animation: ewZz 2.8s ease-in-out infinite; }
.ew-note-txt { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.ew-note-txt b { font: 600 17px/1.2 var(--font-display); color: #fff; }
.ew-note-txt span { font: 700 13px/1.4 var(--font); color: #e3ddff; }
.ew-note-txt em { font-style: normal; color: var(--ew-rest); }
.ew-note-x { position: absolute; top: 8px; right: 8px; width: 26px; height: 26px; border: none; border-radius: 9px; background: rgba(255, 255, 255, .1); color: #fff; cursor: pointer; font: 700 12px/1 var(--font); }
@keyframes ewNoteIn { from { opacity: 0; transform: translateY(-10px) scale(.96); } to { opacity: 1; transform: none; } }
@keyframes ewOut { to { opacity: 0; transform: translateY(-8px) scale(.97); } }

/* ───────── Level-Aufstieg ohne Fang ───────── */
.ew-lvl {
  position: absolute; z-index: 44; left: 50%; top: calc(var(--fw-top-h, 52px) + 64px); transform: translateX(-50%);
  width: min(380px, calc(100% - 24px)); padding: 14px 14px 12px; border-radius: 20px; cursor: pointer; overflow: hidden;
  background: linear-gradient(160deg, rgba(58, 38, 120, .96), rgba(36, 24, 84, .96)); border: 2px solid rgba(255, 201, 51, .6);
  box-shadow: var(--shadow), 0 0 0 5px rgba(255, 201, 51, .1), 0 0 40px rgba(255, 184, 61, .25);
  display: flex; flex-direction: column; gap: 8px; animation: ewLvlIn .55s cubic-bezier(.2, 1.5, .4, 1) both;
}
.ew-lvl.out { animation: ewLvlOut .3s ease forwards; }
@keyframes ewLvlIn { from { opacity: 0; transform: translate(-50%, -16px) scale(.85); } to { opacity: 1; transform: translate(-50%, 0); } }
@keyframes ewLvlOut { to { opacity: 0; transform: translate(-50%, -10px) scale(.96); } }
.ew-lvl-rays {
  position: absolute; left: 46px; top: 40px; width: 300px; height: 300px; margin: -150px 0 0 -150px; pointer-events: none; opacity: .35;
  background: repeating-conic-gradient(from 0deg, rgba(255, 224, 102, .5) 0deg 10deg, transparent 10deg 30deg);
  -webkit-mask: radial-gradient(circle, #000 0, transparent 65%); mask: radial-gradient(circle, #000 0, transparent 65%);
  animation: ewSpin 14s linear infinite;
}
@keyframes ewSpin { to { transform: rotate(360deg); } }
.ew-lvl-in { position: relative; display: flex; align-items: center; gap: 12px; }
.ew-lvl-badge {
  flex: none; width: 64px; height: 64px; border-radius: 50%; display: flex; flex-direction: column; align-items: center; justify-content: center;
  background: radial-gradient(circle at 35% 30%, #fff6a8, #ffc933 60%, #ff9f1a); color: #3a2000;
  box-shadow: 0 0 0 4px rgba(255, 255, 255, .85), 0 0 26px rgba(255, 201, 51, .8); animation: ewBadge .7s .1s cubic-bezier(.2, 1.8, .4, 1) both;
}
.ew-lvl-badge small { font: 800 11px/1 var(--font); letter-spacing: .5px; text-transform: uppercase; opacity: .75; }
.ew-lvl-badge b { font: 700 27px/1 var(--font-display); }
@keyframes ewBadge { from { transform: scale(.3) rotate(-30deg); } to { transform: none; } }
.ew-lvl-txt { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.ew-lvl-txt b { font: 700 21px/1.15 var(--font-display); color: #ffe066; text-shadow: 0 2px 0 rgba(60, 20, 0, .45); }
.ew-lvl-txt span { font: 700 13px/1.35 var(--font); color: #fff; opacity: .9; }
.ew-lvl-bait { position: relative; display: flex; align-items: center; gap: 8px; padding: 6px 8px; border-radius: 12px; background: rgba(27, 20, 64, .55); }
.ew-lvl-bait canvas { width: 40px; height: 40px; flex: none; }
.ew-lvl-bic { width: 40px; height: 40px; display: grid; place-items: center; font-size: 24px; flex: none; }
.ew-lvl-btxt { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.ew-lvl-btxt b { font: 600 14.5px/1.2 var(--font-display); }
.ew-lvl-btxt span { font: 700 12px/1.3 var(--font); opacity: .85; }
.ew-lvl-go {
  position: relative; align-self: flex-end; border: none; border-radius: 10px; padding: 9px 14px; cursor: pointer;
  background: linear-gradient(180deg, #ffe98a, #ffc933); color: #1b1440; font: 700 14px/1 var(--font-display); box-shadow: 0 3px 0 rgba(0, 0, 0, .25);
}

/* ───────── Handy ───────── */
@media (max-width: 760px) {
  /* links unter der Kopfzeile – unter dem Platz für den Wasser-Hinweis (fw-hint sitzt auf Touch oben mittig);
     zwei kleine Zeilen, Ausgeruht/Glück als Eck-Abzeichen.
     (Feinschliff) Eine gemeinsame HUD-Zeile: Pille links, Event-Leiste rechts daneben (fish-events.css) – gleiche Oberkante
     --ew-row und Höhe --ew-h; wallet-ui.js meldet die Pillenbreite als --ew-w, der Fischschwarm-Hinweis liegt darunter. */
  .fw-root { --ew-row: calc(var(--fw-top-h, 56px) + 52px); --ew-h: 48px; }
  .fw-root:has(.fw-banner:not(.hidden)) { --ew-row: calc(var(--fw-top-h, 56px) + 96px); }
  .ew {
    top: var(--ew-row); left: calc(8px + var(--safe-l)); height: var(--ew-h); box-sizing: border-box; min-width: 64px; padding: 0 11px 0 8px; gap: 3px;
    flex-direction: column; align-items: flex-start; justify-content: center; border-radius: 13px; font-size: 14px;
  }
  .ew-cur { gap: 5px; height: 17px; }
  .ew-ic { width: 14px; height: 14px; }
  .ew-sep { display: none; }
  .ew-chip { position: absolute; margin: 0; height: 18px; padding: 0 5px 0 4px; gap: 2px; font-size: 10.5px; box-shadow: 0 2px 6px rgba(0, 0, 0, .3); }
  .ew-chip i { font-size: 10.5px; }
  .ew-chip small { display: none; }
  .ew-rest { right: -12px; top: -8px; background: #4c4aa8; }
  .ew-luck { right: -12px; bottom: -8px; background: #2f7d4a; }
  /* (QA) Warte-Lobby-Banner (.fw-banner) liegt auf dem Handy unter der Kopfleiste – Pille darunter (über --ew-row) */
  .ew-pop { top: calc(var(--fw-top-h, 56px) + 8px); left: 8px; right: 8px; width: auto; max-width: none; }
  .ew-note { top: calc(var(--ew-row) + 64px); left: 8px; right: 8px; width: auto; max-width: none; }
  .ew-lvl { top: calc(var(--ew-row) + 60px); }
  .ew-lvl-badge { width: 54px; height: 54px; }
  .ew-lvl-badge b { font-size: 23px; }
  .ew-lvl-txt b { font-size: 18px; }
}
@media (prefers-reduced-motion: reduce) {
  .ew, .ew-float, .ew-spark, .ew-note, .ew-lvl, .ew-lvl-badge, .ew-lvl-rays, .ew-rest i, .ew-note-ic { animation-duration: .01s !important; animation-iteration-count: 1 !important; }
}

/* ===== fish-market.css ===== */
/* Phase 1 – Agent B (inventory-ui.js, gear-ui.js, hud.js hotbar): Eimer & Rucksack, Fischhändlerin, Köderladen, Köder-Vorrat.
   Baut auf den Ausrüstungs-Fenster-Klassen (.gw-*, fishing-catch.css) auf – gleiche Glas-Optik, gleiche Schriften. */

/* ───────── Kopfleiste & Touch-Knopf ───────── */
.mk-topbtn .fw-xbadge { font-variant-numeric: tabular-nums; }
.mk-topbtn.mk-full .fw-xbadge { background: var(--danger); color: #fff; animation: mkPulse 1.6s ease-in-out infinite; }
.mk-tcount {
  position: absolute; top: -5px; right: -7px; min-width: 22px; height: 18px; padding: 0 5px; border-radius: 9px;
  background: var(--primary); color: #1b1440; font: 800 10.5px/18px var(--font); text-align: center; box-shadow: 0 2px 5px rgba(0, 0, 0, .35);
}
.mk-tcount.full { background: var(--danger); color: #fff; }
@keyframes mkPulse { 50% { box-shadow: 0 0 0 4px rgba(255, 77, 94, .35); } }

/* ───────── Hinweis-Stapel (Fang, Wurf-Notiz, Nähe) ───────── */
.mk-stack {
  position: absolute; z-index: 15; left: 50%; bottom: calc(138px + var(--safe-b)); transform: translateX(-50%);
  display: flex; flex-direction: column-reverse; align-items: center; gap: 6px; width: max-content; max-width: calc(100% - 24px);
  pointer-events: none !important;
}
.mk-stack.touch { left: calc(12px + var(--safe-l)); right: calc(96px + var(--safe-r)); width: auto; max-width: none; transform: none; bottom: calc(118px + var(--safe-b)); }
.mk-stack.touch .mk-pop { font-size: 12px; padding: 6px 11px; border-radius: 14px; }
.mk-stack.touch .mk-near { font-size: 13px; padding: 5px 8px 5px 6px; }
.mk-stack.touch .mk-near-ic { width: 24px; height: 24px; font-size: 14px; }
.fw-root.busy .mk-stack .mk-near { display: none; }
/* (Feinschliff) Touch: Nähe-Hinweis als Kachel links neben der Knopfspalte (auf Höhe des untersten Knopfs) – nicht mehr
   über der Joystick-Zone links unten; die Joystick-Zone endet bei 52 % Breite, die Kachel liegt rechts davon. */
.mk-near.tile {
  position: absolute; z-index: 21; right: calc(88px + var(--safe-r)); bottom: calc(136px + var(--safe-b));
  width: 64px; padding: 6px 3px 6px; border-radius: 17px; flex-direction: column; gap: 3px; text-align: center;
  font: 600 12.5px/1.05 var(--font-display); box-shadow: 0 4px 0 rgba(0, 0, 0, .22), var(--fw-shadow);
}
.mk-near.tile.hidden { display: none; }
.mk-near.tile .mk-near-ic { width: 26px; height: 26px; font-size: 16px; }
.mk-near.tile .mk-near-tap { padding: 3px 7px; font-size: 10.5px; }
.mk-near.tile::after {
  content: ''; position: absolute; inset: -5px; border-radius: 21px; border: 2px solid rgba(143, 210, 255, .8); pointer-events: none; opacity: 0;
  animation: mkTileRing 1.8s ease-out 3;
}
@keyframes mkTileRing { from { opacity: 1; transform: scale(.94); } to { opacity: 0; transform: scale(1.12); } }
.fw-root.busy .mk-near.tile { display: none; }
.fw-root:has(.mk-near.tile:not(.hidden)) .mk-stack.touch { right: calc(166px + var(--safe-r)); }
@media (prefers-reduced-motion: reduce) { .mk-near.tile::after { animation: none; opacity: 0; } }
.mk-pop {
  padding: 8px 14px; border-radius: 999px; background: var(--glass-2); border: 1px solid var(--glass-b); box-shadow: var(--fw-shadow);
  font: 800 13.5px/1.25 var(--font); color: #fff; text-align: center; max-width: 100%; white-space: normal;
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); animation: mkIn .34s cubic-bezier(.2, 1.5, .4, 1) both;
}
.mk-pop.warn { background: rgba(70, 38, 10, .88); border-color: rgba(255, 201, 51, .55); color: #ffe9a8; }
.mk-pop.out { animation: mkOut .38s ease forwards; }
@keyframes mkIn { from { opacity: 0; transform: translateY(8px) scale(.94); } to { opacity: 1; transform: none; } }
@keyframes mkOut { to { opacity: 0; transform: translateY(-6px) scale(.96); } }
.mk-near {
  pointer-events: auto; display: inline-flex; align-items: center; gap: 9px; padding: 7px 10px 7px 8px; border-radius: 999px; cursor: pointer;
  background: linear-gradient(180deg, rgba(63, 143, 208, .92), rgba(36, 92, 160, .92)); border: 1.5px solid rgba(255, 255, 255, .55); color: #fff;
  font: 600 14.5px/1 var(--font-display); box-shadow: 0 4px 0 rgba(0, 0, 0, .22), var(--fw-shadow); animation: mkIn .34s cubic-bezier(.2, 1.5, .4, 1) both;
}
.mk-near:hover { filter: brightness(1.08); }
.mk-near-ic { width: 28px; height: 28px; display: grid; place-items: center; border-radius: 50%; background: rgba(255, 255, 255, .2); font-size: 16px; }
.mk-near .fw-kbd { margin-left: 2px; }
.mk-near-tap { padding: 4px 9px; border-radius: 999px; background: #fff; color: #1d5d99; font: 800 12px/1 var(--font); }

/* ───────── Namensschilder der Händler ───────── */
.mk-tags { position: absolute; inset: 0; overflow: hidden; pointer-events: none !important; z-index: 1; }
.mk-tags .fw-tag { pointer-events: auto; flex-direction: column; gap: 0; padding: 3px 11px 4px; border-radius: 12px; line-height: 1.05; }
.mk-tags .fw-tag small { font: 800 9.5px/1.1 var(--font); letter-spacing: .4px; text-transform: uppercase; color: #ffe2b8; }
.mk-tags .fw-bubbles { bottom: 40px; }

/* ───────── Fenster ───────── */
.mk-modal { max-width: 820px !important; }
.mk .mk-head { padding-bottom: 8px; }
.mk-purse { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 8px; margin-top: 6px; }
.mk-coin { display: inline-flex; align-items: center; gap: 2px; padding: 4px 10px; border-radius: 999px; background: rgba(8, 4, 30, .35); font: 800 13px/1 var(--font); }
.mk-coin b { font: 700 15px/1 var(--font-display); font-variant-numeric: tabular-nums; color: #ffe9a8; }
.mk-coin.pearl b { color: #c9f3ff; }
.mk-rested { padding: 4px 10px; border-radius: 999px; background: rgba(157, 134, 255, .22); color: #e2dbff; font: 800 12px/1 var(--font); }
.mk-tab-lb { white-space: nowrap; }
.mk-loc { display: flex; align-items: center; gap: 9px; margin: 0 22px 10px; padding: 8px 12px; border-radius: 14px; font-size: 13.5px; font-weight: 700; line-height: 1.3; }
.mk-loc.here { background: rgba(98, 217, 138, .14); border: 1.5px solid rgba(98, 217, 138, .45); color: #d9ffe6; }
.mk-loc.far { background: rgba(8, 4, 30, .3); border: 1.5px dashed rgba(255, 255, 255, .16); color: var(--muted); }
.mk-loc em { font-style: normal; color: #fff; white-space: nowrap; }
.mk-loc-ic { flex: none; width: 28px; height: 28px; display: grid; place-items: center; border-radius: 50%; background: rgba(255, 255, 255, .1); font-size: 15px; }
.mk-body { padding-bottom: 12px; }
.mk-view { gap: 12px; }

/* Heute gesucht */
.mk-demand { padding: 10px 12px 12px; border-radius: 18px; background: linear-gradient(180deg, rgba(40, 67, 58, .75), rgba(28, 48, 42, .75)); border: 1.5px solid rgba(244, 241, 232, .18); }
.mk-demand-h { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
.mk-demand-h b { font: 600 16px/1 var(--font-display); color: #f4f1e8; }
.mk-demand-h small { margin-left: auto; font-size: 11.5px; font-weight: 800; color: rgba(244, 241, 232, .65); }
.mk-x2 { padding: 3px 8px; border-radius: 8px; background: #ffd23f; color: #3a2400; font: 800 11px/1.1 var(--font); }
.mk-demand-row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.mk-dem { --rc: #fff; display: flex; align-items: center; gap: 7px; min-width: 0; padding: 6px 8px; border-radius: 12px; background: rgba(0, 0, 0, .2); border-left: 3px solid var(--rc); }
.mk-dem canvas { flex: none; }
.mk-dem > span { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.mk-dem b { font: 600 14px/1.1 var(--font-display); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mk-dem small { font-size: 10.5px; font-weight: 800; color: rgba(244, 241, 232, .65); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mk-dem.unknown b { color: rgba(244, 241, 232, .8); letter-spacing: 1px; }

/* Raster (Eimer, Rucksack) */
.mk-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(124px, 1fr)); gap: 8px; }
.mk-fish {
  --rc: #b8c4d6; position: relative; display: flex; flex-direction: column; align-items: center; gap: 2px; min-width: 0; padding: 8px 6px 7px;
  border-radius: 15px; border: 2px solid color-mix(in srgb, var(--rc) 40%, rgba(255, 255, 255, .08)); cursor: pointer; color: #fff; font-family: var(--font);
  background: radial-gradient(ellipse at 50% 30%, color-mix(in srgb, var(--rc) 20%, transparent), transparent 70%), linear-gradient(180deg, rgba(255, 255, 255, .08), rgba(255, 255, 255, .03));
  transition: transform .12s, border-color .12s, box-shadow .15s; touch-action: manipulation;
}
.mk-fish:hover { transform: translateY(-2px); border-color: var(--rc); }
.mk-fish:focus-visible { outline: 3px solid var(--primary); outline-offset: 2px; }
.mk-fish.sel { border-color: var(--primary); box-shadow: 0 0 0 2px var(--primary), 0 6px 16px rgba(0, 0, 0, .35); background: linear-gradient(180deg, rgba(255, 201, 51, .2), rgba(255, 201, 51, .05)); }
.mk-fish.giant { box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .25); }
.mk-check {
  position: absolute; left: 6px; top: 6px; width: 20px; height: 20px; border-radius: 7px; display: grid; place-items: center;
  border: 2px solid rgba(255, 255, 255, .35); background: rgba(8, 4, 30, .35); font: 800 13px/1 var(--font); color: #1b1440;
}
.mk-fish.sel .mk-check { background: var(--primary); border-color: var(--primary); }
.mk-fish canvas { margin: 2px 0 0; }
.mk-fish-name { max-width: 100%; font: 600 14px/1.15 var(--font-display); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mk-fish-sub { font-size: 11.5px; font-weight: 800; color: var(--muted); }
.mk-fish-sub i { font-style: normal; }
.mk-fish-foot { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 4px; margin-top: 4px; }
.mk-price { padding: 3px 8px; border-radius: 999px; background: rgba(255, 201, 51, .16); color: #ffe9a8; font: 700 13px/1 var(--font-display); font-variant-numeric: tabular-nums; }
.mk-price.wait { opacity: .6; }
.mk-tag { padding: 3px 6px; border-radius: 7px; font: 800 10.5px/1 var(--font); font-variant-numeric: tabular-nums; }
.mk-tag.dem { background: #ffd23f; color: #3a2400; }
.mk-tag.fresh { background: rgba(120, 210, 255, .2); color: #c6ecff; }
.mk-tag.fresh.old { background: rgba(255, 255, 255, .06); color: rgba(255, 255, 255, .4); }
.mk-slot { min-height: 128px; border-radius: 15px; border: 2px dashed rgba(255, 255, 255, .08); background: rgba(8, 4, 30, .18); }
.mk-bag .mk-slot { min-height: 104px; }
.mk-item.mk-click { cursor: pointer; transition: transform .12s, box-shadow .12s; }
.mk-item.mk-click:hover, .mk-item.mk-click:focus-visible { transform: translateY(-2px); box-shadow: 0 0 0 2px rgba(255, 210, 63, .55); outline: none; }
.mk-item { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; min-height: 104px; padding: 8px 6px;
  border-radius: 15px; border: 2px solid rgba(255, 255, 255, .1); background: linear-gradient(180deg, rgba(255, 255, 255, .08), rgba(255, 255, 255, .03)); }
.mk-item .mk-fish-name { font-size: 13px; }
.mk-item-ic { font-size: 30px; }
.mk-qty { position: absolute; right: 7px; top: 6px; padding: 2px 6px; border-radius: 7px; background: rgba(8, 4, 30, .55); font: 800 11px/1.1 var(--font); font-variant-numeric: tabular-nums; }
.mk-item.bait { border-color: rgba(98, 217, 138, .3); }
.mk-item.junk { border-color: rgba(255, 201, 51, .22); }
.mk-empty { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 28px 16px; text-align: center; border-radius: 18px; background: rgba(8, 4, 30, .25); color: var(--muted); font-weight: 700; }
.mk-empty b { font: 600 18px/1.2 var(--font-display); color: #fff; }
.mk-empty.small { padding: 16px; }
.mk-empty-ic { font-size: 38px; filter: grayscale(.2); }

/* Aktionsleiste */
.mk-bar { display: flex; flex-direction: column; gap: 8px; padding: 10px 22px 14px; border-top: 1px solid rgba(255, 255, 255, .08); background: rgba(8, 4, 30, .28); }
.mk-bar:empty { display: none; }
.mk-bar-sel { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.mk-bar-sum { margin-left: auto; font: 800 13px/1.2 var(--font); color: var(--muted); font-variant-numeric: tabular-nums; }
.mk-chip { padding: 7px 12px; border-radius: 999px; border: 1.5px solid rgba(255, 255, 255, .16); background: rgba(255, 255, 255, .06); color: #fff; cursor: pointer;
  font: 800 12.5px/1 var(--font); transition: background .15s; }
.mk-chip:hover:not(:disabled) { background: rgba(255, 255, 255, .14); }
.mk-chip:disabled { opacity: .45; cursor: default; }
.mk-chip.sell { margin-top: 4px; border-color: rgba(255, 201, 51, .45); color: #ffe9a8; }
.mk-bar-act { display: flex; gap: 8px; }
.mk-bar-act .btn { flex: 1; min-height: 46px; font-size: 17px; }
.mk-btn-rel { background: linear-gradient(180deg, #8ff0b0, #4fcf7e); color: #0f2e1a; }
.mk-btn-sell.confirm { background: linear-gradient(180deg, #ffb07a, #ff7a4d); color: #2a0e00; animation: mkPulse 1.2s ease-in-out infinite; }
.mk .btn:disabled { opacity: .45; filter: grayscale(.4); cursor: default; }
.mk-quick { padding: 10px 14px; border-radius: 14px; border: 2px dashed rgba(255, 201, 51, .5); background: rgba(255, 201, 51, .1); color: #ffe9a8; cursor: pointer;
  font: 600 15px/1.2 var(--font-display); }
.mk-quick:hover:not(:disabled) { background: rgba(255, 201, 51, .18); }

/* Laden */
.mk-sec { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-top: 2px; }
.mk-sec h4 { margin: 0; font: 600 18px/1.1 var(--font-display); }
.mk-sec small { font-size: 12px; font-weight: 800; color: var(--muted); }
.mk-shop { display: flex; flex-direction: column; gap: 6px; }
.mk-bait { display: flex; align-items: center; gap: 10px; padding: 7px 8px 7px 7px; border-radius: 15px; background: linear-gradient(180deg, rgba(255, 255, 255, .07), rgba(255, 255, 255, .03)); border: 1.5px solid rgba(255, 255, 255, .08); }
.mk-bait-ic { flex: none; width: 48px; height: 48px; display: grid; place-items: center; border-radius: 12px; background: radial-gradient(circle at 50% 40%, rgba(255, 255, 255, .1), rgba(10, 6, 35, .45)); }
.mk-bait-txt { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.mk-bait-txt b { font: 600 15.5px/1.1 var(--font-display); }
.mk-bait-txt small { font-size: 12px; font-weight: 700; color: var(--muted); }
.mk-stock { font-weight: 800; color: #c6ffd9; }
.mk-bait.empty .mk-stock { color: #ff9aa6; }
.mk-bait.empty { border-color: rgba(255, 77, 94, .35); }
.mk-bait.locked { opacity: .55; }
.mk-bait.locked .mk-stock { color: var(--muted); }
.mk-bait-lock { width: 40px; text-align: center; font-size: 18px; opacity: .7; }
.mk-bait-buy { display: flex; gap: 6px; flex: none; }
.mk-buy { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; min-width: 92px; min-height: 44px; padding: 5px 10px !important; }
.mk-buy span { font: 600 14px/1 var(--font-display); }
.mk-buy small { font: 800 11px/1 var(--font); opacity: .85; white-space: nowrap; }
.mk-ups { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.mk-up { display: flex; align-items: center; gap: 10px; padding: 10px; border-radius: 16px; background: linear-gradient(180deg, rgba(255, 255, 255, .08), rgba(255, 255, 255, .03)); border: 1.5px solid rgba(255, 255, 255, .1); }
.mk-up-ic { flex: none; width: 46px; height: 46px; display: grid; place-items: center; border-radius: 14px; background: rgba(8, 4, 30, .35); font-size: 24px; }
.mk-up-txt { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.mk-up-txt small { font-size: 10.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .6px; color: var(--muted); }
.mk-up-txt b { font: 600 15px/1.15 var(--font-display); }
.mk-up-txt span { font-size: 12.5px; font-weight: 700; color: #d9d3f5; }
.mk-up.max { opacity: .8; }

/* ───────── Ausrüstungs-Fenster: Köder-Vorrat (gear-ui.js) ───────── */
.gw-card-stock { position: absolute; left: 50%; top: 5px; transform: translateX(-50%); padding: 2px 7px; border-radius: 7px; white-space: nowrap;
  background: rgba(8, 4, 30, .6); color: #c6ffd9; font: 800 10px/1.2 var(--font); font-variant-numeric: tabular-nums; }
.gw-card-stock.low { color: #ffd88a; }
.gw-card-stock.empty { background: #ff4d5e; color: #fff; }
.gw-card.empty:not(.locked) .gw-card-cv { opacity: .45; filter: grayscale(.6); }
.gw-card.empty:not(.cur) { border-style: dashed; border-color: rgba(255, 77, 94, .45); }
.gw-card.next .gw-card-stock { display: none; }
.gw-pill.empty { background: #ff4d5e; color: #fff; }
.gw-stock { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; padding: 8px 10px; border-radius: 12px; background: rgba(8, 4, 30, .3); font-size: 13.5px; font-weight: 700; line-height: 1.3; }
.gw-stock-ic { font-size: 16px; }
.gw-stock-t { flex: 1; min-width: 160px; }
.gw-stock.low { background: rgba(255, 201, 51, .12); color: #ffe9a8; }
.gw-stock.empty { background: rgba(255, 77, 94, .14); border: 1.5px solid rgba(255, 77, 94, .45); color: #ffd0d6; }
.gw-shop { padding: 7px 12px; border-radius: 999px; border: none; cursor: pointer; background: var(--primary); color: #1b1440; font: 600 13.5px/1.1 var(--font-display); box-shadow: 0 3px 0 rgba(0, 0, 0, .22); }
.gw-shop:active { transform: translateY(2px); box-shadow: 0 1px 0 rgba(0, 0, 0, .22); }
.gw-tab-warn { width: 17px; height: 17px; display: grid; place-items: center; border-radius: 50%; background: #ff4d5e; color: #fff; font: 800 11px/1 var(--font); font-style: normal; }

/* ───────── Ausrüstungsleiste: Vorrat am Köder-Slot (hud.js hotbar) ───────── */
.fw-hb-stock { position: absolute; top: -8px; right: -6px; min-width: 22px; padding: 2px 6px; border-radius: 8px; text-align: center;
  background: #fff; color: #1b1440; font: 800 10.5px/1.2 var(--font); font-variant-numeric: tabular-nums; box-shadow: 0 2px 0 rgba(0, 0, 0, .3); }
.fw-hb-bait.low .fw-hb-stock { background: #ffd23f; }
.fw-hb-bait.low small { color: #ffe9a8; }
.fw-hb-bait.empty .fw-hb-stock { background: #ff4d5e; color: #fff; }
.fw-hb-bait.empty small { color: #ff9aa6; }
.fw-hb-bait.empty .fw-hb-ic { filter: grayscale(.8); opacity: .6; }

/* ───────── Handy ───────── */
@media (max-width: 640px) {
  .mk-loc { margin: 0 14px 8px; font-size: 12.5px; }
  .mk-bar { padding: 8px 14px 12px; }
  .mk-grid { grid-template-columns: repeat(auto-fill, minmax(104px, 1fr)); gap: 6px; }
  .mk-fish { padding: 6px 4px; }
  .mk-fish canvas { width: 96px !important; height: 48px !important; }
  .mk-fish-name { font-size: 13px; }
  .mk-demand-row { grid-template-columns: 1fr; gap: 5px; }
  .mk-dem { padding: 4px 8px; }
  .mk-demand-h small { margin-left: 0; width: 100%; }
  .mk-bait { flex-wrap: wrap; }
  .mk-bait-buy { width: 100%; }
  .mk-bait-buy .mk-buy { flex: 1; }
  .mk-ups { grid-template-columns: 1fr; }
  .mk-bar-act .btn { font-size: 15.5px; }
  .mk-tab-lb { display: none; }
  .mk .gw-tab { gap: 5px; }
  .mk-slot { min-height: 112px; }
}
@media (prefers-reduced-motion: reduce) {
  .mk-pop, .mk-near, .mk-btn-sell.confirm, .mk-topbtn.mk-full .fw-xbadge { animation: none !important; }
}

/* Freilassen-Glück im Eimer */
.mk-luck { align-self: center; padding: 6px 12px; border-radius: 999px; background: rgba(98, 217, 138, .16); border: 1.5px solid rgba(98, 217, 138, .45); color: #d9ffe6; font: 800 13px/1.2 var(--font); font-variant-numeric: tabular-nums; }
.mk-luck b { color: #8ff0b0; }
/* Können-Bonus (Level, Rute, Köder) unter „Heute gesucht“ */
.mk-prog { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; padding: 7px 12px; border-radius: 12px; background: rgba(255, 201, 51, .12); border: 1.5px solid rgba(255, 201, 51, .38); color: #fff4d0; font: 800 13px/1.25 var(--font); font-variant-numeric: tabular-nums; }
.mk-prog-h b { color: #ffd65a; font-size: 14.5px; }
.mk-prog small { font-weight: 700; font-size: 12px; opacity: .85; }
@media (max-width: 640px) {
  /* „Heute gesucht“ kompakt: drei kleine Kärtchen nebeneinander */
  .mk-demand { padding: 8px 9px 9px; }
  .mk-demand-row { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .mk-dem { flex-direction: column; gap: 1px; padding: 5px 4px 6px; border-left: none; border-top: 3px solid var(--rc); text-align: center; }
  .mk-dem canvas { width: 40px !important; height: 26px !important; }
  .mk-dem > span { align-items: center; max-width: 100%; }
  .mk-dem b { font-size: 12.5px; max-width: 100%; }
  .mk-dem small { font-size: 9.5px; max-width: 100%; }
}
/* (Polish P2) Materialtasche im Rucksack-Fenster (inventory-ui.js renderMats) */
.mk-mats .mk-item { min-height: 96px; }
.mk-mat canvas { margin-top: 4px; }
.mk-mat-cap { position: absolute; left: 10px; right: 10px; bottom: 6px; height: 4px; border-radius: 3px; background: rgba(0, 0, 0, .3); overflow: hidden; }
.mk-mat-cap i { display: block; height: 100%; background: linear-gradient(90deg, #9d86ff, #c8b8ff); }
.mk-mat.full { border-color: rgba(255, 157, 61, .65); }
.mk-mat.full .mk-mat-cap i { background: #ff9d3d; }
.mk-mat.full .mk-qty { background: #ff9d3d; color: #3a1d00; }
.mk-mat .mk-fish-name { margin-bottom: 6px; }

/* ===== fish-mod.css ===== */
/* Phase 1 – Agent C: Moderation (js/fishing/mod-ui.js), Chat-Erweiterungen (js/fishing/chat.js), Profil-Aktionen */

/* ---------- Inselfunk: Systemzeilen anderer Module ---------- */
.fw-msg.sys.k-admin {
  position: relative; display: block; margin: 4px 0; padding: 7px 10px 8px; border-radius: 11px; font-style: normal; font-weight: 800; font-size: 13.5px; color: #fff8dc;
  background: linear-gradient(100deg, rgba(255, 201, 51, .3), rgba(255, 140, 40, .12) 70%, rgba(255, 201, 51, .06));
  border: 1px solid rgba(255, 214, 92, .55); box-shadow: 0 0 0 3px rgba(255, 201, 51, .08), 0 4px 14px rgba(255, 170, 30, .18);
}
.fw-msg.sys.k-admin .fw-ann-k {
  display: flex; align-items: center; gap: 6px; margin-bottom: 2px; font: 800 10.5px/1.3 var(--font); letter-spacing: .6px; text-transform: uppercase; color: #ffd75e;
}
.fw-msg.sys.k-admin .fw-ann-k .ic { font-size: 13px; letter-spacing: 0; }
.fw-msg.sys.k-admin .txt { text-shadow: 0 1px 0 rgba(0, 0, 0, .35); }
.fw-msg.sys.k-admin .fw-msg-more { margin-left: auto; }
.fw-feed .fw-msg.sys.k-admin { background: linear-gradient(100deg, rgba(120, 80, 0, .82), rgba(60, 30, 80, .78)); }
.fw-msg.sys.k-event, .fw-msg.sys.k-swarm, .fw-msg.sys.k-season { font-style: normal; padding-left: 8px; border-left: 2.5px solid var(--kc); color: color-mix(in srgb, var(--kc) 55%, white); }
.fw-msg.sys.k-event { --kc: #ff8ad8; }
.fw-msg.sys.k-swarm { --kc: #6fe0ff; }
.fw-msg.sys.k-season { --kc: #ffa040; }
.fw-k-ic { margin-right: 5px; font-style: normal; }

/* ---------- Inselfunk: „⋯“-Menü an Nachrichten ---------- */
/* Desktop: schwebt rechts über der Zeile (verändert das Layout nicht), erscheint beim Darüberfahren */
.fw-chat-log .fw-msg { position: relative; }
.fw-msg-more {
  position: absolute; top: 0; right: -6px; display: grid; place-items: center; width: 26px; height: 19px; padding: 0; border: none; border-radius: 7px;
  background: rgba(40, 30, 96, .96); box-shadow: 0 0 0 1px rgba(255, 255, 255, .14); color: #ddd8ff; font: 900 13px/1 var(--font);
  cursor: pointer; opacity: 0; pointer-events: none; transition: opacity .12s, background .12s;
}
.fw-msg:hover > .fw-msg-more, .fw-msg:hover .fw-ann-k .fw-msg-more, .fw-msg-more:focus-visible, .fw-msg-more.on { opacity: 1; pointer-events: auto; }
.fw-msg-more:hover, .fw-msg-more.on { background: #4a3aa8; color: #fff; }
.fw-msg.sys.k-admin .fw-msg-more { top: 5px; right: 5px; }
/* Touch: kein Hover → dezent in der Zeile, immer antippbar */
.fw-root.touch .fw-msg-more { position: static; display: inline-grid; vertical-align: 0; margin-left: 5px; width: 28px; height: 20px; opacity: .6; pointer-events: auto; background: rgba(255, 255, 255, .1); box-shadow: none; }
.fw-root.touch .fw-msg.sys.k-admin .fw-msg-more { margin-left: auto; }
.fw-root .fw-feed .fw-msg-more { display: none; }
.fw-msg-menu {
  position: absolute; z-index: 5; min-width: 178px; padding: 5px; border-radius: 13px; display: flex; flex-direction: column; gap: 2px;
  background: rgba(29, 21, 80, .97); border: 1.5px solid rgba(255, 255, 255, .16); box-shadow: 0 10px 28px rgba(8, 4, 30, .55);
  animation: fmPop .16s cubic-bezier(.2, 1.3, .4, 1) both;
}
.fw-msg-menu button {
  display: flex; align-items: center; gap: 9px; height: 36px; padding: 0 12px 0 9px; border: none; border-radius: 9px; background: transparent;
  color: #fff; font: 700 14px/1 var(--font); text-align: left; cursor: pointer; white-space: nowrap;
}
.fw-msg-menu button .ic { width: 20px; text-align: center; font-size: 15px; }
.fw-msg-menu button:hover, .fw-msg-menu button:focus-visible { background: rgba(255, 255, 255, .1); outline: none; }
.fw-msg-menu button.danger { color: #ffb3ba; }
.fw-msg-menu button.danger:hover { background: rgba(255, 77, 94, .2); }
.fw-chat.locked .fw-chat-input { border-style: dashed; border-color: rgba(255, 140, 150, .45); color: #ffc2c8; }
.fw-chat.locked .fw-chat-input::placeholder { color: #ffb3ba; opacity: 1; }

/* ---------- Kopfleisten-Knopf ---------- */
.fm-topbtn.fm-ping { animation: fmPing 1.2s ease; }
@keyframes fmPing { 0% { box-shadow: 0 0 0 0 rgba(255, 90, 100, .9); } 100% { box-shadow: 0 0 0 14px rgba(255, 90, 100, 0); } }

/* ---------- Dialog-Ebene (eigene Ebene über Konto-Panels) ---------- */
.fm-back {
  --fm-glass: rgba(29, 21, 80, .94); --fm-line: rgba(255, 255, 255, .12); --fm-soft: rgba(255, 255, 255, .06);
  position: fixed; inset: 0; z-index: 57; display: grid; place-items: center; padding: 14px;
  padding: max(14px, env(safe-area-inset-top)) max(14px, env(safe-area-inset-right)) max(14px, env(safe-area-inset-bottom)) max(14px, env(safe-area-inset-left));
  background: rgba(8, 4, 30, .45); animation: fmFade .18s ease both; font-family: var(--font); color: #fff;
  -webkit-user-select: none; user-select: none;
}
.fm-back.out { animation: fmFade .16s ease reverse forwards; }
.fm-card {
  position: relative; width: min(440px, 100%); max-height: min(86vh, 760px); display: flex; flex-direction: column; overflow: hidden;
  padding: 14px; border-radius: 22px; background: var(--fm-glass); border: 1px solid var(--fm-line); box-shadow: var(--shadow);
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); animation: fmPop .24s cubic-bezier(.2, 1.3, .4, 1) both; outline: none;
}
.fm-card.fm-win { width: min(640px, 100%); height: min(86vh, 760px); }
@keyframes fmFade { from { opacity: 0; } to { opacity: 1; } }
@keyframes fmPop { from { opacity: 0; transform: scale(.94) translateY(6px); } to { opacity: 1; transform: none; } }

.fm-head { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; flex: none; }
.fm-head-ic { width: 40px; height: 40px; flex: none; display: grid; place-items: center; border-radius: 13px; font-size: 22px; background: rgba(255, 201, 51, .14); box-shadow: inset 0 0 0 1px rgba(255, 201, 51, .3); }
.fm-head-t { display: flex; flex-direction: column; gap: 3px; min-width: 0; flex: 1; }
.fm-head-t b { font: 600 19px/1.15 var(--font-display); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fm-head-t small { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font: 700 12.5px/1.3 var(--font); color: var(--muted); }
.fm-x { flex: none; width: 36px; height: 36px; border: none; border-radius: 11px; background: rgba(255, 255, 255, .1); color: #fff; font-size: 15px; cursor: pointer; }
.fm-x:hover { background: rgba(255, 255, 255, .18); }

.fm-role { display: inline-block; padding: 3px 7px; border-radius: 6px; font: 900 10px/1 var(--font); letter-spacing: .5px; text-transform: uppercase; }
.fm-role.r-admin { background: linear-gradient(135deg, #ffe066, #ffb02e 45%, #ff5a4e); color: #2b0d00; }
.fm-role.r-mod { background: linear-gradient(135deg, #7af0d6, #3d8bff); color: #04213a; }
.fm-role.r-user { background: rgba(255, 255, 255, .14); color: #e6e1ff; }
.fm-role.r-guest { background: rgba(255, 255, 255, .1); color: var(--muted); }

.fm-tabs { display: flex; gap: 4px; padding: 4px; margin-bottom: 10px; border-radius: 15px; background: rgba(10, 6, 35, .45); flex: none; }
.fm-tab {
  position: relative; flex: 1 1 auto; min-width: 0; display: flex; align-items: center; justify-content: center; gap: 6px; height: 40px; padding: 0 8px;
  border: none; border-radius: 11px; background: transparent; color: #cfc8f2; cursor: pointer; font: 600 14px/1 var(--font-display); transition: background .15s, color .15s;
}
.fm-tab .ic { font-size: 15px; flex: none; }
.fm-tab .lb { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fm-tab:hover { background: rgba(255, 255, 255, .08); color: #fff; }
.fm-tab.on { background: linear-gradient(180deg, #ffe066, var(--primary)); color: #2a1a00; box-shadow: 0 3px 0 rgba(0, 0, 0, .25); }
.fm-tab .n { min-width: 18px; height: 18px; padding: 0 5px; border-radius: 9px; display: grid; place-items: center; background: var(--danger); color: #fff; font: 900 11px/1 var(--font); }
.fm-tab .n.hidden { display: none; }

.fm-body { flex: 1; min-height: 0; overflow-y: auto; margin: 0 -6px; padding: 0 6px 4px; scrollbar-width: thin; scrollbar-color: rgba(255, 255, 255, .25) transparent; overscroll-behavior: contain; -webkit-user-select: text; user-select: text; }
.fm-list { display: flex; flex-direction: column; gap: 7px; }
.fm-tabv { display: flex; flex-direction: column; gap: 8px; }
.fm-loading { padding: 30px 0; text-align: center; color: var(--muted); font-weight: 800; }
.fm-empty { display: flex; flex-direction: column; align-items: center; gap: 5px; padding: 30px 12px; text-align: center; }
.fm-empty .ic { font-size: 30px; }
.fm-empty b { font: 600 17px/1.2 var(--font-display); }
.fm-empty span { font: 700 13.5px/1.35 var(--font); color: var(--muted); }
.fm-note { margin: 4px 2px 0; font: 700 12.5px/1.4 var(--font); color: var(--muted); }
.fm-muted { margin: 0 2px 6px; font: 700 13px/1.3 var(--font); color: var(--muted); }
.fm-h { display: flex; align-items: center; gap: 8px; margin: 8px 2px 2px; font: 600 15px/1.2 var(--font-display); }
.fm-h small { padding: 2px 7px; border-radius: 8px; background: rgba(255, 255, 255, .1); font: 800 11px/1.3 var(--font); color: var(--muted); }
.fm-grow { flex: 1; }

.fm-input { width: 100%; height: 40px; padding: 0 12px; font-size: 14.5px; }
.fm-text { width: 100%; min-height: 64px; padding: 9px 12px; resize: vertical; font: 600 14.5px/1.35 var(--font); }
.fm-card .input { background: rgba(10, 6, 35, .55); border: 2px solid rgba(255, 255, 255, .14); border-radius: 12px; color: #fff; outline: none; }
.fm-card .input:focus { border-color: var(--primary); }
.fm-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 12px; flex-wrap: wrap; }
.fm-actions .btn { min-width: 120px; }
.fm-row-end { display: flex; align-items: center; justify-content: flex-end; gap: 10px; margin-top: 8px; }
.fm-count { font: 800 11.5px/1 var(--font); color: var(--muted); }
.fm-card .btn.busy { opacity: .6; }

/* ---------- Melden ---------- */
.fm-rgrid { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin-bottom: 10px; }
.fm-rchip {
  display: flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 12px; border: 2px solid rgba(255, 255, 255, .1); border-radius: 13px;
  background: var(--fm-soft); color: #fff; font: 700 14px/1.2 var(--font); text-align: left; cursor: pointer; transition: background .12s, border-color .12s, transform .12s;
}
.fm-rchip .ic { font-size: 18px; }
.fm-rchip:hover { background: rgba(255, 255, 255, .11); }
.fm-rchip.on { border-color: #ff8a95; background: rgba(255, 77, 94, .18); }
.fm-rchip:last-child:nth-child(odd) { grid-column: span 2; }

/* ---------- Maßnahmen ---------- */
.fm-act-body { flex: 1; min-height: 0; overflow-y: auto; display: flex; flex-direction: column; gap: 10px; margin: 0 -4px; padding: 0 4px 2px; overscroll-behavior: contain; }
.fm-status { display: flex; flex-wrap: wrap; gap: 6px; margin: -2px 0 10px; }
.fm-status:empty { display: none; }
.fm-pill { display: inline-flex; align-items: center; gap: 6px; padding: 5px 10px; border-radius: 10px; font: 800 12.5px/1.2 var(--font); background: rgba(255, 255, 255, .1); }
.fm-pill em { font-style: normal; font-weight: 700; opacity: .85; }
.fm-pill em::before { content: '· '; }
.fm-pill.mute { background: rgba(255, 138, 149, .18); color: #ffc2c8; }
.fm-pill.ban { background: rgba(255, 77, 94, .26); color: #ffd0d4; }
.fm-pill.on { background: rgba(51, 209, 122, .18); color: #b5f5d0; }
.fm-pill.sm { padding: 3px 7px; font-size: 11.5px; border-radius: 8px; }
.fm-sub-t { color: var(--muted); }
.fm-quick { display: flex; gap: 6px; flex-wrap: wrap; }
.fm-why { margin: 0; padding: 10px 12px; border-radius: 12px; background: var(--fm-soft); font: 700 13.5px/1.4 var(--font); color: #e6e1ff; }
.fm-sec { display: flex; flex-direction: column; gap: 7px; padding: 11px; border-radius: 15px; background: var(--fm-soft); border: 1px solid rgba(255, 255, 255, .06); }
.fm-sec h4 { display: flex; align-items: baseline; gap: 8px; margin: 0; font: 600 15px/1.2 var(--font-display); }
.fm-sec h4 small { font: 700 12px/1 var(--font); color: var(--muted); }
.fm-sec h4 + .fm-envrow { margin-bottom: 4px; }
.fm-reason { display: flex; flex-direction: column; gap: 5px; }
.fm-qr { display: flex; flex-wrap: wrap; gap: 4px; }
.fm-qchip { padding: 5px 9px; border: none; border-radius: 9px; background: rgba(255, 255, 255, .08); color: #ddd8ff; font: 700 12px/1 var(--font); cursor: pointer; }
.fm-qchip:hover { background: rgba(255, 255, 255, .16); color: #fff; }
.fm-row3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
.fm-row3 .btn, .fm-wide { width: 100%; padding-left: 6px; padding-right: 6px; }
.fm-segs { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; }
.fm-seg-l { font: 800 12px/1 var(--font); color: var(--muted); margin-right: 2px; }
.fm-seg { height: 32px; padding: 0 10px; border: 2px solid rgba(255, 255, 255, .1); border-radius: 10px; background: transparent; color: #ddd8ff; font: 800 12.5px/1 var(--font); cursor: pointer; }
.fm-seg:hover { background: rgba(255, 255, 255, .08); }
.fm-seg.on { border-color: #ff8a95; background: rgba(255, 77, 94, .2); color: #fff; }

/* ---------- Meldungen ---------- */
.fm-rep { display: flex; flex-direction: column; gap: 6px; padding: 11px 12px; border-radius: 15px; background: var(--fm-soft); border: 1px solid rgba(255, 255, 255, .07); border-left: 3px solid #ff6b78; }
.fm-rep.done { border-left-color: rgba(51, 209, 122, .7); opacity: .78; }
.fm-rep-top { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.fm-rep-name { font: 600 16px/1.2 var(--font-display); max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fm-rchip-s { padding: 3px 8px; border-radius: 8px; background: rgba(255, 77, 94, .2); color: #ffc2c8; font: 800 11.5px/1.2 var(--font); }
.fm-rchip-s.r-auto { background: rgba(125, 179, 255, .2); color: #cfe2ff; }
.fm-hits { padding: 3px 7px; border-radius: 8px; background: var(--danger); color: #fff; font: 900 11.5px/1.2 var(--font); }
.fm-ago { margin-left: auto; font: 700 12px/1 var(--font); color: var(--muted); white-space: nowrap; }
.fm-rep-meta { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font: 700 12px/1.3 var(--font); color: var(--muted); }
.fm-rep-text { margin: 0; padding: 7px 10px; border-radius: 10px; background: rgba(0, 0, 0, .18); font: 700 13.5px/1.4 var(--font); color: #f2efff; overflow-wrap: anywhere; }
.fm-ctx { display: flex; flex-direction: column; gap: 2px; padding: 6px 8px; border-radius: 10px; background: rgba(10, 6, 35, .4); }
.fm-ctx.none { font: 700 12px/1.3 var(--font); color: var(--muted); }
.fm-cline { display: flex; gap: 8px; font: 700 13px/1.35 var(--font); color: #ddd8ff; overflow-wrap: anywhere; padding: 1px 4px; border-radius: 6px; }
.fm-cline time { flex: none; font: 800 11px/1.6 var(--font); color: var(--muted); font-variant-numeric: tabular-nums; }
.fm-cline.hit { background: rgba(255, 77, 94, .2); color: #fff; }
.fm-rep-res { font: 700 12.5px/1.3 var(--font); color: #b5f5d0; }
.fm-rep-acts { display: flex; justify-content: flex-end; gap: 6px; flex-wrap: wrap; }
.fm-note-in { height: 36px; }
.fm-note-in.hidden { display: none; }
.fm-done { margin-top: 6px; }
.fm-done summary { cursor: pointer; padding: 8px 4px; font: 800 13px/1 var(--font); color: var(--muted); }
.fm-done[open] summary { margin-bottom: 6px; }
.fm-done > .fm-rep + .fm-rep { margin-top: 7px; }

/* ---------- Spieler ---------- */
.fm-bar { display: flex; align-items: center; gap: 10px; }
.fm-search { flex: 1; }
.fm-plist { gap: 4px; }
.fm-prow {
  display: flex; align-items: center; gap: 8px; min-height: 44px; padding: 4px 12px; border: none; border-radius: 12px; background: var(--fm-soft);
  color: #fff; text-align: left; cursor: pointer; font-family: var(--font); transition: background .12s;
}
.fm-prow:hover:not(:disabled) { background: rgba(255, 255, 255, .12); }
.fm-prow:disabled { cursor: default; opacity: 1; }
.fm-prow.me { background: rgba(255, 201, 51, .12); }
.fm-dot { width: 12px; height: 12px; flex: none; border-radius: 50%; background: var(--pc); box-shadow: 0 0 0 2px rgba(255, 255, 255, .2); }
.fm-pn { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 600 15px/1.2 var(--font-display); color: color-mix(in srgb, var(--pc) 55%, white); }
.fm-me { flex: none; padding: 3px 6px; border-radius: 6px; background: var(--primary); color: #1b1440; font: 800 10px/1 var(--font); font-style: normal; text-transform: uppercase; }
.fm-flag { font-size: 14px; }
.fm-inst { margin-left: auto; flex: none; padding: 3px 7px; border-radius: 7px; background: rgba(255, 255, 255, .1); font: 800 11px/1.2 var(--font); color: var(--muted); }

/* ---------- Strafen & Protokoll ---------- */
.fm-srow { display: flex; align-items: center; gap: 10px; padding: 9px 12px; border-radius: 13px; background: var(--fm-soft); }
.fm-srow-t { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
.fm-srow-t b { display: flex; align-items: center; gap: 6px; font: 600 15px/1.2 var(--font-display); }
.fm-srow-t span { font: 700 12px/1.3 var(--font); color: var(--muted); }
.fm-srow-t em { font: 700 12.5px/1.3 var(--font); font-style: normal; color: #ffc2c8; overflow-wrap: anywhere; }
.fm-log { gap: 3px; }
.fm-lrow { display: flex; align-items: flex-start; gap: 9px; padding: 7px 10px; border-radius: 11px; background: var(--fm-soft); }
.fm-lic { flex: none; width: 22px; text-align: center; font-size: 16px; line-height: 1.3; }
.fm-lt { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; font: 700 13.5px/1.35 var(--font); color: #ddd8ff; overflow-wrap: anywhere; }
.fm-lt b { color: #fff; font-weight: 800; }
.fm-lt small { font: 700 12px/1.35 var(--font); color: var(--muted); }
.fm-lrow time { flex: none; font: 800 11.5px/1.5 var(--font); color: var(--muted); white-space: nowrap; font-variant-numeric: tabular-nums; }

/* ---------- Werkzeuge ---------- */
.fm-tools { gap: 10px; }
.fm-envrow { display: grid; grid-template-columns: repeat(5, 1fr); gap: 5px; }
.fm-envb {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; min-height: 58px; padding: 6px 2px; border: 2px solid rgba(255, 255, 255, .1);
  border-radius: 13px; background: transparent; color: #ddd8ff; font: 800 11.5px/1.1 var(--font); cursor: pointer; transition: background .12s, border-color .12s;
}
.fm-envb .ic { font-size: 21px; }
.fm-envb:hover { background: rgba(255, 255, 255, .08); }
.fm-envb.on { border-color: var(--primary); background: rgba(255, 201, 51, .16); color: #fff; }
.fm-obs { flex-direction: row; align-items: center; gap: 12px; }
.fm-obs-t { display: flex; flex-direction: column; gap: 4px; flex: 1; }
.fm-obs-t b { font: 600 15px/1.2 var(--font-display); }
.fm-obs-t small { font: 700 12.5px/1.4 var(--font); color: var(--muted); }
.fm-switch { position: relative; flex: none; width: 54px; height: 32px; border: none; border-radius: 16px; background: rgba(255, 255, 255, .16); cursor: pointer; transition: background .18s; }
.fm-switch i { position: absolute; top: 4px; left: 4px; width: 24px; height: 24px; border-radius: 50%; background: #fff; box-shadow: 0 2px 4px rgba(0, 0, 0, .3); transition: transform .2s cubic-bezier(.3, 1.4, .5, 1); }
.fm-switch.on { background: linear-gradient(180deg, #b48cff, #7a4dff); }
.fm-switch.on i { transform: translateX(22px); }

/* ---------- Rauswurf-Hinweis ---------- */
.fm-card.fm-kicked { width: min(400px, 100%); align-items: center; text-align: center; padding: 22px 20px 20px; }
.fm-kick-ic { width: 64px; height: 64px; display: grid; place-items: center; margin-bottom: 6px; border-radius: 20px; font-size: 34px; background: rgba(255, 77, 94, .18); box-shadow: inset 0 0 0 1.5px rgba(255, 138, 149, .4); }
.fm-kicked h3 { margin: 4px 0 6px; font: 600 21px/1.2 var(--font-display); }
.fm-kicked p { margin: 0 0 6px; font: 700 14.5px/1.45 var(--font); color: #f2efff; overflow-wrap: anywhere; }
.fm-kicked .fm-note { margin-bottom: 14px; }
.fm-kicked .btn { min-width: 160px; }

/* ---------- Profil (fremdes Konto) ---------- */
.pf-modslot { display: contents; }
.fm-pf { display: flex; justify-content: flex-end; flex: 0 0 auto; }
.fm-pf.team { flex: 1 1 100%; }
.fm-pf-team {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap; width: 100%; padding: 8px 10px; border-radius: 14px;
  background: rgba(61, 139, 255, .1); border: 1px solid rgba(125, 179, 255, .25);
}
.fm-pf-k { font: 800 12.5px/1 var(--font); color: #cfe2ff; }
.fm-pf-st { display: flex; flex-wrap: wrap; gap: 5px; }
.fm-pf-st .fm-muted { margin: 0; font-size: 12px; }

/* ---------- Handy ---------- */
@media (max-width: 520px) {
  .fm-back { padding: 8px; align-items: end; }
  .fm-card { border-radius: 20px; max-height: 90vh; padding: 12px; }
  .fm-card.fm-win { height: 90vh; }
  .fm-tab { flex-direction: column; gap: 3px; height: 48px; padding: 0 2px; font-size: 11px; }
  .fm-tab .ic { font-size: 17px; }
  .fm-tab .n { position: absolute; top: 2px; right: 4px; }
  .fm-rgrid { grid-template-columns: 1fr; }
  .fm-rchip:last-child:nth-child(odd) { grid-column: auto; }
  .fm-envb { min-height: 52px; font-size: 10.5px; }
  .fm-head-t b { font-size: 17px; }
  .fm-actions .btn { flex: 1; min-width: 0; }
}

/* Info-Karte eines Gasts: Maßnahmen (Team) und Melden */
.fm-card-act { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 6px; pointer-events: auto; }

/* ===== fish-events.css ===== */
/* Phase 1 – Agent D: Insel-Events (js/fishing/event-ui.js, js/fish-event-banner.js, Event-Liste in leaderboard.js) */

/* ---------- Inselfunk: Event-Meldungen ---------- */
.fw-msg.sys.k-event { color: #ffc6ec; font-style: normal; font-weight: 800; }

/* ---------- Teamfarbe über der Figur ---------- */
.fw-tag[data-fev-team] { border-bottom-color: var(--fev-tc); box-shadow: 0 0 0 2px var(--fev-tc), 0 2px 8px rgba(0, 0, 0, .25); }
.fw-tag[data-fev-team]::before {
  content: ''; width: 9px; height: 12px; flex: none; margin-left: -3px; background: var(--fev-tc);
  clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 72%, 0 100%); filter: drop-shadow(0 1px 0 rgba(0, 0, 0, .35));
}
.fw-tag.me[data-fev-team] { box-shadow: 0 0 0 2.5px var(--fev-tc), 0 2px 8px rgba(0, 0, 0, .25); }

/* ---------- Timer-Leiste oben ---------- */
.fev-bar {
  position: absolute; z-index: 18; top: calc(62px + var(--safe-t)); left: 50%; transform: translateX(-50%);
  display: flex; align-items: center; gap: 9px; max-width: min(560px, calc(100% - 20px)); padding: 6px 14px 9px 10px;
  border: 1.5px solid rgba(255, 107, 203, .55); border-radius: 16px; cursor: pointer; color: #fff; text-align: left;
  background: linear-gradient(135deg, rgba(74, 31, 110, .9), rgba(43, 29, 107, .9)); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  box-shadow: var(--fw-shadow), 0 0 0 4px rgba(255, 107, 203, .08); overflow: hidden;
  animation: fevDrop .45s cubic-bezier(.2, 1.3, .4, 1) both; transition: filter .15s;
}
.fw-root:has(.fw-banner:not(.hidden)) .fev-bar { top: calc(124px + var(--safe-t)); }
/* (Feinschliff) Desktop: links oben unter der Muschel-Pille statt oben mittig – dort verdeckte sie im Spawn-Blick den
   Bannerkopf der Bestenlisten-Tafel. Kompakt, eine Spalte mit der Pille (fish-economy.css .ew). */
@media (min-width: 761px) {
  .fev-bar { top: calc(var(--fw-top-h, 54px) + 56px); left: calc(10px + var(--safe-l)); transform: none; max-width: min(360px, calc(100% - 20px)); padding: 5px 12px 8px 9px; animation-name: fevDropL; }
  .fw-root:has(.fw-banner:not(.hidden)) .fev-bar { top: calc(var(--fw-top-h, 54px) + 56px); }
  .fev-bar-name { font-size: 14px; }
  .fev-bar-sub { font-size: 11.5px; }
  /* „Willkommen zurück“ (wallet-ui.js) kommt dann unter der Leiste */
  .fw-root:has(.fev-bar:not(.hidden)) .ew-note { top: calc(var(--fw-top-h, 54px) + 112px); }
}
@media (min-width: 761px) and (max-width: 1100px) {
  /* schmaler Desktop: das Lobby-Banner (oben mittig, bis 760 px breit) kann bis in die linke Spalte reichen */
  .fw-root:has(.fw-banner:not(.hidden)) .fev-bar { top: calc(124px + var(--safe-t)); }
}
/* (QA P3) Tablet hochkant (761–960 px): das Lobby-Banner ist so breit, dass es über Muschel-Pille und Event-Leiste reicht –
   beide rutschen darunter (fish-nature.css setzt den Inselriesen-Balken passend darunter) */
@media (min-width: 761px) and (max-width: 960px) {
  .fw-root:has(.fw-banner:not(.hidden)) .ew { top: calc(var(--fw-top-h, 54px) + 76px); }
  .fw-root:has(.fw-banner:not(.hidden)) .fev-bar { top: calc(var(--fw-top-h, 54px) + 122px); }
}
@keyframes fevDropL { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: none; } }
.fev-bar:hover { filter: brightness(1.12); }
.fev-bar.cd { border-color: rgba(255, 201, 51, .7); }
.fev-bar.done { border-color: rgba(255, 201, 51, .8); background: linear-gradient(135deg, rgba(120, 80, 10, .9), rgba(74, 31, 110, .9)); }
.fev-bar-ic { font-size: 21px; line-height: 1; flex: none; letter-spacing: -3px; padding-right: 3px; }
.fev-bar.live .fev-bar-ic { animation: fevBob 2.4s ease-in-out infinite; }
.fev-bar-tx { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.fev-bar-name { font: 600 15px/1.15 var(--font-display); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fev-bar-sub { font: 800 12px/1.2 var(--font); color: #ffd9f0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fev-bar-time { font-variant-numeric: tabular-nums; }
.fev-bar.cd .fev-bar-sub { color: #ffe48a; }
.fev-bar-me { margin-left: 4px; color: #fff; }
.fev-bar-track { position: absolute; left: 10px; right: 10px; bottom: 3px; height: 3px; border-radius: 3px; background: rgba(255, 255, 255, .12); overflow: hidden; }
.fev-bar-prog { display: block; height: 100%; width: 0; background: linear-gradient(90deg, #ff6bcb, #ffd23f); border-radius: inherit; transition: width .3s linear; }
.fev-bar.cd .fev-bar-track, .fev-bar.done .fev-bar-track { display: none; }
@keyframes fevDrop { from { opacity: 0; transform: translate(-50%, -12px); } to { opacity: 1; transform: translate(-50%, 0); } }
@keyframes fevBob { 0%, 100% { transform: translateY(0) rotate(0); } 50% { transform: translateY(-2px) rotate(-6deg); } }

/* ---------- Rückmeldung nach dem Fang ---------- */
.fev-pop {
  position: absolute; z-index: 18; top: calc(118px + var(--safe-t)); left: 50%; transform: translate(-50%, -6px); opacity: 0;
  padding: 7px 14px; border-radius: 999px; background: linear-gradient(180deg, #ff8fd6, #e0459f); color: #fff; pointer-events: none !important;
  font: 600 14px/1.2 var(--font-display); white-space: nowrap; box-shadow: 0 6px 18px rgba(120, 10, 70, .4); text-shadow: 0 1px 0 rgba(90, 0, 50, .4);
  max-width: calc(100% - 24px); overflow: hidden; text-overflow: ellipsis;
}
.fw-root:has(.fw-banner:not(.hidden)) .fev-pop { top: calc(180px + var(--safe-t)); }
.fev-pop.show { animation: fevPop 3.2s ease both; }
@keyframes fevPop { 0% { opacity: 0; transform: translate(-50%, -6px) scale(.8); } 8% { opacity: 1; transform: translate(-50%, 0) scale(1.06); } 14% { transform: translate(-50%, 0) scale(1); } 85% { opacity: 1; } 100% { opacity: 0; transform: translate(-50%, -6px); } }

/* ---------- Panel: Live-Rangliste ---------- */
.fev-panel {
  top: calc(116px + var(--safe-t)); right: calc(10px + var(--safe-r)); width: 340px; max-height: calc(100% - 230px - var(--safe-t) - var(--safe-b));
  display: flex; flex-direction: column; padding: 12px 12px 10px; animation: fevIn .25s ease both;
}
.fw-root:has(.fw-banner:not(.hidden)) .fev-panel { top: calc(176px + var(--safe-t)); }
@keyframes fevIn { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
.fev-p-head b { font: 600 16px/1.2 var(--font-display); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fev-p-body { overflow-y: auto; overscroll-behavior: contain; display: flex; flex-direction: column; gap: 8px; padding-right: 2px; }
.fev-p-time { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; font: 600 15px/1 var(--font-display); color: #ffd9f0; font-variant-numeric: tabular-nums; }
.fev-p-time.cd { color: #ffe48a; }
.fev-p-time span { font: 800 11.5px/1 var(--font); color: var(--muted); }
.fev-desc { margin: 0; font: 700 12.5px/1.35 var(--font); color: #e6e1ff; }
.fev-sec { font: 800 11px/1 var(--font); letter-spacing: .5px; text-transform: uppercase; color: var(--muted); margin-top: 4px; }
.fev-note { margin: 0; font: 700 11.5px/1.35 var(--font); color: var(--muted); }
.fev-empty { padding: 12px 6px; text-align: center; font: 700 13px/1.35 var(--font); color: var(--muted); }
.fev-target { display: flex; align-items: center; gap: 9px; padding: 7px 10px; border-radius: 12px; background: rgba(255, 255, 255, .06); border-left: 3px solid var(--rc); }
.fev-target .fev-fish { width: 64px; height: 34px; flex: none; }
.fev-target span { display: flex; flex-direction: column; min-width: 0; }
.fev-target small { font: 800 10.5px/1.2 var(--font); text-transform: uppercase; letter-spacing: .4px; color: var(--muted); }
.fev-target b { font: 600 15px/1.2 var(--font-display); color: var(--rc); }
.fev-target em { font: 700 11.5px/1.25 var(--font); font-style: normal; color: #d9d3f5; }
.fev-comm { padding: 8px 10px; border-radius: 12px; background: rgba(255, 255, 255, .06); }
.fev-comm-t { display: flex; justify-content: space-between; gap: 8px; font: 800 12px/1.2 var(--font); margin-bottom: 6px; }
.fev-comm-t b { font-variant-numeric: tabular-nums; color: #ffe48a; }
.fev-comm-bar { height: 9px; border-radius: 6px; background: rgba(0, 0, 0, .3); overflow: hidden; }
.fev-comm-bar i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #4fd0ff, #5ee39a); transition: width .4s ease; }
.fev-comm.hit .fev-comm-bar i { background: linear-gradient(90deg, #5ee39a, #ffd23f); }
.fev-teams { display: flex; flex-direction: column; gap: 5px; }
.fev-team { display: grid; grid-template-columns: 96px 1fr auto; align-items: center; gap: 8px; padding: 5px 8px; border-radius: 10px; background: rgba(255, 255, 255, .05); }
.fev-team.mine { background: color-mix(in srgb, var(--tc) 22%, transparent); box-shadow: inset 0 0 0 1.5px var(--tc); }
.fev-team .nm { font: 600 13.5px/1.1 var(--font-display); color: var(--tc); display: flex; flex-direction: column; }
.fev-team .nm em { font: 800 10px/1.2 var(--font); font-style: normal; color: #fff; opacity: .8; }
.fev-team .bar { height: 8px; border-radius: 5px; background: rgba(0, 0, 0, .3); overflow: hidden; }
.fev-team .bar i { display: block; height: 100%; background: var(--tc); border-radius: inherit; transition: width .4s ease; }
.fev-team b { font: 600 15px/1 var(--font-display); font-variant-numeric: tabular-nums; }
.fev-rows { display: flex; flex-direction: column; gap: 3px; }
.fev-row { display: grid; grid-template-columns: 26px 26px 1fr auto; align-items: center; gap: 7px; padding: 4px 8px 4px 4px; border-radius: 10px; background: rgba(255, 255, 255, .045); border-left: 3px solid var(--tc, transparent); }
.fev-row .rk { width: 24px; height: 24px; border-radius: 50%; display: grid; place-items: center; font: 600 13px/1 var(--font-display); background: rgba(255, 255, 255, .12); }
.fev-row.r1 .rk { background: radial-gradient(circle at 35% 30%, #fff3a8, #ffc933 60%, #c98a00); color: #3a2400; }
.fev-row.r2 .rk { background: radial-gradient(circle at 35% 30%, #fff, #d5dbe6 60%, #8a94a8); color: #2a2f3a; }
.fev-row.r3 .rk { background: radial-gradient(circle at 35% 30%, #ffd2a8, #e0915a 60%, #9a5428); color: #3a1a00; }
.fev-row canvas { border-radius: 6px; }
.fev-row .who { min-width: 0; display: flex; flex-wrap: wrap; align-items: baseline; column-gap: 5px; }
.fev-row .nm { font: 600 13.5px/1.2 var(--font-display); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.fev-row .who em { font: 800 10px/1.2 var(--font); font-style: normal; padding: 1px 5px; border-radius: 6px; background: rgba(255, 255, 255, .12); color: var(--muted); }
.fev-row .who em.du { background: var(--primary); color: #2a1a00; }
.fev-row .who em.ok { background: rgba(94, 227, 154, .22); color: #8ff0b8; }
.fev-row .who small { flex-basis: 100%; font: 800 11px/1.2 var(--font); color: var(--rc); }
.fev-row > b { font: 600 14px/1 var(--font-display); color: #ffe066; font-variant-numeric: tabular-nums; white-space: nowrap; }
.fev-row.me { background: rgba(255, 201, 51, .16); box-shadow: inset 0 0 0 1.5px rgba(255, 201, 51, .7); }
.fev-row.guest { opacity: .55; }
.fev-row.static { grid-template-columns: 26px 1fr auto; margin-top: 2px; }
.fev-rew { padding: 8px 10px; border-radius: 12px; background: rgba(255, 201, 51, .08); font: 700 12px/1.45 var(--font); color: #f1ecff; }
.fev-rew .fev-sec { margin: 0 0 3px; color: #ffe48a; }

/* Bingo-Karte */
.fev-bingo-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 5px; margin-top: 6px; }
.fev-cell {
  position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; min-height: 62px; padding: 5px 4px;
  border-radius: 10px; background: rgba(255, 255, 255, .07); border: 1px solid rgba(255, 255, 255, .1); text-align: center;
}
.fev-cell .ic { font-size: 18px; line-height: 1; }
.fev-cell .tx { font: 800 10.5px/1.2 var(--font); color: #e6e1ff; }
.fev-cell.on { background: linear-gradient(180deg, rgba(94, 227, 154, .35), rgba(51, 209, 122, .2)); border-color: rgba(94, 227, 154, .8); }
.fev-cell.on::after {
  content: '✓'; position: absolute; top: 3px; right: 5px; font: 700 13px/1 var(--font-display); color: #8ff0b8;
}

/* ---------- Ergebnis-Karte / Siegerehrung ---------- */
.fev-res-back { position: absolute; inset: 0; z-index: 45; display: grid; place-items: center; padding: 16px; background: rgba(10, 6, 35, .35); animation: fevFade .3s ease both; }
@keyframes fevFade { from { opacity: 0; } to { opacity: 1; } }
.fev-res {
  position: relative; width: min(440px, 100%); max-height: calc(100% - 20px); overflow: hidden auto; padding: 18px 18px 16px; border-radius: 22px; text-align: center;
  background: linear-gradient(180deg, #3b2a8a, #241a5e); border: 2px solid rgba(255, 201, 51, .6); box-shadow: 0 20px 60px rgba(0, 0, 0, .5), 0 0 0 6px rgba(255, 201, 51, .08);
  animation: fevPopIn .45s cubic-bezier(.2, 1.5, .4, 1) both;
}
@keyframes fevPopIn { from { opacity: 0; transform: scale(.85) translateY(14px); } to { opacity: 1; transform: none; } }
.fev-res-x { position: absolute; top: 10px; right: 10px; z-index: 2; }
.fev-res-kick { font: 800 12px/1 var(--font); letter-spacing: 3px; text-transform: uppercase; color: #ffd23f; }
.fev-res h3 { margin: 6px 0 12px; font: 600 23px/1.15 var(--font-display); }
.fev-res-pod { display: flex; justify-content: center; align-items: flex-end; gap: 8px; margin: 4px 0 10px; }
.fev-res-col { display: flex; flex-direction: column; align-items: center; width: 31%; min-width: 0; }
.fev-res-col .av { animation: fevHop 1.6s ease-in-out infinite; }
.fev-res-col.p2 .av { animation-delay: .3s; }
.fev-res-col.p3 .av { animation-delay: .6s; }
@keyframes fevHop { 0%, 100% { transform: translateY(0); } 40% { transform: translateY(-7px); } }
.fev-res-col .nm { font: 600 14.5px/1.15 var(--font-display); max-width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: 2px; }
.fev-res-col .val { font: 800 12px/1.2 var(--font); color: #ffe066; margin: 2px 0 5px; }
.fev-res-col .blk { width: 100%; display: grid; place-items: center; border-radius: 10px 10px 4px 4px; font-size: 24px; box-shadow: inset 0 -6px 0 rgba(0, 0, 0, .18); }
.fev-res-col.p1 .blk { height: 74px; background: linear-gradient(180deg, #ffe680, #ffc933 60%, #c98a00); }
.fev-res-col.p2 .blk { height: 54px; background: linear-gradient(180deg, #ffffff, #d5dbe6 60%, #8a94a8); }
.fev-res-col.p3 .blk { height: 40px; background: linear-gradient(180deg, #ffd2a8, #e0915a 60%, #9a5428); }
.fev-res-teams { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; margin-bottom: 8px; }
.fev-res-teams span { padding: 4px 10px; border-radius: 999px; font: 800 12.5px/1.2 var(--font); background: color-mix(in srgb, var(--tc) 25%, transparent); border: 1.5px solid var(--tc); }
.fev-res-teams span.win { background: var(--tc); color: #fff; text-shadow: 0 1px 0 rgba(0, 0, 0, .3); }
.fev-res-goal { font: 800 12.5px/1.3 var(--font); color: var(--muted); margin-bottom: 6px; }
.fev-res-goal.hit { color: #8ff0b8; }
.fev-res-sum { margin: 6px 0 10px; font: 700 13px/1.4 var(--font); color: #e6e1ff; }
.fev-res-none { margin: 8px 0; color: var(--muted); font-weight: 700; }
.fev-res-rew { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 9px 12px; border-radius: 14px; background: rgba(255, 201, 51, .14); border: 1px solid rgba(255, 201, 51, .4); font: 800 13px/1.3 var(--font); text-align: left; }
.fev-res-rew b { font: 600 17px/1 var(--font-display); color: #ffe066; white-space: nowrap; }
.fev-res-rew.guest, .fev-res-rew.muted { display: block; background: rgba(255, 255, 255, .07); border-color: rgba(255, 255, 255, .14); color: var(--muted); }
.fev-res-hint { margin: 10px 0 0; font: 700 12px/1.3 var(--font); color: var(--muted); }
.fev-confetti { position: absolute; inset: 0; pointer-events: none; overflow: hidden; }
.fev-confetti i { position: absolute; top: -14px; width: 8px; height: 13px; border-radius: 2px; opacity: 0; animation-name: fevConf; animation-timing-function: cubic-bezier(.3, .6, .5, 1); animation-fill-mode: both; }
@keyframes fevConf { 0% { opacity: 1; translate: 0 0; rotate: 0deg; } 100% { opacity: 0; translate: 30px 520px; rotate: 540deg; } }

/* ---------- Event-Pult (Modal) ---------- */
.modal.fev-modal { max-width: 720px; padding: 16px 16px 14px; }
.fev-pult { display: flex; flex-direction: column; gap: 10px; text-align: left; }
.fev-pult-head { display: flex; align-items: center; gap: 10px; }
.fev-pult-head h3 { margin: 0; font: 600 22px/1.1 var(--font-display); text-align: left; flex: 1; }
.fev-role { padding: 4px 10px; border-radius: 999px; font: 800 11px/1 var(--font); letter-spacing: .5px; text-transform: uppercase; background: rgba(61, 139, 255, .25); color: #cfe3ff; }
.fev-role.admin { background: rgba(255, 201, 51, .22); color: #ffe48a; }
.fev-curbox { padding: 10px 12px; border-radius: 14px; background: linear-gradient(135deg, rgba(255, 107, 203, .16), rgba(61, 139, 255, .12)); border: 1px solid rgba(255, 107, 203, .4); display: flex; flex-direction: column; gap: 8px; }
.fev-cur-t { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 6px; align-items: baseline; }
.fev-cur-t b { font: 600 16px/1.2 var(--font-display); }
.fev-cur-t span { font: 800 12.5px/1 var(--font); color: #ffd9f0; font-variant-numeric: tabular-nums; }
.fev-cur-a { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.fev-cur-a .lb { font: 800 12px/1 var(--font); color: var(--muted); }
.fev-cancel { margin-left: auto; background: rgba(255, 77, 94, .2); border: 1px solid rgba(255, 77, 94, .6); color: #ffd0d5; }
.fev-cancel[data-sure] { background: var(--danger); color: #fff; }
.fev-tabs { display: flex; gap: 4px; padding: 3px; border-radius: 12px; background: rgba(0, 0, 0, .22); overflow-x: auto; }
.fev-tab { flex: 1 0 auto; padding: 8px 10px; border: none; border-radius: 9px; background: transparent; color: var(--muted); font: 600 14px/1 var(--font-display); cursor: pointer; white-space: nowrap; }
.fev-tab.on { background: rgba(255, 255, 255, .14); color: #fff; }
.fev-pult-body { display: flex; flex-direction: column; gap: 8px; max-height: min(62vh, 620px); overflow-y: auto; overscroll-behavior: contain; padding-right: 2px; }
.fev-types { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 6px; }
.fev-type {
  display: flex; align-items: center; gap: 8px; padding: 8px 10px; border-radius: 12px; border: 1.5px solid rgba(255, 255, 255, .14);
  background: rgba(255, 255, 255, .06); color: #fff; cursor: pointer; text-align: left; transition: transform .12s, background .15s, border-color .15s;
}
.fev-type:hover:not(:disabled) { transform: translateY(-1px); background: rgba(255, 255, 255, .1); }
.fev-type.on { border-color: var(--primary); background: rgba(255, 201, 51, .16); box-shadow: 0 0 0 3px rgba(255, 201, 51, .12); }
.fev-type.locked { opacity: .45; cursor: not-allowed; }
.fev-type .ic { font-size: 22px; line-height: 1; flex: none; }
.fev-type .tx { display: flex; flex-direction: column; min-width: 0; }
.fev-type b { font: 600 14px/1.15 var(--font-display); }
.fev-type small { font: 700 11px/1.2 var(--font); color: var(--muted); }
.fev-opts { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 8px; }
.fev-field { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.fev-field .lb { font: 800 12px/1 var(--font); color: #e6e1ff; }
.fev-field small { font: 700 11px/1.25 var(--font); color: var(--muted); }
.fev-in { width: 100%; min-height: 40px; padding: 8px 10px; font-size: 14px; }
select.fev-in { cursor: pointer; }
.fev-seg { display: flex; flex-wrap: wrap; gap: 5px; }
.fev-chip { padding: 8px 12px; border-radius: 10px; border: 1.5px solid rgba(255, 255, 255, .16); background: rgba(255, 255, 255, .06); color: #fff; font: 600 13.5px/1 var(--font-display); cursor: pointer; white-space: nowrap; }
.fev-chip:hover:not(:disabled) { background: rgba(255, 255, 255, .12); }
.fev-chip.on { border-color: var(--primary); background: rgba(255, 201, 51, .2); color: #ffe48a; }
.fev-chip:disabled { opacity: .4; cursor: not-allowed; }
.fev-plan { display: grid; grid-template-columns: 1fr auto; gap: 10px; align-items: end; padding: 10px; border-radius: 12px; background: rgba(255, 255, 255, .05); }
.fev-check { display: flex; align-items: center; gap: 7px; font: 800 13px/1.2 var(--font); cursor: pointer; padding-bottom: 10px; }
.fev-check input { width: 18px; height: 18px; accent-color: var(--primary); }
.fev-msg { min-height: 0; font: 800 13px/1.3 var(--font); color: #ff9aa5; }
.fev-msg:empty { display: none; }
.fev-msg.ok { color: #8ff0b8; }
.fev-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; margin-top: 2px; }
.fev-list { display: flex; flex-direction: column; gap: 5px; }
.fev-li { display: flex; align-items: center; gap: 9px; padding: 8px 10px; border-radius: 12px; background: rgba(255, 255, 255, .06); }
.fev-li .ic { font-size: 18px; flex: none; letter-spacing: -2px; min-width: 30px; }
.fev-li .tx { display: flex; flex-direction: column; flex: 1; min-width: 0; }
.fev-li b { font: 600 14.5px/1.2 var(--font-display); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fev-li small { font: 700 11.5px/1.3 var(--font); color: var(--muted); }
.fev-li small.top { color: #ffe48a; }
.fev-li.locked { opacity: .55; }
.fev-li.off b { text-decoration: line-through; opacity: .7; }

/* ---------- Bestenliste (leaderboard.js): Event-Liste ---------- */
.fw-lb-row.guest { opacity: .55; }
.fw-lb-row .fw-lb-guest, .fw-lb-row .fw-lb-done { font-style: normal; font: 800 10px/1.2 var(--font); padding: 1px 5px; border-radius: 6px; margin-left: 4px; background: rgba(255, 255, 255, .12); color: var(--muted); }
.fw-lb-row .fw-lb-done { background: rgba(94, 227, 154, .22); color: #8ff0b8; }
.fw-lb-row.team.t0 { box-shadow: inset 3px 0 0 #ff4d5e; }
.fw-lb-row.team.t1 { box-shadow: inset 3px 0 0 #3d8bff; }
.fw-lb-row.team.t2 { box-shadow: inset 3px 0 0 #33d17a; }
.fw-lb-row.team.t3 { box-shadow: inset 3px 0 0 #ffc933; }

/* ---------- Banner auf Startseite und in der Warte-Lobby ---------- */
.feb {
  position: relative; display: flex; align-items: stretch; margin: 0 0 14px; border-radius: 18px; overflow: hidden;
  background: linear-gradient(120deg, rgba(255, 107, 203, .22), rgba(61, 139, 255, .18)); border: 1.5px solid rgba(255, 107, 203, .55);
  box-shadow: var(--shadow); animation: fevBan .5s cubic-bezier(.2, 1.3, .4, 1) both;
}
.feb.cd { border-color: rgba(255, 201, 51, .7); background: linear-gradient(120deg, rgba(255, 201, 51, .2), rgba(255, 107, 203, .16)); }
.feb.done { border-color: rgba(255, 201, 51, .6); background: linear-gradient(120deg, rgba(255, 201, 51, .18), rgba(43, 29, 107, .3)); }
.feb.next { border-color: rgba(255, 255, 255, .18); background: rgba(255, 255, 255, .06); box-shadow: none; }
@keyframes fevBan { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: none; } }
.feb-main { flex: 1; min-width: 0; display: flex; align-items: center; gap: 12px; padding: 10px 14px; border: none; background: transparent; color: #fff; cursor: pointer; text-align: left; font: inherit; }
.feb-main:hover .feb-go { transform: translateX(3px); background: linear-gradient(180deg, #ffe680, #ffd04d); }
.feb-ic { font-size: 28px; line-height: 1; flex: none; letter-spacing: -4px; padding-right: 4px; }
.feb.live .feb-ic, .feb.cd .feb-ic { animation: fevBob 2.4s ease-in-out infinite; }
.feb-tx { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
.feb-kick { font: 800 11.5px/1.1 var(--font); letter-spacing: .6px; text-transform: uppercase; color: #ffd9f0; font-variant-numeric: tabular-nums; }
.feb.cd .feb-kick { color: #ffe48a; }
.feb-title { font: 600 18px/1.15 var(--font-display); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.feb-sub { font: 700 12.5px/1.3 var(--font); color: #e6e1ff; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; font-variant-numeric: tabular-nums; }
.feb-go {
  flex: none; display: inline-flex; align-items: center; gap: 6px; padding: 9px 14px; border-radius: 12px;
  background: linear-gradient(180deg, #ffe066, var(--primary)); color: #2a1a00; font: 600 15px/1 var(--font-display);
  box-shadow: 0 3px 0 rgba(0, 0, 0, .25); transition: transform .15s, background .15s;
}
.feb-go i { font-style: normal; }
.feb-x { flex: none; width: 34px; border: none; border-left: 1px solid rgba(255, 255, 255, .12); background: rgba(0, 0, 0, .12); color: rgba(255, 255, 255, .7); cursor: pointer; font: 700 13px/1 var(--font); }
.feb-x:hover { background: rgba(0, 0, 0, .25); color: #fff; }
#lobby-wrap > .feb { margin: 0 0 10px; }

/* ---------- Handy ---------- */
@media (max-width: 760px) {
  /* (Feinschliff) eine Zeile mit der Muschel-Pille (fish-economy.css .ew): gleiche Oberkante und Höhe, direkt rechts daneben
     (--ew-w meldet wallet-ui.js), bis zum rechten Rand */
  .fev-bar, .fw-root:has(.fw-banner:not(.hidden)) .fev-bar {
    top: var(--ew-row, calc(108px + var(--safe-t))); height: var(--ew-h, 48px); box-sizing: border-box;
    left: calc(16px + var(--ew-w, 72px) + var(--safe-l)); right: calc(8px + var(--safe-r)); max-width: none; transform: none;
    padding: 4px 11px 7px 8px; gap: 7px; animation-name: fevDropL;
  }
}
@media (max-width: 640px) {
  .fev-bar-name { font-size: 13.5px; }
  .fev-bar-sub { font-size: 11px; }
  .fev-pop { top: calc(160px + var(--safe-t)); font-size: 13px; }
  .fev-panel { left: calc(8px + var(--safe-l)); right: calc(8px + var(--safe-r)); width: auto; top: calc(158px + var(--safe-t)); max-height: calc(100% - 300px - var(--safe-t) - var(--safe-b)); }
  .fw-root:has(.fw-banner:not(.hidden)) .fev-panel { top: calc(218px + var(--safe-t)); }
  .fev-res { padding: 16px 12px 14px; }
  .fev-res h3 { font-size: 20px; }
  .modal.fev-modal { padding: 12px 10px; }
  .fev-types { grid-template-columns: 1fr 1fr; }
  .fev-type { padding: 7px 8px; gap: 6px; }
  .fev-type .ic { font-size: 19px; }
  .fev-type b { font-size: 13px; }
  .fev-type small { font-size: 10.5px; }
  .fev-plan { grid-template-columns: 1fr; }
  .feb-main { padding: 9px 10px; gap: 9px; }
  .feb-ic { font-size: 22px; }
  .feb-title { font-size: 16px; }
  .feb-go { padding: 8px 10px; font-size: 13.5px; }
  .feb-go { font-size: 0; gap: 0; }
  .feb-go i { font-size: 16px; }
}

/* ───────── HUD-Stapel fürs Handy (Feinschliff P3, hud-stack.js) ─────────
   Touch bis 760 px: Lobby-Banner, Reise-Chip, das wichtigste Ereignis groß und eine Chip-Zeile (Muschel-Pille + übrige
   Ereignisse klein) stehen als EIN Stapel unter der Kopfleiste. Die Lage der übernommenen Elemente bestimmt der Stapel
   (deshalb !important gegen die vielen Einzel-Abstände der Module). Unterkante: --hs-bottom (für Hinweise darunter). */
.hs-stack {
  position: absolute; z-index: 19; top: calc(var(--fw-top-h, 54px) + 6px); left: calc(8px + var(--safe-l, 0px)); right: calc(8px + var(--safe-r, 0px));
  display: flex; flex-direction: column; gap: 5px; pointer-events: none;
}
.hs-row { display: flex; gap: 6px; min-width: 0; }
.hs-row.hs-none { display: none; }
.hs-row > * { pointer-events: auto; }
.hs-chips { flex-wrap: wrap; align-items: center; }
.hs-feed { position: absolute; top: 100%; left: 0; right: 0; margin-top: 6px; justify-content: flex-start; pointer-events: none; }
.hs-feed > * { pointer-events: none; }
.hs-stack .fw-banner, .hs-stack .fz-chip, .hs-stack .ew, .hs-stack .fev-bar, .hs-stack .fsw-pill, .hs-stack .fnat-chip, .hs-stack .fnat-boss, .hs-stack .fnat-feed {
  position: relative !important; top: auto !important; left: auto !important; right: auto !important; bottom: auto !important;
  transform: none !important; margin: 0 !important; max-width: 100% !important;
}
/* 1 · Lobby-Banner einzeilig */
.hs-ban .fw-banner { flex: 1 1 auto; width: auto !important; padding: 5px 6px 5px 11px; gap: 8px; border-radius: 14px; }
.hs-ban .fw-ban-txt { flex: 1; min-width: 0; font-size: 12.5px; line-height: 1.2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.hs-ban .fw-ban-txt b { font-size: 13.5px; }
.hs-ban .fw-ban-txt small, .hs-ban .fw-ban-long { display: none; }
.hs-ban .fw-ban-btns { flex-direction: row; gap: 5px; }
.hs-ban .fw-ban-btns .btn { padding: 6px 9px; font-size: 12.5px; }
.hs-ban .fw-ban-err { top: 100%; }
/* 2 · Reise-Chip */
.hs-travel .fz-chip { flex: 1 1 auto; }
/* 3 · das Wichtigste groß */
.hs-main > .fev-bar, .hs-main > .fnat-boss { flex: 1 1 auto; width: auto !important; }
.hs-main > .fev-bar { height: auto !important; min-height: 40px; }
.hs-main > .fsw-pill, .hs-main > .fnat-chip { flex: 0 1 auto; }
/* 4 · Chip-Zeile: Muschel-Pille einzeilig, übrige Ereignisse als kleine Chips (Antippen holt sie groß) */
.hs-chips .ew { flex-direction: row !important; align-items: center !important; height: 30px !important; min-width: 0 !important; padding: 0 10px 0 8px !important; gap: 7px !important; border-radius: 999px !important; }
.hs-chips .ew-cur { height: auto; }
.hs-chips .ew-sep { display: block; height: 14px; }
.hs-chips > .fev-bar, .hs-chips > .fsw-pill, .hs-chips > .fnat-chip, .hs-chips > .fnat-boss {
  height: 30px !important; box-sizing: border-box; width: auto !important; padding: 0 10px 0 8px !important; gap: 5px !important;
  border-radius: 999px !important; cursor: pointer; animation: none; flex: none;
}
.hs-chips > .fev-bar .fev-bar-name, .hs-chips > .fev-bar .fev-bar-me, .hs-chips > .fev-bar .fev-bar-track { display: none; }
.hs-chips > .fev-bar .fev-bar-ic { font-size: 14px; letter-spacing: -4px; }
.hs-chips > .fev-bar .fev-bar-sub { font-size: 12px; color: #fff; }
.hs-chips > .fsw-pill .tx, .hs-chips > .fnat-chip .tx { display: none; }
.hs-chips > .fsw-pill .ic, .hs-chips > .fnat-chip .ic { font-size: 15px; }
.hs-chips > .fsw-pill .cd, .hs-chips > .fnat-chip .cd { font-size: 11.5px; padding: 3px 5px; }
.hs-chips > .fnat-boss > .ic { font-size: 16px; }
.hs-chips > .fnat-boss .col { flex: none; flex-direction: row; align-items: center; gap: 6px; }
.hs-chips > .fnat-boss .tt, .hs-chips > .fnat-boss .inf { display: none; }
.hs-chips > .fnat-boss.s-announced .inf { display: inline; margin: 0; }
.hs-chips > .fnat-boss .fnat-bar { width: 34px; height: 5px; flex: none; }
/* alles, was darunter Platz braucht */
.fw-root.hs-on .fw-hint { top: calc(var(--hs-bottom, 120px) + 6px); }
.fw-root.hs-on .fw-compass { top: calc(var(--hs-bottom, 120px) + 8px); }
.fw-root.hs-on .fz-note { top: calc(var(--hs-bottom, 120px) + 50px); }
.fw-root.hs-on .fw-feed { top: calc(var(--hs-bottom, 120px) + 46px) !important; }
.fw-root.hs-on .fev-panel { top: calc(var(--hs-bottom, 160px) + 8px) !important; max-height: calc(100% - var(--hs-bottom, 160px) - 150px - var(--safe-b, 0px)); }
.fw-root.hs-on .fev-pop { top: calc(var(--hs-bottom, 160px) + 48px) !important; }
.fw-root.hs-on .ew-note, .fw-root.hs-on .ew-lvl { top: calc(var(--hs-bottom, 120px) + 8px) !important; }
/* Feinabstimmung der Höhen (Ziel: Stapel ≤ ~20 % von 844 px mit Banner + Riese + Event + Schwarm + Gewitter) */
.hs-ban .fw-banner { padding: 3px 4px 3px 11px; min-height: 34px; box-sizing: border-box; }
.hs-ban .fw-ban-btns .btn { padding: 5px 9px; line-height: 1.1; }
.hs-main > .fnat-boss { padding: 5px 10px 6px 8px !important; }
.hs-main > .fnat-boss .col { gap: 4px; }
.hs-main > .fnat-boss .fnat-bar { height: 8px; }
.hs-main > .fnat-boss > .ic { font-size: 20px; }
.hs-main > .fev-bar { min-height: 38px; padding: 4px 11px 7px 8px !important; }
.hs-chips .ew, .hs-chips > .fev-bar, .hs-chips > .fsw-pill, .hs-chips > .fnat-chip, .hs-chips > .fnat-boss { height: 28px !important; }
.hs-chips > .fev-bar, .hs-chips > .fsw-pill, .hs-chips > .fnat-chip, .hs-chips > .fnat-boss { padding: 0 8px 0 7px !important; }
.hs-chips > .fev-bar .fev-bar-sub { display: flex; }
.hs-chips > .fev-bar .fev-bar-time[data-short] { font-size: 0; }
.hs-chips > .fev-bar .fev-bar-time[data-short]::after { content: attr(data-short); font: 800 12px/1 var(--font); }
/* zu eng: nur Symbole (Antippen holt das Ereignis groß) */
.hs-chips.tight > .fsw-pill .cd, .hs-chips.tight > .fnat-chip .cd, .hs-chips.tight > .fev-bar .fev-bar-sub, .hs-chips.tight > .fnat-boss .fnat-bar { display: none; }
.hs-ban .fw-ban-btns .btn-ghost::before { content: '↩ '; }
.hs-stack .fsw-pill, .hs-stack .fnat-chip, .hs-stack .fnat-boss { pointer-events: auto !important; }
.fw-root.hs-on .fz-welcome, .fw-root.hs-on .gr-notice { top: calc(var(--hs-bottom, 120px) + 8px); }
.fw-root.hs-on .fc-touch .fc-net { top: max(calc(var(--fw-top-h, 100px) + 104px), calc(var(--hs-bottom, 0px) + 8px)); }
.hs-chips > .fi-buff { height: 28px !important; padding: 0 9px 0 4px !important; gap: 5px !important; border-radius: 999px !important; font-size: 12.5px; }
.hs-chips > .fi-buff .fi-buff-ic { width: 22px; height: 22px; font-size: 14px; }
.hs-stack .fi-buff { position: relative !important; top: auto !important; left: auto !important; transform: none !important; }

/* ===== fish-quests.css ===== */
/* Phase 1 – Agent E (quests-ui.js, swarm-ui.js) */

/* ───────── Wunschzettel: ein Stück Papier auf dem Steg ───────── */
.fq-modal {
  max-width: 600px !important; padding: 0 !important; overflow: visible !important;
  background: none !important; border: none !important; box-shadow: none !important;
}
.fq-note {
  --ink: #3a2e22; --ink2: #6d5a43; --blue: #2f4f86; --red: #b5463a; --line: rgba(64, 104, 168, .13);
  position: relative; display: flex; flex-direction: column; max-height: calc(100vh - 40px); max-height: calc(100dvh - 40px);
  color: var(--ink); font-family: var(--font); text-align: left; border-radius: 6px 6px 10px 8px;
  background:
    radial-gradient(120% 70% at 10% 0%, rgba(255, 255, 255, .55), transparent 60%),
    radial-gradient(80% 60% at 100% 100%, rgba(170, 128, 60, .16), transparent 70%),
    linear-gradient(176deg, #f8f0dc 0%, #f1e5c8 55%, #ead9b5 100%);
  box-shadow: 0 1px 0 rgba(255, 255, 255, .6) inset, 0 0 0 1px rgba(120, 90, 40, .22), 0 18px 50px rgba(8, 4, 30, .55), 0 4px 10px rgba(8, 4, 30, .3);
  transform: rotate(-.5deg); animation: fqIn .38s cubic-bezier(.2, 1.3, .4, 1) both;
}
@keyframes fqIn { from { transform: rotate(-4deg) translateY(30px) scale(.94); opacity: 0; } }
/* Klebestreifen */
.fq-tape {
  position: absolute; left: 50%; top: -11px; width: 112px; height: 26px; margin-left: -56px; transform: rotate(2.5deg); z-index: 2;
  background: linear-gradient(180deg, rgba(255, 250, 230, .72), rgba(240, 228, 190, .62)); border-left: 1px dashed rgba(150, 120, 70, .25);
  border-right: 1px dashed rgba(150, 120, 70, .25); box-shadow: 0 1px 3px rgba(0, 0, 0, .15);
}
.fq-head { display: flex; align-items: center; gap: 12px; padding: 18px 16px 6px 18px; }
.fq-av { flex: none; width: 54px; height: 58px; border-radius: 50%; overflow: hidden; display: grid; place-items: center;
  background: radial-gradient(circle at 50% 40%, #fffaf0, #e6d3ab); box-shadow: 0 0 0 2px rgba(120, 90, 40, .35); }
.fq-av canvas { width: 64px; height: 70px; margin-top: 8px; }
.fq-title { flex: 1; min-width: 0; }
.fq-note .fq-title h3 { margin: 0; text-align: left; font: 700 27px/1.05 var(--font-display); color: var(--ink); letter-spacing: .2px; }
.fq-date { display: block; margin-top: 2px; font-size: 13px; font-weight: 700; color: var(--ink2); }
.fq-x { flex: none; width: 38px; height: 38px; border-radius: 50%; cursor: pointer; border: 1.5px solid rgba(90, 64, 30, .35);
  background: rgba(255, 255, 255, .45); color: var(--ink); font: 800 16px/1 var(--font); transition: background .15s, transform .15s; }
.fq-x:hover, .fq-x:focus-visible { background: #fff; transform: scale(1.06) rotate(6deg); }
.fq-note .fq-tip { margin: 2px 20px 8px 84px; text-align: left; font-style: italic; font-size: 14px; line-height: 1.4; color: var(--blue); }
.fq-body { min-height: 0; overflow: auto; overscroll-behavior: contain; padding: 0 16px 14px; scrollbar-width: thin; scrollbar-color: rgba(90, 64, 30, .35) transparent; }
.fq-loading, .fq-empty { display: flex; align-items: center; justify-content: center; gap: 10px; padding: 40px 10px; color: var(--ink2); font-weight: 800; }
.fq-spin { width: 18px; height: 18px; border-radius: 50%; border: 3px solid rgba(90, 64, 30, .2); border-top-color: var(--blue); animation: fqSpin .8s linear infinite; }
@keyframes fqSpin { to { transform: rotate(360deg); } }

.fq-sec { margin-top: 6px; }
.fq-sec h4 { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin: 6px 4px 6px; font: 600 16px/1.2 var(--font-display);
  color: var(--ink); text-transform: uppercase; letter-spacing: 1.2px; border-bottom: 1.5px solid rgba(90, 64, 30, .25); padding-bottom: 4px; }
.fq-sec h4 em { font: 700 12px/1.2 var(--font); font-style: normal; color: var(--ink2); text-transform: none; letter-spacing: 0; }
.fq-week h4 { color: #7a4e12; }
.fq-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }

/* Eine Zeile = ein Wunsch, auf liniertem Papier */
.fq-row {
  position: relative; display: grid; grid-template-columns: 62px minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 10px 6px 11px;
  background-image: linear-gradient(0deg, var(--line) 1px, transparent 1px); background-size: 100% 100%; background-position: bottom;
}
.fq-row + .fq-row { border-top: 1px dashed rgba(90, 64, 30, .16); }
.fq-ic { display: grid; place-items: center; width: 62px; height: 46px; }
.fq-fish { width: 60px; height: auto; filter: sepia(.25) saturate(.9) drop-shadow(0 1px 0 rgba(255, 255, 255, .6)); }
.fq-fish.sil { filter: none; opacity: .8; }
.fq-emo { font-size: 30px; line-height: 1; filter: saturate(.85) drop-shadow(0 1px 0 rgba(255, 255, 255, .6)); }
.fq-main { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.fq-txt { font: 600 16.5px/1.22 var(--font-display); color: var(--ink); }
.fq-fl { font-size: 13px; line-height: 1.35; color: var(--ink2); }
.fq-meta { display: flex; flex-wrap: wrap; gap: 4px 8px; font-size: 12px; font-weight: 800; color: var(--blue); }
.fq-rar { color: color-mix(in srgb, var(--rc) 55%, #3a2e22); }
.fq-prog { position: relative; height: 15px; margin-top: 3px; max-width: 260px; border-radius: 8px; overflow: hidden;
  background: rgba(90, 64, 30, .12); box-shadow: inset 0 1px 2px rgba(90, 64, 30, .2); }
.fq-prog i { display: block; height: 100%; border-radius: 8px; transition: width .5s cubic-bezier(.2, 1, .3, 1);
  background: repeating-linear-gradient(-45deg, #4f7fc6 0 6px, #5a8bd2 6px 12px); }
.fq-row.done .fq-prog i { background: repeating-linear-gradient(-45deg, #3f9a5c 0 6px, #4aa868 6px 12px); }
.fq-prog span { position: absolute; inset: 0; display: grid; place-items: center; font: 800 11px/1 var(--font); color: #2a2118;
  text-shadow: 0 0 3px rgba(255, 250, 235, .95), 0 0 1px rgba(255, 250, 235, 1); }
.fq-parts { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px; }
.fq-parts span { padding: 2px 6px; border-radius: 6px; font-size: 11.5px; font-weight: 800; background: rgba(90, 64, 30, .1); color: var(--ink2); }
.fq-parts span.ok { background: rgba(63, 154, 92, .18); color: #2c6e40; }
.fq-have { margin-top: 2px; font-size: 12.5px; font-weight: 800; color: var(--ink2); }
.fq-have.yes { color: #2c6e40; }

.fq-side { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; min-width: 98px; }
.fq-rew { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 3px 6px; font: 800 12.5px/1.2 var(--font); color: var(--ink); white-space: nowrap; }
.fq-rew span { padding: 2px 6px; border-radius: 7px; background: rgba(255, 255, 255, .55); box-shadow: 0 0 0 1px rgba(90, 64, 30, .14); }
.fq-rew .pearl { background: rgba(214, 236, 255, .8); color: var(--blue); }
.fq-btn { border: none; border-radius: 11px; padding: 8px 13px; cursor: pointer; font: 600 14.5px/1 var(--font-display); white-space: nowrap;
  transition: transform .12s, box-shadow .12s, filter .12s; }
.fq-btn.go { background: linear-gradient(180deg, #ffd34d, #f2b21c); color: #3a2400; box-shadow: 0 3px 0 #b07d0c, 0 6px 14px rgba(176, 125, 12, .3); }
.fq-btn.go:hover { transform: translateY(-1px); filter: brightness(1.05); }
.fq-btn.go:active { transform: translateY(2px); box-shadow: 0 1px 0 #b07d0c; }
.fq-btn.far { background: rgba(255, 255, 255, .55); color: var(--blue); box-shadow: 0 0 0 1.5px rgba(47, 79, 134, .35); font-size: 13px; }
.fq-btn:disabled { opacity: .6; cursor: default; }
.fq-swap { border: none; background: none; cursor: pointer; padding: 2px 4px; font: 800 15px/1 var(--font); color: rgba(90, 64, 30, .55); border-radius: 6px; }
.fq-swap:hover, .fq-swap:focus-visible { color: var(--ink); background: rgba(255, 255, 255, .5); }
.fq-swap.armed { font-size: 12.5px; color: #fff; background: var(--red); padding: 4px 7px; }
.fq-row.ready::before { content: ''; position: absolute; left: -10px; top: 50%; width: 6px; height: 6px; margin-top: -3px; border-radius: 50%; background: #f2b21c;
  box-shadow: 0 0 0 3px rgba(242, 178, 28, .25); animation: fqDot 1.4s ease-in-out infinite; }
@keyframes fqDot { 50% { box-shadow: 0 0 0 6px rgba(242, 178, 28, 0); } }
.fq-row.claimed .fq-main, .fq-row.claimed .fq-ic, .fq-row.claimed .fq-rew { opacity: .45; }
.fq-row.claimed .fq-txt { text-decoration: line-through; text-decoration-color: rgba(90, 64, 30, .55); text-decoration-thickness: 2px; }
.fq-stamp { display: inline-block; padding: 4px 9px 3px; border: 2.5px solid var(--red); border-radius: 6px; color: var(--red); transform: rotate(-9deg);
  font: 700 14px/1 var(--font-display); text-transform: uppercase; letter-spacing: 1.5px; opacity: .85; mix-blend-mode: multiply; }
.fq-row.fq-celebrate .fq-stamp { animation: fqStamp .45s cubic-bezier(.2, 1.6, .4, 1) both; }
@keyframes fqStamp { from { transform: rotate(-20deg) scale(2.4); opacity: 0; } }
.fq-row.fq-new { animation: fqNew .6s ease both; }
@keyframes fqNew { from { background-color: rgba(255, 220, 120, .55); } }
/* Feier: Konfetti + Belohnung fliegt hoch */
.fq-burst { position: absolute; right: 50px; top: 50%; width: 0; height: 0; pointer-events: none; z-index: 3; }
.fq-burst i { position: absolute; width: 7px; height: 10px; border-radius: 2px; background: var(--c); animation: fqBurst .95s cubic-bezier(.1, .7, .3, 1) both; }
@keyframes fqBurst { to { transform: translate(var(--dx), var(--dy)) rotate(var(--r)); opacity: 0; } }
.fq-fly { position: absolute; right: 8px; top: 4px; display: flex; gap: 6px; pointer-events: none; z-index: 3; animation: fqFly 1.8s ease-out both; }
.fq-fly span { padding: 3px 8px; border-radius: 8px; background: #2c6e40; color: #fff; font: 800 13px/1.1 var(--font); box-shadow: 0 3px 8px rgba(0, 0, 0, .25); }
@keyframes fqFly { 0% { transform: translateY(10px) scale(.7); opacity: 0; } 18% { transform: translateY(0) scale(1.05); opacity: 1; } 70% { opacity: 1; } 100% { transform: translateY(-34px); opacity: 0; } }

.fq-foot { margin-top: 6px; display: flex; flex-direction: column; gap: 4px; }
.fq-note .fq-guest, .fq-note .fq-hintline { margin: 4px 4px 0; text-align: left; font-size: 12.5px; font-weight: 700; color: var(--ink2); }

/* Abgeben: Fisch auswählen */
.fq-pickhead { display: flex; align-items: center; gap: 12px; margin: 4px 2px 10px; }
.fq-pickhead b { display: block; font: 600 18px/1.2 var(--font-display); }
.fq-pickhead small { display: block; font-size: 12.5px; font-weight: 700; color: var(--ink2); }
.fq-back { flex: none; border: 1.5px solid rgba(90, 64, 30, .35); background: rgba(255, 255, 255, .5); color: var(--ink); border-radius: 10px; padding: 7px 10px;
  cursor: pointer; font: 700 13px/1 var(--font); }
.fq-pick { display: grid; grid-template-columns: repeat(auto-fill, minmax(132px, 1fr)); gap: 8px; }
.fq-fishbtn { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 8px 6px 9px; cursor: pointer; border-radius: 12px; color: var(--ink);
  background: rgba(255, 255, 255, .5); border: 2px solid color-mix(in srgb, var(--rc) 45%, rgba(90, 64, 30, .2)); font-family: var(--font);
  transition: transform .12s, background .12s; }
.fq-fishbtn:hover, .fq-fishbtn:focus-visible { transform: translateY(-2px); background: rgba(255, 255, 255, .8); }
.fq-fishbtn .fq-fish { width: 100px; filter: none; }
.fq-fishbtn b { font: 600 14.5px/1.15 var(--font-display); }
.fq-fishbtn span { font-size: 12.5px; font-weight: 800; color: var(--ink2); }
.fq-fishbtn em { font-style: normal; font-size: 11px; font-weight: 800; color: #2c6e40; }
.fq-fishbtn.sending { animation: fqSend .5s ease both; pointer-events: none; }
@keyframes fqSend { to { transform: translateY(-24px) scale(.8); opacity: .2; } }

/* Kopfleisten-Knopf: abholbereit = golden */
.fw-xbtn.fq-hot .fw-xbadge, .fw-more-it.fq-hot .fw-more-n { background: #ffc933; color: #3a2400; }
.fw-xbtn.fq-hot .ic { animation: fqWiggle 2.4s ease-in-out infinite; display: inline-block; }
@keyframes fqWiggle { 0%, 80%, 100% { transform: rotate(0); } 85% { transform: rotate(-12deg); } 90% { transform: rotate(10deg); } 95% { transform: rotate(-5deg); } }
.fw-msg.sys.k-quest { color: #ffe3a3; font-style: normal; }

/* Handy */
@media (max-width: 520px) {
  .fq-modal { max-width: none !important; }
  .fq-note { transform: none; }
  .fq-head { padding: 16px 12px 4px 14px; gap: 10px; }
  .fq-av { width: 46px; height: 50px; }
  .fq-av canvas { width: 56px; height: 61px; margin-top: 7px; }
  .fq-note .fq-title h3 { font-size: 23px; }
  .fq-note .fq-tip { margin: 2px 14px 6px 14px; font-size: 13px; }
  .fq-body { padding: 0 10px 12px; }
  .fq-row { grid-template-columns: 44px minmax(0, 1fr); gap: 4px 8px; padding: 9px 2px 10px; }
  .fq-ic { width: 44px; height: 38px; align-self: start; margin-top: 2px; }
  .fq-fish { width: 44px; }
  .fq-emo { font-size: 25px; }
  .fq-txt { font-size: 15.5px; }
  .fq-side { grid-column: 2; flex-direction: row; align-items: center; justify-content: space-between; min-width: 0; flex-wrap: wrap; }
  .fq-rew { justify-content: flex-start; }
  .fq-btn { padding: 9px 14px; }
  .fq-prog { max-width: none; }
  .fq-pick { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .fq-sec h4 { font-size: 14.5px; }
}

/* ───────── Fischschwarm: Hinweis-Pille ───────── */
.fsw-pill {
  position: absolute; z-index: 18; left: 50%; bottom: calc(118px + var(--safe-b, 0px)); transform: translateX(-50%);
  display: flex; align-items: center; gap: 8px; padding: 8px 14px 8px 11px; border-radius: 999px; pointer-events: none; white-space: nowrap;
  background: rgba(14, 40, 62, .82); border: 1.5px solid rgba(127, 227, 255, .55); color: #e9fbff; font: 600 14.5px/1 var(--font-display);
  box-shadow: 0 6px 18px rgba(4, 20, 40, .4), 0 0 0 4px rgba(127, 227, 255, .1); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  animation: fswIn .35s cubic-bezier(.2, 1.5, .4, 1) both;
}
.fsw-pill.hidden { display: none; }
.fsw-pill .ic { font-size: 17px; animation: fswBob 1.6s ease-in-out infinite; }
.fsw-pill .cd { padding: 3px 7px; border-radius: 8px; background: rgba(127, 227, 255, .18); font: 800 12.5px/1 var(--font); font-variant-numeric: tabular-nums; }
.fsw-pill.in { background: rgba(20, 76, 58, .88); border-color: rgba(120, 240, 170, .7); }
@keyframes fswIn { from { transform: translate(-50%, 12px) scale(.9); opacity: 0; } }
@keyframes fswBob { 50% { transform: translateY(-3px); } }
.fw-root.touch .fsw-pill { bottom: auto; top: calc(var(--fw-top-h, 60px) + 104px); font-size: 13.5px; }
.fw-root.touch:has(.fw-banner:not(.hidden)) .fsw-pill { top: calc(var(--fw-top-h, 60px) + 172px); } /* (QA) unter Lobby-Banner und Event-Leiste */
/* (Feinschliff) Handy: unter der gemeinsamen Zeile aus Muschel-Pille und Event-Leiste (--ew-row/--ew-h, fish-economy.css),
   auch mit Lobby-Banner */
@media (max-width: 760px) {
  .fw-root.touch .fsw-pill, .fw-root.touch:has(.fw-banner:not(.hidden)) .fsw-pill { top: calc(var(--ew-row) + var(--ew-h) + 6px); }
}
.fq-tbadge.hot { background: #ffc933; color: #3a2400; }
.fw-root.fw-eq:not(.touch) .fsw-pill { bottom: calc(150px + var(--safe-b, 0px)); }
/* (QA) Desktop: über der Steuerungs-Leiste (.fw-help endet bei 84 px + 45 px) und unter dem Händler-Hinweis-Stapel */
.fw-root:not(.touch):not(.fw-eq) .fsw-pill { bottom: calc(136px + var(--safe-b, 0px)); }
.fw-root:not(.touch):has(.fsw-pill:not(.hidden)) .mk-stack { bottom: calc(180px + var(--safe-b, 0px)); }
.fw-root.fw-eq:not(.touch):has(.fsw-pill:not(.hidden)) .mk-stack { bottom: calc(194px + var(--safe-b, 0px)); }
.fsw-card-ic { flex: none; width: 70px; height: 70px; display: grid; place-items: center; font-size: 40px; border-radius: 18px;
  background: radial-gradient(circle at 50% 40%, rgba(127, 227, 255, .35), rgba(127, 227, 255, .06)); }

/* ===== fish-season.css ===== */
/* Phase 1 – Agent F (season-ui.js): Saison-Meldungen im Inselfunk (Farbe/Rand kommt aus fish-mod.css .k-season) */
.fw-msg.sys.k-season { --kc: #ffa040; text-shadow: 0 1px 0 rgba(0, 0, 0, .35); }
.fw-feed .fw-msg.sys.k-season { background: linear-gradient(100deg, rgba(120, 52, 6, .78), rgba(46, 22, 70, .74)); color: #ffe2bf; }

/* ===== fish-craft.css ===== */
/* Phase 2 – Agent Werkbank (craft-ui.js, gear-ui.js Reiter „Teile“ & „Prüfungen“).
   Baut auf den Fenster-Klassen .gw-* (fishing-catch.css) und dem Nähe-Hinweis .mk-near (fish-market.css) auf. */

/* ───────── Nähe-Hinweis (Desktop: eigener Stapel an derselben Stelle wie der Händler-Hinweis) ───────── */
.cr-stack {
  position: absolute; z-index: 15; left: 50%; bottom: calc(138px + var(--safe-b, 0px)); transform: translateX(-50%);
  display: flex; flex-direction: column; align-items: center; pointer-events: none !important;
}
.cr-stack .mk-near { pointer-events: auto; }
.cr-near.hidden { display: none !important; }
.fw-root.busy .cr-near { display: none !important; }

/* ───────── Fenster ───────── */
.cr-modal { max-width: 960px !important; }
.cr .gw-sub.cr-far { color: #ffd27a; }
.cr-wallet { display: flex; gap: 6px; flex: none; }
.cr-wallet span { padding: 6px 10px; border-radius: 999px; background: rgba(0, 0, 0, .25); font: 800 14px/1 var(--font); font-variant-numeric: tabular-nums; white-space: nowrap; }
.cr-tabs .gw-tab em.cr-ready { background: var(--good); color: #0e2a18; }
.cr-tabs .gw-tab.sel em.cr-ready { background: #0e7a3a; color: #fff; }
.cr-body { padding-bottom: 12px; }
.cr-view { display: flex; flex-direction: column; gap: 12px; }
.cr-sec h4 { margin: 2px 0 2px; font: 700 18px/1.2 var(--font-display); text-align: left; }
.cr-sec p { margin: 0; color: var(--muted); font-size: 13.5px; line-height: 1.4; text-align: left; }
.cr-hint { margin: 0; padding: 8px 12px; border-radius: 12px; background: rgba(255, 201, 51, .12); border: 1px solid rgba(255, 201, 51, .35); color: #ffe7a8; font-size: 13px; font-weight: 700; text-align: left; }
.cr-bar { padding: 0 22px 14px; display: flex; flex-direction: column; gap: 8px; }
.cr-bar:empty { display: none; }
.cr-barrow { display: flex; align-items: center; gap: 8px; padding: 10px 12px; border-radius: 16px; background: rgba(0, 0, 0, .25); border: 1px solid rgba(255, 255, 255, .1); }
.cr-btn2 { background: rgba(255, 255, 255, .12); color: #fff; padding: 8px 12px; font-size: 14px; }
.cr-btn2:disabled { opacity: .45; }
.cr-go { margin-left: auto; white-space: nowrap; }
.cr-sum { display: flex; flex-wrap: wrap; gap: 4px 8px; flex: 1; min-width: 0; font: 800 13px/1 var(--font); }
.cr-sum span { display: inline-flex; align-items: center; gap: 2px; }
.cr-sum small { color: var(--muted); font-weight: 700; }

/* Material-Regal */
.cr-shelf { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; }
.cr-mat { position: relative; display: flex; flex-direction: column; align-items: center; gap: 1px; padding: 6px 2px 5px; border-radius: 12px;
  background: rgba(255, 255, 255, .06); border: 1px solid rgba(255, 255, 255, .1); cursor: help; }
.cr-mat b { font: 800 14px/1 var(--font); font-variant-numeric: tabular-nums; }
/* Name bis zu zwei Zeilen (Silbentrennung nach Seitensprache), damit „Tiefsee-Tinte“ / „Deep-Sea Ink“ lesbar bleibt */
.cr-mat small { font-size: 10.5px; color: var(--muted); line-height: 1.12; text-align: center; max-width: 100%; min-height: 2.24em;
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; overflow-wrap: anywhere; hyphens: auto; }
.cr-mat.none { opacity: .45; }
.cr-mat.t2 { border-color: rgba(79, 176, 255, .45); }
.cr-mat.t3 { border-color: rgba(255, 184, 61, .6); background: rgba(255, 184, 61, .08); }

/* Fische zum Zerlegen */
.cr-fish { display: grid; grid-template-columns: repeat(auto-fill, minmax(118px, 1fr)); gap: 8px; }
.cr-fcard { --rc: #b8c4d6; position: relative; display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 8px 6px 7px; border-radius: 14px; cursor: pointer;
  background: rgba(255, 255, 255, .06); border: 2px solid color-mix(in srgb, var(--rc) 40%, transparent); color: #fff; font: inherit; transition: transform .12s, background .12s; }
.cr-fcard:hover { transform: translateY(-1px); background: rgba(255, 255, 255, .1); }
.cr-fcard.sel { background: color-mix(in srgb, var(--rc) 22%, rgba(255, 255, 255, .06)); border-color: var(--primary); box-shadow: 0 0 0 2px rgba(255, 201, 51, .35); }
.cr-fname { font: 700 13px/1.15 var(--font-display); text-align: center; }
.cr-fcard small { color: var(--muted); font-size: 11.5px; font-weight: 700; }
.cr-yield { display: flex; flex-wrap: wrap; justify-content: center; gap: 2px 6px; font: 800 11.5px/1 var(--font); margin-top: 2px; }
.cr-yield span { display: inline-flex; align-items: center; gap: 1px; }
.cr-check { position: absolute; top: 5px; right: 6px; width: 20px; height: 20px; border-radius: 50%; background: var(--primary); color: #1b1440; font: 900 13px/20px var(--font); font-style: normal; opacity: 0; transform: scale(.6); transition: .12s; }
.cr-fcard.sel .cr-check { opacity: 1; transform: none; }

/* Kosten */
.cr-cost { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 6px; }
.cr-c { display: inline-flex; align-items: center; gap: 4px; padding: 3px 8px; border-radius: 999px; font: 800 12.5px/1.2 var(--font); font-variant-numeric: tabular-nums;
  background: rgba(255, 255, 255, .08); border: 1px solid rgba(255, 255, 255, .12); }
.cr-c.cr-cm { padding: 2px 8px 2px 3px; }
.cr-c.ok { border-color: rgba(51, 209, 122, .55); }
.cr-c.no { border-color: rgba(255, 77, 94, .6); color: #ffc2c8; }

/* Teile */
.cr-parts { display: flex; flex-direction: column; gap: 8px; }
.cr-part { display: grid; grid-template-columns: 72px 1fr auto; gap: 12px; align-items: center; padding: 10px 12px; border-radius: 16px;
  background: rgba(255, 255, 255, .06); border: 1px solid rgba(255, 255, 255, .1); }
.cr-part.zero .cr-part-ic { opacity: .8; }
.cr-part-ic { display: flex; align-items: center; justify-content: center; width: 72px; height: 72px; border-radius: 14px; background: rgba(0, 0, 0, .22); }
.cr-part-main { min-width: 0; text-align: left; }
.cr-part-top { display: flex; align-items: baseline; gap: 8px; }
.cr-part-top b { font: 700 18px/1.1 var(--font-display); }
.cr-lv { font-size: 12px; font-weight: 800; color: var(--muted); }
.cr-part-desc { margin: 3px 0 0; font-size: 12.5px; color: var(--muted); line-height: 1.35; }
.cr-eff { display: flex; flex-wrap: wrap; gap: 2px 10px; margin-top: 4px; font-size: 12.5px; }
.cr-eff b { color: #c8ffd9; }
.cr-next { color: #ffe7a8; font-weight: 700; }
.cr-pips { display: flex; gap: 3px; margin-top: 4px; }
.cr-pips i { width: 14px; height: 6px; border-radius: 3px; background: rgba(255, 255, 255, .14); }
.cr-pips i.on { background: linear-gradient(90deg, #ffd24a, #ffb000); box-shadow: 0 0 6px rgba(255, 201, 51, .55); }
.cr-up, .cr-buy { white-space: nowrap; }
.cr-max { font: 800 13px/1.2 var(--font); color: #ffd24a; white-space: nowrap; }

/* Ruten */
.cr-rods { display: flex; flex-direction: column; gap: 8px; }
.cr-rod { --gc: #ffc933; display: grid; grid-template-columns: 120px 1fr; gap: 12px; padding: 10px 12px; border-radius: 16px; align-items: start;
  background: linear-gradient(120deg, color-mix(in srgb, var(--gc) 14%, rgba(255, 255, 255, .05)), rgba(255, 255, 255, .04)); border: 1px solid color-mix(in srgb, var(--gc) 40%, rgba(255, 255, 255, .1)); }
.cr-rod.cur { box-shadow: 0 0 0 2px color-mix(in srgb, var(--gc) 60%, transparent); }
.cr-rod.locked { background: rgba(255, 255, 255, .03); border-color: rgba(255, 255, 255, .08); }
.cr-rod-ic { display: flex; justify-content: center; padding-top: 4px; }
.cr-rod-main { min-width: 0; text-align: left; display: flex; flex-direction: column; gap: 6px; }
.cr-rod-top { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; }
.cr-rod-top b { font: 700 18px/1.1 var(--font-display); }
.cr-plus { color: #ffd24a; }
.cr-fx { font-size: 12px; font-weight: 800; padding: 2px 8px; border-radius: 999px; background: rgba(255, 210, 74, .16); color: #ffe7a8; }
.cr-enh { padding: 7px 10px; border-radius: 12px; background: rgba(0, 0, 0, .18); }
.cr-enh-t { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; font-size: 13px; font-weight: 800; }
.cr-enh-t small { color: var(--muted); font-weight: 700; }
.cr-enh-t .cr-pips { margin: 0; }
.cr-enh-t .cr-pips i { width: 10px; }
.cr-enh-row { display: flex; align-items: center; gap: 8px; }
.cr-enh-row .cr-cost { flex: 1; }
.cr-trial { padding: 8px 10px; border-radius: 12px; background: rgba(157, 134, 255, .12); border: 1px solid rgba(157, 134, 255, .35); }
.cr-trial.done { background: rgba(255, 210, 74, .1); border-color: rgba(255, 210, 74, .45); }
.cr-trial-t { display: flex; align-items: center; gap: 8px; font-size: 13.5px; }
.cr-trial-t em { margin-left: auto; font-style: normal; font-weight: 800; color: #ffd24a; }
.cr-trial p { margin: 3px 0 4px; font-size: 13px; line-height: 1.35; color: #e6e1ff; }
.cr-reward { display: block; color: var(--muted); font-size: 11.5px; font-weight: 700; margin-top: 3px; }
.cr-goal { margin-top: 4px; }
.cr-goal-t { display: flex; justify-content: space-between; gap: 8px; font-size: 12.5px; font-weight: 700; }
.cr-goal-bar { height: 7px; border-radius: 4px; background: rgba(0, 0, 0, .3); overflow: hidden; margin-top: 2px; }
.cr-goal-bar i { display: block; height: 100%; background: linear-gradient(90deg, #9d86ff, #c8b8ff); border-radius: 4px; }
.cr-goal.done .cr-goal-bar i { background: linear-gradient(90deg, #33d17a, #8ff0b4); }
.cr-goal small { color: var(--muted); font-size: 11px; }
.cr-req { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 4px 12px; font-size: 12.5px; font-weight: 700; }
.cr-req .ok { color: #9ff0c0; }
.cr-req .no { color: #ffb1b9; }
.cr-buy { align-self: flex-start; }

/* Köder */
.cr-baits { display: flex; flex-direction: column; gap: 8px; }
.cr-bait { padding: 10px 12px; border-radius: 16px; background: rgba(255, 255, 255, .06); border: 1px solid rgba(255, 255, 255, .1); text-align: left; }
.cr-bait.locked { opacity: .55; }
.cr-bait-head { display: flex; align-items: center; gap: 10px; }
.cr-bait-head .cr-bait-name { min-width: 0; flex: 1; display: flex; flex-direction: column; }
.cr-bait-head b { font: 700 17px/1.1 var(--font-display); }
.cr-bait-head small { color: var(--muted); font-size: 12px; }
.cr-qstock { display: flex; gap: 4px; flex-wrap: wrap; justify-content: flex-end; }
.cr-q { --qc: #fff; display: inline-flex; align-items: center; gap: 3px; padding: 2px 7px 2px 3px; border-radius: 999px; font: 800 12px/1.2 var(--font);
  background: color-mix(in srgb, var(--qc) 18%, rgba(255, 255, 255, .05)); border: 1px solid color-mix(in srgb, var(--qc) 55%, transparent); }
.cr-q i { font-style: normal; min-width: 18px; padding: 1px 3px; border-radius: 999px; background: var(--qc); color: #1b1440; text-align: center; font-size: 10.5px; }
.cr-q.none { opacity: .4; }
.cr-bait-pick { display: flex; align-items: center; gap: 8px; margin-top: 8px; flex-wrap: wrap; }
.cr-bait-pick small { color: var(--muted); font-weight: 700; }
.cr-qpick { display: inline-flex; gap: 2px; padding: 3px; border-radius: 999px; background: rgba(0, 0, 0, .25); }
.cr-qp { border: none; background: transparent; color: var(--muted); font: 800 12.5px/1 var(--font); padding: 6px 9px; border-radius: 999px; cursor: pointer; }
.cr-qp.on { background: var(--primary); color: #1b1440; }
.cr-recipes { display: flex; flex-direction: column; gap: 6px; margin-top: 8px; }
.cr-rec { display: grid; grid-template-columns: 40px 1fr auto; gap: 8px; align-items: center; padding: 6px 8px; border-radius: 12px; background: rgba(0, 0, 0, .18); }
.cr-rec.lock { opacity: .6; }
.cr-rec-main { min-width: 0; }
.cr-rec-main > div:first-child { display: flex; gap: 6px; align-items: center; }
.cr-rec-main small { display: block; color: var(--muted); font-size: 11.5px; }
.cr-rec .cr-cost { margin-top: 3px; }

/* ───────── Pose-Anzeige am Schwimmer ───────── */
.cr-pose { position: absolute; inset: 0; pointer-events: none !important; overflow: hidden; z-index: 4; }
.cr-pose-m { position: absolute; left: 0; top: 0; width: 0; height: 0; will-change: transform; }
.cr-pose-m b { position: absolute; left: 0; bottom: 26px; transform: translateX(-50%); white-space: nowrap; padding: 4px 10px; border-radius: 999px;
  font: 800 13px/1.2 var(--font); color: #fff; background: rgba(40, 40, 60, .78); border: 1px solid rgba(255, 255, 255, .25); box-shadow: 0 3px 10px rgba(0, 0, 0, .3);
  animation: crPoseIn .2s ease-out both; }
.cr-ring { position: absolute; left: -22px; top: -10px; width: 44px; height: 20px; border-radius: 50%; border: 3px solid rgba(220, 225, 240, .85); animation: crRing .9s ease-out forwards; }
.cr-ring.r2 { animation-delay: .25s; opacity: 0; }
.cr-pose-m.bite b { background: #1fae5a; border-color: #8ff0b4; font: 700 18px/1.1 var(--font-display); padding: 5px 14px; animation: crPoseBig .3s ease-out both; }
.cr-pose-m.bite .cr-ring { border-color: #5dff9d; border-width: 4px; }
.cr-pose-m.bite.gold b { background: linear-gradient(180deg, #ffd24a, #e6a100); color: #2a1a00; border-color: #fff2b0; }
.cr-pose-m.bite.gold .cr-ring { border-color: #ffd24a; }
@keyframes crRing { from { transform: scale(.5); opacity: 1; } to { transform: scale(2.2); opacity: 0; } }
@keyframes crPoseIn { from { opacity: 0; transform: translate(-50%, 6px); } to { opacity: 1; transform: translate(-50%, 0); } }
@keyframes crPoseBig { 0% { opacity: 0; transform: translate(-50%, 6px) scale(.6); } 70% { transform: translate(-50%, 0) scale(1.15); } 100% { opacity: 1; transform: translate(-50%, 0) scale(1); } }

/* Feiern (Rute gebaut, Prüfung bestanden) – Grundlage fishing-catch.css .fc-rodcel */
.cr-ov { z-index: 30; }
.cr-trialcel .fc-rodcel-name { font-size: 26px; }

/* ───────── gear-ui.js: Reiter „Teile“ & „Prüfungen“ ───────── */
.gw-parts { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 8px; }
.gw-part { display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 10px 8px; border-radius: 14px; background: rgba(255, 255, 255, .06); border: 1px solid rgba(255, 255, 255, .1); text-align: center; }
.gw-part b { font: 700 16px/1.1 var(--font-display); }
.gw-part small { color: var(--muted); font-size: 12px; line-height: 1.3; }
.gw-part .cr-pips { justify-content: center; }
.gw-totals { display: flex; flex-wrap: wrap; gap: 6px; }
.gw-totals span { padding: 4px 10px; border-radius: 999px; background: rgba(51, 209, 122, .14); border: 1px solid rgba(51, 209, 122, .4); font: 800 12.5px/1.2 var(--font); }
.gw-bench { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 12px; border-radius: 14px; background: rgba(255, 201, 51, .1); border: 1px solid rgba(255, 201, 51, .35); font-size: 13px; font-weight: 700; text-align: left; }
.gw-trials { display: flex; flex-direction: column; gap: 8px; }
.gw-qrow { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-top: 4px; }

/* ───────── Handy ───────── */
@media (max-width: 640px) {
  .cr-wallet span { padding: 5px 7px; font-size: 12.5px; }
  .cr-wallet { flex-direction: column; gap: 3px; }
  .cr-tab-l { font-size: 12.5px; line-height: 1.05; }
  .cr-tabs .gw-tab { flex-direction: column; gap: 2px; padding: 6px 4px; }
  .cr-tabs .gw-tab em { position: absolute; transform: translate(18px, -16px); padding: 3px 5px; }
  .cr-tabs .gw-tab { position: relative; }
  .cr-shelf { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .cr-fish { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
  .cr-fcard { padding: 6px 3px; }
  .cr-part { grid-template-columns: 52px 1fr; }
  .cr-part-ic { width: 52px; height: 52px; }
  .cr-part-ic canvas { width: 48px !important; height: 48px !important; }
  .cr-part-act { grid-column: 1 / -1; display: flex; }
  .cr-part-act .btn { flex: 1; }
  .cr-rod { grid-template-columns: 1fr; gap: 4px; }
  .cr-rod-ic { justify-content: flex-start; }
  .cr-bar { padding: 0 14px 12px; }
  .cr-barrow { flex-wrap: wrap; padding: 8px; }
  .cr-sum { order: -1; flex-basis: 100%; }
  .cr-go { flex: 1; }
  .cr-bait-head { flex-wrap: wrap; }
  .cr-qstock { justify-content: flex-start; flex-basis: 100%; }
}
/* schmale Handys: vier Kacheln je Reihe, damit Namen wie „Regenbogen-/schuppe“ in zwei Zeilen ganz lesbar sind */
@media (max-width: 440px) { .cr-shelf { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (prefers-reduced-motion: reduce) {
  .cr-ring, .cr-pose-m b { animation: none !important; }
}
.gw-totals span.none { background: rgba(255, 255, 255, .08); border-color: rgba(255, 255, 255, .15); }
.gw-qstock { align-items: flex-start; }
.gw-trials .cr-trial.future { opacity: .55; }
/* Ausrüstungs-Fenster mit vier Reitern (Ruten, Köder, Teile, Prüfungen) */
@media (max-width: 760px) {
  .gw-tabs:has(> .gw-tab:nth-child(4)) { gap: 3px; }
  .gw-tabs:has(> .gw-tab:nth-child(4)) .gw-tab { flex-direction: column; gap: 1px; padding: 6px 3px; font-size: 12.5px; line-height: 1.05; }
  .gw-tabs:has(> .gw-tab:nth-child(4)) .gw-tab em { font-size: 10px; padding: 2px 5px; }
}

/* Tauschregal & gesperrte Veredelung */
.cr-trades { border-radius: 14px; background: rgba(0, 0, 0, .18); border: 1px solid rgba(255, 255, 255, .1); padding: 8px 12px; text-align: left; }
.cr-trades summary { cursor: pointer; font-size: 14px; }
.cr-trades summary small { color: var(--muted); font-weight: 700; }
.cr-trade { display: flex; align-items: center; gap: 10px; margin-top: 8px; flex-wrap: wrap; }
.cr-trade-out { display: flex; align-items: center; gap: 6px; min-width: 170px; }
.cr-trade .cr-cost { margin-top: 0; flex: 1; }
.cr-arrow { font-weight: 900; color: var(--muted); }
.cr-enh-lock { margin: 4px 0 0; font-size: 12.5px; font-weight: 700; color: #ffd27a; }

/* Absätze im Fenster linksbündig (Modal-Standard ist zentriert) */
.cr p, .cr .cr-part-desc, .cr .cr-trial p, .gw .cr-trial p { text-align: left; }
.cr-qstock { flex-direction: row; }
/* (Polish P2) Ruten-Weg einer gesperrten Rute im Ausrüstungs-Fenster (gear-ui.js rodPath) */
.gw-path { display: flex; flex-direction: column; gap: 6px; margin-top: 2px; }
.gw-path-st { display: grid; grid-template-columns: 26px minmax(0, 1fr); gap: 8px; align-items: start; padding: 7px 10px; border-radius: 12px; background: rgba(8, 4, 30, .32); border: 1px solid rgba(255, 255, 255, .08); text-align: left; }
.gw-path-st.ok { background: rgba(51, 209, 122, .1); border-color: rgba(51, 209, 122, .35); }
.gw-path-ic { width: 26px; height: 26px; display: grid; place-items: center; border-radius: 50%; background: rgba(255, 255, 255, .08); font-size: 14px; line-height: 1; }
.gw-path-st.ok .gw-path-ic { background: var(--good, #33d17a); color: #0e2a18; font-weight: 900; }
.gw-path-main { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.gw-path-main b { font: 800 13px/1.25 var(--font); }
.gw-path-main small { color: var(--muted); font-size: 11.5px; line-height: 1.3; }
.gw-path-bar { height: 6px; border-radius: 4px; background: rgba(0, 0, 0, .35); overflow: hidden; }
.gw-path-bar i { display: block; height: 100%; border-radius: 4px; background: linear-gradient(90deg, color-mix(in srgb, var(--gc, #ffc933) 55%, #fff), var(--gc, #ffc933)); }
.gw-path-chips { display: flex; flex-wrap: wrap; gap: 4px; }
.gw-path-chip { display: inline-flex; align-items: center; gap: 4px; padding: 3px 8px; border-radius: 999px; background: rgba(255, 92, 92, .14); border: 1px solid rgba(255, 92, 92, .4); font: 800 11.5px/1.2 var(--font); white-space: nowrap; }
.gw-path-chip.ok { background: rgba(51, 209, 122, .12); border-color: rgba(51, 209, 122, .4); }
.gw-path-chip i { font-style: normal; display: inline-flex; align-items: center; }
.gw-path-chip i canvas { display: block; }
.gw-path-chip em { font-style: normal; opacity: .9; }
.gw-path-cl { font-weight: 700; color: var(--muted); }
@media (max-width: 640px) {
  .gw-path-st { padding: 6px 8px; gap: 6px; }
  .gw-path-cl { display: none; }
}
.cr-mat.full b { color: #ffb36b; }
.cr-mat.full::after { content: attr(data-full); position: absolute; top: -6px; right: -4px; padding: 1px 5px; border-radius: 7px; background: #ff9d3d; color: #3a1d00; font: 800 9.5px/1.3 var(--font); }

/* ===== fish-island.css ===== */
/* Phase 2 – Agent Insel-Leben (island-ui.js): Reusen, Schatzkarte, Lagerfeuer. Präfix fi-.
   Fenster nutzen die Ausrüstungs-Klassen (.gw-*, fishing-catch.css) – gleiche Glas-Optik, gleiche Schriften. */

/* ───────── Kopfleiste ───────── */
.fi-topbtn.fi-hot .fw-xbadge { background: #ffd23f; color: #1b1440; animation: fiPulse 1.8s ease-in-out infinite; }
@keyframes fiPulse { 50% { box-shadow: 0 0 0 4px rgba(255, 210, 63, .35); } }

/* ───────── Lagerfeuer-Bonus: neben der Muschel-Pille ───────── */
.fi-buff {
  position: absolute; z-index: 19; top: calc(var(--fw-top-h, 52px) + 10px); left: calc(18px + var(--ew-w, 112px) + var(--safe-l));
  display: inline-flex; align-items: center; gap: 7px; height: 38px; padding: 0 11px 0 6px; border-radius: 14px; cursor: pointer;
  background: linear-gradient(180deg, rgba(120, 44, 18, .86), rgba(70, 24, 14, .9)); border: 1px solid rgba(255, 170, 90, .45);
  box-shadow: var(--fw-shadow), 0 0 14px rgba(255, 120, 40, .25); color: #fff; font: 600 14px/1 var(--font-display); white-space: nowrap;
  animation: fiIn .4s cubic-bezier(.2, 1.4, .4, 1) both;
}
.fi-buff.hidden { display: none; }
.fi-buff:hover { filter: brightness(1.1); }
.fi-buff-ic { width: 28px; height: 28px; display: grid; place-items: center; border-radius: 50%; font-size: 17px;
  background: radial-gradient(circle at 50% 60%, rgba(255, 190, 80, .55), rgba(255, 120, 40, 0)); animation: fiFlicker 1.3s ease-in-out infinite; }
.fi-buff-row { display: inline-flex; align-items: baseline; gap: 4px; font-variant-numeric: tabular-nums; }
.fi-buff-row + .fi-buff-row { padding-left: 7px; border-left: 1px solid rgba(255, 255, 255, .18); }
.fi-buff-row i { font-style: normal; font-size: 13px; }
.fi-buff-row b { font-weight: 600; color: #ffe0a8; }
.fi-buff-row small { font: 800 11.5px/1 var(--font); color: rgba(255, 255, 255, .78); }
.fi-buff.soon { animation: fiSoon 1s ease-in-out infinite; }
@keyframes fiSoon { 50% { opacity: .55; } }
@keyframes fiFlicker { 0%, 100% { transform: scale(1) rotate(-3deg); } 50% { transform: scale(1.08) rotate(3deg); } }
@keyframes fiIn { from { opacity: 0; transform: translateY(-6px) scale(.94); } }

/* ───────── Nähe-Hinweis (grillen / graben / leeren) ───────── */
.fi-near {
  position: absolute; z-index: 15; left: 50%; bottom: calc(138px + var(--safe-b)); transform: translateX(-50%);
  display: inline-flex; align-items: center; gap: 9px; padding: 7px 10px 7px 8px; border-radius: 999px; cursor: pointer;
  background: linear-gradient(180deg, rgba(214, 102, 46, .94), rgba(160, 62, 30, .94)); border: 1.5px solid rgba(255, 255, 255, .55); color: #fff;
  font: 600 14.5px/1 var(--font-display); box-shadow: 0 4px 0 rgba(0, 0, 0, .22), var(--fw-shadow); animation: fiNearIn .34s cubic-bezier(.2, 1.5, .4, 1) both;
}
.fi-near.hidden { display: none; }
.fi-near:hover { filter: brightness(1.08); }
.fi-near.full { background: linear-gradient(180deg, rgba(232, 176, 30, .96), rgba(186, 120, 14, .96)); }
.fi-near-ic { width: 28px; height: 28px; display: grid; place-items: center; border-radius: 50%; background: rgba(255, 255, 255, .2); font-size: 16px; }
.fi-near .fw-kbd { margin-left: 2px; }
@keyframes fiNearIn { from { opacity: 0; transform: translate(-50%, 8px) scale(.94); } }
.fw-root.busy .fi-near { display: none; }
/* Touch: Kachel links neben der Knopfspalte – wie der Händler-Hinweis (nie gleichzeitig: andere Orte) */
.fi-near.tile {
  left: auto; transform: none; right: calc(88px + var(--safe-r)); bottom: calc(136px + var(--safe-b)); z-index: 21;
  width: 64px; padding: 6px 3px; border-radius: 17px; flex-direction: column; gap: 3px; text-align: center; font-size: 12.5px; line-height: 1.05;
  animation-name: fiTileIn;
}
.fi-near.tile .fi-near-ic { width: 26px; height: 26px; font-size: 16px; }
@keyframes fiTileIn { from { opacity: 0; transform: scale(.9); } }
.fw-root:has(.mk-near.tile:not(.hidden)) .fi-near.tile { bottom: calc(220px + var(--safe-b)); }

/* ───────── kurze Meldungen ───────── */
.fi-pop {
  position: absolute; z-index: 16; left: 50%; bottom: calc(186px + var(--safe-b)); transform: translateX(-50%); max-width: min(520px, calc(100% - 24px));
  padding: 8px 14px; border-radius: 16px; background: var(--glass-2); border: 1px solid var(--glass-b); box-shadow: var(--fw-shadow);
  font: 800 13.5px/1.3 var(--font); color: #fff; text-align: center; pointer-events: none; animation: fiPopIn .3s cubic-bezier(.2, 1.5, .4, 1) both;
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
}
.fi-pop.hidden { display: none; }
.fi-pop.warn { background: rgba(70, 38, 10, .9); border-color: rgba(255, 201, 51, .55); color: #ffe9a8; }
.fi-pop.good { border-color: rgba(98, 217, 138, .6); }
.fi-pop.fire { background: rgba(96, 34, 14, .92); border-color: rgba(255, 160, 80, .6); color: #ffe6c4; }
.fi-pop.warm { background: rgba(110, 52, 16, .92); border-color: rgba(255, 150, 60, .7); color: #ffd9a8; }
@keyframes fiPopIn { from { opacity: 0; transform: translate(-50%, 8px) scale(.95); } }
.fw-root.touch .fi-pop { bottom: auto; top: calc(var(--ew-row, 110px) + var(--ew-h, 48px) + 54px); font-size: 12.5px; }

/* ───────── Platzieren ───────── */
.fi-place {
  position: absolute; z-index: 30; left: 50%; bottom: calc(24px + var(--safe-b)); transform: translateX(-50%);
  display: flex; align-items: center; gap: 10px; padding: 10px 12px 10px 16px; border-radius: 18px; max-width: calc(100% - 20px);
  background: var(--glass-2); border: 1.5px solid rgba(125, 255, 176, .55); box-shadow: var(--fw-shadow); color: #fff;
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); animation: fiPopIn .3s cubic-bezier(.2, 1.5, .4, 1) both;
}
.fi-place.hidden { display: none; }
/* Während des Auslegens unten nur die Platzier-Leiste: Ausrüstungsleiste, Steuerungszeile und Wasser-Hinweis treten zurück
   (sie haben dabei nichts zu tun) – so bleibt das Wasser vor der Figur frei zum Anklicken. */
.fw-root:has(.fi-place:not(.hidden)) :is(.fw-hotbar, .fw-help, .fw-hint) { visibility: hidden; }
.fi-place-txt { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.fi-place-txt b { font: 600 16px/1.1 var(--font-display); }
.fi-place-txt small { font: 700 12.5px/1.2 var(--font); color: var(--muted); }
.fw-root.touch .fi-place { bottom: auto; top: calc(var(--fw-top-h, 60px) + 8px); left: 8px; right: 8px; transform: none; max-width: none; flex-wrap: wrap; padding: 8px 10px; }
.fw-root.touch .fi-place-txt { flex: 1 1 100%; }
.fw-root.touch .fi-place .fi-b { flex: 1; }

/* ───────── Fenster ───────── */
.fi-modal.gw-modal { max-width: 720px !important; }
.fi-modal-map.gw-modal, .fi-modal-chest.gw-modal { background: none !important; border: none !important; box-shadow: none !important; overflow: visible !important; max-width: 720px !important; }
.fi-modal-chest.gw-modal { max-width: 420px !important; }
.fi-body { display: flex; flex-direction: column; gap: 12px; }
.fi-b { min-height: 40px; padding: 9px 14px; font-size: 14px; }
.fi-b.ghost { background: rgba(255, 255, 255, .08); color: #fff; border: 1.5px solid rgba(255, 255, 255, .2); }
.fi-b.ghost:hover:not(:disabled) { background: rgba(255, 255, 255, .16); }
.fi-b:disabled { opacity: .5; cursor: not-allowed; }
.fi-empty { color: var(--muted); font-weight: 700; font-size: 13px; }
.fi-empty.big { padding: 26px 8px; text-align: center; font-size: 15px; }
.fi-foot, .fi-guest { margin: 0; text-align: left; font-size: 13px; line-height: 1.45; color: var(--muted); }
.fi-guest { padding: 8px 10px; border-radius: 12px; background: rgba(255, 201, 51, .1); border: 1px dashed rgba(255, 201, 51, .35); color: #ffe9a8; font-weight: 700; }

/* Reusen-Karten */
.fi-traps-list { display: flex; flex-direction: column; gap: 10px; }
.fi-trap {
  position: relative; display: grid; grid-template-columns: 58px minmax(0, 1fr); gap: 12px; padding: 12px 14px 12px 10px; border-radius: 18px;
  background: rgba(8, 4, 30, .3); border: 1.5px solid rgba(255, 255, 255, .08); transition: border-color .2s;
}
.fi-trap.here { border-color: rgba(125, 255, 176, .4); }
.fi-trap.full { border-color: rgba(255, 210, 63, .6); background: linear-gradient(180deg, rgba(255, 210, 63, .1), rgba(8, 4, 30, .3)); }
.fi-trap.focus { animation: fiFocus 1.2s ease 2; }
@keyframes fiFocus { 50% { box-shadow: 0 0 0 3px rgba(255, 201, 51, .55); } }
.fi-trap.idle { opacity: .92; }
.fi-trap-ic { position: relative; width: 58px; height: 64px; }
.fi-trap-ic .buoy { position: absolute; left: 9px; bottom: 6px; width: 40px; height: 32px; border-radius: 50% 50% 46% 46%;
  background: linear-gradient(180deg, #ff6d4f 0 38%, #fbf7ee 38% 58%, #ff5b3d 58%); box-shadow: inset -4px -5px 0 rgba(0, 0, 0, .14), 0 3px 0 rgba(0, 0, 0, .25); }
.fi-trap-ic .flag { position: absolute; left: 28px; top: 2px; width: 3px; height: 30px; background: #3b3140; border-radius: 2px; }
.fi-trap-ic .flag::after { content: ''; position: absolute; left: 3px; top: 1px; width: 17px; height: 11px; background: var(--fc, #ffd23f); clip-path: polygon(0 0, 100% 50%, 0 100%); }
.fi-trap-ic b { position: absolute; left: 50%; bottom: 13px; transform: translateX(-50%); font: 700 13px/1 var(--font-display); color: #3b1d10; }
.fi-trap.idle .fi-trap-ic { filter: grayscale(.6) opacity(.7); }
.fi-trap-main { min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.fi-trap-head { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 10px; }
.fi-trap-head > b { font: 600 18px/1.1 var(--font-display); }
.fi-lvl { color: #ffd23f; font-size: 13px; letter-spacing: 1px; }
.fi-where { flex: 1 1 auto; text-align: right; font-size: 12.5px; font-weight: 700; color: var(--muted); }
.fi-fill { position: relative; height: 20px; border-radius: 10px; background: rgba(8, 4, 30, .55); overflow: hidden; box-shadow: inset 0 1px 3px rgba(0, 0, 0, .45); }
.fi-fill i { position: absolute; inset: 0 auto 0 0; border-radius: 10px; background: linear-gradient(90deg, #4fb0ff, #7dffb0); transition: width .4s; }
.fi-fill.full i { background: linear-gradient(90deg, #ffb83d, #ffd23f); }
.fi-fill span { position: relative; display: block; text-align: center; font: 800 11.5px/20px var(--font); color: #fff; text-shadow: 0 1px 2px rgba(0, 0, 0, .7); }
.fi-st { font-size: 12.5px; font-weight: 700; color: var(--muted); font-variant-numeric: tabular-nums; }
.fi-st.full { color: #ffd23f; }
.fi-rate { font-size: 11.5px; font-weight: 700; color: rgba(185, 177, 230, .75); }
.fi-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.fi-chip { display: inline-flex; align-items: center; gap: 5px; height: 30px; padding: 0 9px 0 6px; border-radius: 10px; background: rgba(255, 255, 255, .08); font-size: 12.5px; font-weight: 700; }
.fi-chip i { font-style: normal; font-size: 16px; }
.fi-chip b { color: #ffe9a8; font-variant-numeric: tabular-nums; }
.fi-chip.egg { background: rgba(255, 210, 63, .18); box-shadow: 0 0 0 1.5px rgba(255, 210, 63, .5); }
.fi-chip-cv { width: 34px; height: 23px; }
.fi-trap-btns { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 2px; }
.fi-up { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 8px 10px; border-radius: 12px; background: rgba(255, 255, 255, .05); }
.fi-up-txt { flex: 1 1 200px; display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.fi-up-txt small { font-size: 12px; font-weight: 800; color: var(--muted); }
.fi-cost { display: flex; flex-wrap: wrap; gap: 8px; font: 700 13px/1 var(--font); }
.fi-cost .miss { color: #ff8a9a; }
.fi-b.up { background: linear-gradient(180deg, #8f7bff, #6a55e8); color: #fff; }
.fi-buy { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; padding: 10px 12px; border-radius: 14px; background: rgba(255, 255, 255, .05);
  font-weight: 800; color: var(--muted); }
.fi-b.buy { background: linear-gradient(180deg, #ffe98a, #ffc933); color: #1b1440; }
/* Flusskrebse: Verkauf an Kalle */
.fi-krebs { display: flex; flex-direction: column; gap: 8px; padding: 10px 12px; border-radius: 14px; background: linear-gradient(90deg, rgba(217, 80, 46, .18), rgba(255, 255, 255, .04)); }
.fi-krebs-top { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.fi-krebs-ic { font-size: 26px; line-height: 1; }
.fi-krebs-txt { flex: 1 1 200px; display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.fi-krebs-txt b { font: 600 15px/1.15 var(--font-display); }
.fi-krebs-txt small { font-size: 12.5px; font-weight: 700; color: var(--muted); }
.fi-krebs-opt { display: flex; align-items: flex-start; gap: 8px; font-size: 13px; font-weight: 700; color: #e9e4ff; cursor: pointer; line-height: 1.35; }
.fi-check { flex: none; width: 18px; height: 18px; margin: 0; accent-color: #ffc933; cursor: pointer; }
.fi-gr-fish.krebs { background: linear-gradient(180deg, rgba(217, 80, 46, .25), rgba(8, 4, 30, .3)); }

/* Grill-Dialog */
.fi-gr-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding: 10px 12px; border-radius: 14px;
  background: linear-gradient(90deg, rgba(160, 62, 30, .35), rgba(8, 4, 30, .2)); }
.fi-gr-people { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.fi-gr-people b { font: 600 16px/1.1 var(--font-display); }
.fi-gr-people small { font-size: 12.5px; font-weight: 700; color: var(--muted); }
.fi-gr-cd { font: 800 13px/1.3 var(--font); color: #ffe0a8; font-variant-numeric: tabular-nums; }
.fi-gr-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(132px, 1fr)); gap: 8px; }
.fi-gr-fish {
  display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 8px 6px 10px; border-radius: 14px; cursor: pointer; color: #fff;
  background: rgba(8, 4, 30, .3); border: 1.5px solid color-mix(in srgb, var(--rc) 45%, transparent); font-family: var(--font); transition: transform .12s, border-color .12s;
}
.fi-gr-fish:hover:not(:disabled) { transform: translateY(-2px); border-color: var(--rc); }
.fi-gr-fish:disabled { opacity: .5; }
.fi-gr-cv { width: 96px; height: 56px; }
.fi-gr-emo { font-size: 36px; line-height: 56px; }
.fi-gr-fish b { font: 600 14px/1.15 var(--font-display); text-align: center; }
.fi-gr-fish small { font-size: 11.5px; font-weight: 700; color: var(--muted); }
.fi-gr-bon { font-style: normal; font: 800 11.5px/1.2 var(--font); padding: 3px 7px; border-radius: 8px; text-align: center; }
.fi-gr-bon.luck { background: rgba(98, 217, 138, .18); color: #9ff0b8; }
.fi-gr-bon.speed { background: rgba(255, 201, 51, .16); color: #ffe08a; }

/* ───────── Schatzkarte (Pergament) ───────── */
.fi-mapwin { color: #3a2e22; }
.fi-mapwin .fi-body { padding: 0; overflow: visible; }
.fi-map {
  position: relative; padding: 18px 18px 14px; border-radius: 8px; transform: rotate(-.4deg);
  background:
    radial-gradient(120% 70% at 10% 0%, rgba(255, 255, 255, .25), transparent 60%),
    linear-gradient(176deg, #4a3624 0%, #3b2a1b 100%);
  box-shadow: 0 0 0 1px rgba(255, 220, 160, .12), 0 18px 50px rgba(8, 4, 30, .6);
  animation: fiMapIn .45s cubic-bezier(.2, 1.3, .4, 1) both;
}
@keyframes fiMapIn { from { transform: rotate(-4deg) translateY(30px) scale(.94); opacity: 0; } }
.fi-map-tape { position: absolute; left: 50%; top: -11px; width: 120px; height: 26px; margin-left: -60px; transform: rotate(-2deg); z-index: 2;
  background: linear-gradient(180deg, rgba(255, 250, 230, .72), rgba(240, 228, 190, .62)); box-shadow: 0 1px 3px rgba(0, 0, 0, .25); }
.fi-map-x { position: absolute; top: 10px; right: 10px; z-index: 3; }
.fi-map .fi-map-title { margin: 0 0 10px; text-align: left; font: 700 24px/1 var(--font-display); color: #f3e2bb; letter-spacing: .4px; }
.fi-map-cv { display: block; width: 100%; height: auto; }
.fi-map-info { display: flex; flex-direction: column; gap: 4px; margin-top: 10px; }
.fi-map-info p { margin: 0; text-align: left; color: #ecdcb6; font-size: 14px; line-height: 1.45; }
.fi-map-info b { color: #fff3d2; }
.fi-map-small { font-size: 12.5px !important; color: rgba(236, 220, 182, .7) !important; font-weight: 700; }

/* ───────── Schatzkiste ───────── */
.fi-chest.gw { background: linear-gradient(180deg, #4a3214, #2c1d0c); border-radius: 22px; border: 2px solid rgba(255, 204, 68, .45); box-shadow: 0 20px 60px rgba(0, 0, 0, .55), 0 0 40px rgba(255, 190, 60, .25); }
.fi-chest > .gw-x { position: absolute; top: 12px; right: 12px; z-index: 3; }
.fi-chest .fi-body { padding: 18px 20px 20px; align-items: center; }
.fi-chest-body { display: flex; flex-direction: column; align-items: center; gap: 10px; width: 100%; }
.fi-chest-body h3 { margin: 0; font: 700 28px/1 var(--font-display); color: #ffe08a; text-shadow: 0 3px 0 rgba(0, 0, 0, .35); }
.fi-chest-art { position: relative; width: 120px; height: 96px; }
.fi-chest-art .box { position: absolute; left: 14px; right: 14px; bottom: 6px; height: 46px; border-radius: 6px; background: linear-gradient(180deg, #a86b33, #7a4a20);
  box-shadow: inset 0 0 0 3px #ffcc44, 0 4px 0 rgba(0, 0, 0, .35); }
.fi-chest-art .lid { position: absolute; left: 12px; right: 12px; top: 18px; height: 30px; border-radius: 40px 40px 6px 6px; background: linear-gradient(180deg, #b97a3c, #8b5a2b);
  box-shadow: inset 0 0 0 3px #ffcc44; transform-origin: 50% 100%; animation: fiLid .7s .25s cubic-bezier(.2, 1.5, .4, 1) both; }
.fi-chest-art .glow { position: absolute; left: 50%; top: 40px; width: 140px; height: 70px; margin-left: -70px; border-radius: 50%;
  background: radial-gradient(closest-side, rgba(255, 220, 110, .9), rgba(255, 200, 60, 0)); mix-blend-mode: screen; animation: fiGlow 1.6s ease-in-out infinite; }
@keyframes fiLid { to { transform: translateY(-14px) rotate(-18deg); } }
@keyframes fiGlow { 50% { opacity: .55; transform: scale(1.08); } }
.fi-chest-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; width: 100%; }
.fi-chest-list li { display: flex; align-items: center; gap: 10px; padding: 8px 12px; border-radius: 12px; background: rgba(255, 255, 255, .08); font-size: 15px;
  animation: fiPopIn2 .4s cubic-bezier(.2, 1.5, .4, 1) both; }
.fi-chest-list li:nth-child(2) { animation-delay: .1s; }
.fi-chest-list li:nth-child(3) { animation-delay: .2s; }
.fi-chest-list li:nth-child(n+4) { animation-delay: .3s; }
@keyframes fiPopIn2 { from { opacity: 0; transform: translateY(8px) scale(.95); } }
.fi-ch-ic { font-size: 20px; width: 26px; text-align: center; }
.fi-chest-note { margin: 4px 0 0; padding: 12px 14px; border-radius: 10px; background: linear-gradient(176deg, #f8f0dc, #ead9b5); color: #3a2e22;
  font: italic 600 14.5px/1.45 var(--font); text-align: left; transform: rotate(-.8deg); box-shadow: 0 6px 16px rgba(0, 0, 0, .35); }
.fi-chest-note cite { display: block; margin-top: 6px; text-align: right; font-size: 12.5px; color: #6d5a43; }
.fi-chest-small { margin: 0 !important; font-size: 12.5px; color: #e9d7a8 !important; text-align: center; }
.fi-chest-ok { min-width: 160px; margin-top: 4px; }

/* ───────── Handy ───────── */
@media (max-width: 760px) {
  /* Bonus: kompakt rechts in der HUD-Zeile der Muschel-Pille (--ew-row); läuft ein Event (Leiste rechts daneben),
     rutscht er unter die Zeile an den rechten Rand */
  .fi-buff { top: var(--ew-row, 108px); left: auto; right: calc(8px + var(--safe-r)); height: var(--ew-h, 48px); padding: 0 9px 0 5px; gap: 5px;
    flex-direction: row; font-size: 13px; border-radius: 13px; }
  .fi-buff-row { flex-direction: column; align-items: center; gap: 2px; }
  .fi-buff-row i { display: none; }
  .fi-buff-row + .fi-buff-row { padding-left: 5px; }
  .fw-root:has(.fev-bar:not(.hidden)) .fi-buff { top: calc(var(--ew-row, 108px) + var(--ew-h, 48px) + 6px); height: 40px; }
  .fi-trap { grid-template-columns: 44px minmax(0, 1fr); gap: 8px; padding: 10px 10px 10px 6px; }
  .fi-trap-ic { width: 44px; height: 52px; transform: scale(.8); transform-origin: 0 0; }
  .fi-where { text-align: left; flex-basis: 100%; }
  .fi-trap-btns .fi-b { flex: 1 1 auto; padding: 8px 10px; font-size: 13px; }
  .fi-gr-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .fi-map { padding: 14px 10px 12px; }
  .fi-map .fi-map-title { font-size: 20px; }
}
@media (prefers-reduced-motion: reduce) {
  .fi-buff, .fi-buff-ic, .fi-near, .fi-pop, .fi-map, .fi-chest-art .lid, .fi-chest-art .glow, .fi-chest-list li, .fi-trap.focus { animation-duration: .01s !important; animation-iteration-count: 1 !important; }
}
.fi-gr-people small.fi-gr-sit { color: #ffd9a8; }

/* ===== fish-pets.css ===== */
/* Phase 2 – Agent Haustier: Tier-Blasen über der Szene, Hinweis-Karten, Pflege-Menü (pet-ui.js) */

/* ───────── Blasen über den Tieren ───────── */
.fp-layer { position: absolute; inset: 0; pointer-events: none; overflow: hidden; z-index: 3; }
.fp-bub {
  position: absolute; left: 0; top: 0; will-change: transform, opacity; white-space: nowrap;
  font: 26px/1 "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif; filter: drop-shadow(0 3px 5px rgba(0, 0, 0, .3));
  animation: fpPop .3s cubic-bezier(.2, 1.6, .4, 1) both;
}
.fp-bub.meow, .fp-bub.rar, .fp-bub.name, .fp-bub.rescue, .fp-bub.hatch, .fp-bub.swarm {
  padding: 5px 11px; border-radius: 14px; background: #fff; color: #231a4a; font: 700 14px/1.15 var(--font-display);
  box-shadow: 0 6px 16px rgba(10, 6, 40, .3); filter: none;
}
.fp-bub.meow { background: #fff6d8; transform-origin: 50% 100%; }
.fp-bub.rar { background: rgba(20, 14, 50, .9); color: var(--rc, #fff); border: 2px solid var(--rc, #fff); box-shadow: 0 0 16px color-mix(in srgb, var(--rc, #fff) 55%, transparent); }
.fp-bub.name { font-size: 13px; background: rgba(20, 14, 50, .88); color: #fff; }
.fp-bub.hatch { background: linear-gradient(180deg, #fff6a8, #ffc933); font-size: 16px; }
.fp-bub.swarm { background: #e6f6ff; }
.fp-bub.zz { font-size: 20px; opacity: .85; }
@keyframes fpPop { from { opacity: 0; scale: .5; } }

/* ───────── Hinweis-Karten (über ctx.notice) ───────── */
.fp-card {
  position: fixed; z-index: 58; top: 74px; left: 50%; transform: translateX(-50%);
  display: flex; align-items: center; gap: 12px; width: max-content; max-width: min(460px, calc(100vw - 24px));
  padding: 12px 18px 12px 12px; border-radius: 18px; cursor: pointer;
  background: rgba(22, 16, 56, .94); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  border: 2px solid rgba(255, 201, 51, .55); box-shadow: var(--shadow), 0 0 0 4px rgba(255, 201, 51, .12);
  color: #fff; font-family: var(--font); animation: fpCardIn .38s cubic-bezier(.2, 1.5, .4, 1) both;
}
.fp-card.out { animation: fpCardOut .3s ease forwards; }
.fp-card-ic { flex: none; width: 46px; height: 46px; display: grid; place-items: center; border-radius: 14px; background: rgba(255, 201, 51, .16); font-size: 26px; }
.fp-card-tx { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.fp-card-tx b { font: 700 17px/1.15 var(--font-display); color: var(--primary); }
.fp-card-tx span { font-weight: 700; font-size: 14px; line-height: 1.35; }
@keyframes fpCardIn { from { opacity: 0; transform: translate(-50%, -16px) scale(.9); } }
@keyframes fpCardOut { to { opacity: 0; transform: translate(-50%, -12px); } }

/* ───────── Pflege-Menü ───────── */
.fp-modal { max-width: 640px !important; }
.fp-win .gw-head { padding-bottom: 8px; }
.fp-title { display: flex; align-items: center; gap: 12px; min-width: 0; }
.fp-head-art { flex: none; width: 64px; height: 64px; image-rendering: pixelated; border-radius: 16px; background: rgba(255, 255, 255, .08); }
.fp-nm { display: flex; align-items: center; gap: 6px; }
.fp-ren { border: none; background: rgba(255, 255, 255, .1); border-radius: 10px; width: 30px; height: 30px; cursor: pointer; font-size: 14px; }
.fp-ren:hover { background: rgba(255, 255, 255, .2); }
.fp-tabs .gw-tab { padding: 9px 6px; gap: 6px; font-weight: 800; font-size: 14px; color: var(--muted); background: none; }
.fp-tabs .gw-tab.sel { background: var(--primary); color: #1b1440; box-shadow: 0 3px 0 rgba(0, 0, 0, .22); }
.fp-rename { display: flex; gap: 8px; margin-bottom: 12px; }
.fp-rename .fp-name-in { flex: 1; }
.fp-name-in {
  width: 100%; padding: 12px 14px; border-radius: 14px; border: 2px solid rgba(255, 255, 255, .2); background: rgba(8, 4, 30, .4);
  color: #fff; font: 700 18px/1.2 var(--font-display); outline: none;
}
.fp-name-in:focus { border-color: var(--primary); }
.fp-top { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 14px; align-items: center; }
.fp-stage { display: grid; place-items: center; border-radius: 22px; padding: 6px; background: radial-gradient(closest-side, rgba(255, 220, 140, .3), rgba(255, 255, 255, .04)); }
.fp-big { width: 128px; height: 128px; image-rendering: pixelated; }
.fp-info { display: flex; flex-direction: column; gap: 7px; min-width: 0; }
.fp-need { display: grid; grid-template-columns: 26px minmax(0, 1fr); align-items: center; gap: 8px; padding: 6px 10px 7px 8px; border-radius: 12px; background: rgba(8, 4, 30, .3); }
.fp-need-ic { font-size: 18px; text-align: center; }
.fp-need-top { display: flex; justify-content: space-between; gap: 8px; margin-bottom: 4px; }
.fp-need-top small { font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .6px; color: var(--muted); }
.fp-need-top b { font: 700 13.5px/1 var(--font-display); }
.fp-need-bar { height: 7px; border-radius: 5px; background: rgba(255, 255, 255, .1); overflow: hidden; }
.fp-need-bar i { display: block; height: 100%; border-radius: 5px; background: linear-gradient(90deg, #7be0a0, #33d17a); transition: width .5s ease; }
.fp-need.low .fp-need-bar i { background: linear-gradient(90deg, #ffd27a, #ffb23d); }
.fp-acts { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; }
.fp-act {
  display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 10px 4px 9px; border-radius: 16px; cursor: pointer;
  border: 2px solid rgba(255, 255, 255, .14); background: rgba(255, 255, 255, .07); color: #fff; font: 800 13px/1.1 var(--font);
  transition: transform .12s, background .12s;
}
.fp-act i { font-style: normal; font-size: 24px; line-height: 1; }
.fp-act:hover { background: rgba(255, 201, 51, .18); border-color: rgba(255, 201, 51, .5); transform: translateY(-2px); }
.fp-act:active { transform: scale(.96); }
.fp-act.on { background: rgba(120, 150, 255, .2); border-color: rgba(140, 170, 255, .5); }
.fp-lines li > span { flex: 1; min-width: 0; }
.fp-mini-bar { display: block; height: 5px; margin-top: 5px; border-radius: 4px; background: rgba(255, 255, 255, .12); overflow: hidden; }
.fp-mini-bar i { display: block; height: 100%; background: var(--primary); border-radius: 4px; }
.fp-wide { width: 100%; }
.fp-hint { margin: 0; font-size: 13.5px; font-weight: 700; color: var(--muted); line-height: 1.4; text-align: left; }
.fp-empty { margin: 8px 0; text-align: center; font-weight: 800; color: var(--muted); }
.gw-msg.bad { color: #ff9aa6; }

/* Füttern */
.fp-feed-head { display: flex; align-items: center; gap: 12px; }
.fp-feed-head b { font: 700 18px/1.2 var(--font-display); }
.fp-back { border: none; border-radius: 12px; padding: 8px 12px; background: rgba(255, 255, 255, .1); color: #fff; font-weight: 800; cursor: pointer; }
.fp-fish { display: grid; grid-template-columns: repeat(auto-fill, minmax(104px, 1fr)); gap: 8px; }
.fp-fishb {
  position: relative; display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 8px 6px; border-radius: 14px; cursor: pointer;
  border: 2px solid color-mix(in srgb, var(--rc) 55%, transparent); background: rgba(8, 4, 30, .35); color: #fff;
}
.fp-fishb canvas { width: 56px; height: 56px; }
.fp-fishb b { font: 700 13px/1.15 var(--font-display); text-align: center; }
.fp-fishb small { font-size: 11.5px; font-weight: 700; color: var(--muted); }
.fp-fishb em { position: absolute; top: 4px; right: 6px; font-style: normal; font-size: 15px; }
.fp-fishb:hover { background: rgba(255, 201, 51, .14); }

/* Tricks */
.fp-trick { display: grid; grid-template-columns: 40px minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 9px 10px; border-radius: 14px; background: rgba(8, 4, 30, .3); }
.fp-trick-ic { font-size: 24px; text-align: center; }
.fp-trick-main b { font: 700 16px/1.1 var(--font-display); display: block; margin-bottom: 5px; }
.fp-trick-main small { display: block; margin-top: 4px; font-size: 11.5px; font-weight: 800; color: var(--muted); }
.fp-trick.done .fp-need-bar i { background: linear-gradient(90deg, #ffe58a, #ffc933); }
.fp-trick.locked { opacity: .55; }
.fp-trick .btn { min-width: 98px; }

/* Zubehör */
.fp-acc-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(118px, 1fr)); gap: 8px; }
.fp-accb {
  display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 10px 6px; border-radius: 16px; cursor: pointer;
  border: 2px solid rgba(255, 255, 255, .14); background: rgba(8, 4, 30, .3); color: #fff;
}
.fp-accb i { font-style: normal; font-size: 28px; line-height: 1.1; }
.fp-accb b { font: 700 14px/1.15 var(--font-display); }
.fp-accb small { font-size: 12px; font-weight: 800; color: var(--muted); }
.fp-accb.owned small { color: #7be0a0; }
.fp-accb.sel { border-color: var(--primary); background: rgba(255, 201, 51, .14); }
.fp-accb:hover { background: rgba(255, 255, 255, .08); }

/* Gehege */
.fp-pen-list { display: flex; flex-direction: column; gap: 8px; }
.fp-pen-row { display: grid; grid-template-columns: 64px minmax(0, 1fr) auto auto; align-items: center; gap: 10px; padding: 6px 10px 6px 6px; border-radius: 16px; background: rgba(8, 4, 30, .3); border: 2px solid transparent; }
.fp-pen-row.sel { border-color: rgba(255, 201, 51, .55); }
.fp-pen-row canvas { width: 64px; height: 64px; image-rendering: pixelated; }
.fp-pen-main { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.fp-pen-main b { font: 700 16px/1.1 var(--font-display); }
.fp-pen-main small { font-size: 12px; font-weight: 700; color: var(--muted); }
.fp-pen-row .btn { padding: 8px 12px; font-size: 13.5px; }
.fp-h4 { margin: 6px 0 0; font: 700 16px/1.2 var(--font-display); text-align: left; }
.fp-eggs { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 8px; }
.fp-egg { display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 8px; border-radius: 14px; background: rgba(8, 4, 30, .3); }
.fp-egg canvas { width: 64px; height: 64px; image-rendering: pixelated; }
.fp-egg b { font: 700 14px/1.1 var(--font-display); }
.fp-egg small { font-size: 12px; font-weight: 800; color: var(--muted); }
.fp-egg .fp-need-bar { width: 100%; }
.fp-egg.ready { box-shadow: 0 0 0 2px rgba(255, 201, 51, .6); }
.fp-release { margin-top: 4px; font-size: 13px; color: var(--muted); }
.fp-release summary { cursor: pointer; font-weight: 800; }
.fp-rel-b { margin: 6px 6px 0 0; padding: 6px 10px; font-size: 13px; }

/* Tagebuch */
.fp-diary-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.fp-diary-list li { display: grid; grid-template-columns: 92px minmax(0, 1fr); gap: 10px; padding: 8px 12px; border-radius: 12px; background: rgba(8, 4, 30, .3); font-weight: 700; font-size: 14px; line-height: 1.35; }
.fp-diary-list small { color: var(--muted); font-weight: 800; font-size: 12px; padding-top: 2px; }

/* Namen-Dialog */
.fp-namewin .gw-sub { white-space: normal; }
.fp-name-body { display: flex; flex-direction: column; align-items: center; gap: 12px; padding-top: 6px; }
.fp-hatch-art { width: 160px; height: 160px; image-rendering: pixelated; animation: fpHop 1.2s ease-in-out infinite; }
.fp-big-ic { font-size: 70px; }
.fp-ideas { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; }
.fp-chip { border: none; border-radius: 999px; padding: 6px 12px; background: rgba(255, 255, 255, .1); color: #fff; font-weight: 800; cursor: pointer; }
.fp-chip:hover { background: rgba(255, 201, 51, .25); }
.fp-ok { width: 100%; }
@keyframes fpHop { 50% { transform: translateY(-6px); } }

/* Handy */
@media (max-width: 560px) {
  .fp-top { grid-template-columns: 1fr; }
  .fp-stage { justify-self: center; padding: 2px 18px; }
  .fp-big { width: 96px; height: 96px; }
  .fp-acts { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 5px; }
  .fp-act { padding: 8px 2px; font-size: 11.5px; border-radius: 12px; }
  .fp-act i { font-size: 21px; }
  .fp-tab-tx { display: none; }
  .fp-tabs .gw-tab { padding: 9px 4px; }
  .fp-tabs .gw-tab-ic { font-size: 20px; }
  .fp-pen-row { grid-template-columns: 48px minmax(0, 1fr); }
  .fp-pen-row canvas { width: 48px; height: 48px; }
  .fp-pen-row .btn { grid-column: span 1; }
  .fp-diary-list li { grid-template-columns: 1fr; gap: 2px; }
  .fp-card { top: 64px; }
  .fp-head-art { width: 48px; height: 48px; }
}
/* (Polish P2) Reiter „Taschen-Ei“ im Pflege-Menü (gemeinsamer Tier-Knopf) */
.fp-tabs .gw-tab { min-width: 0; }
.fp-tabs .fp-tab-tei { position: relative; white-space: nowrap; flex: 0 0 auto; padding-left: 10px; padding-right: 10px; color: #ffe08a; box-shadow: inset 1px 0 0 rgba(255, 255, 255, .12); border-radius: 0 12px 12px 0; }
.fp-tabs .fp-tab-tei:hover { color: #fff; background: rgba(255, 224, 138, .12); }
.fp-tei-dot { position: absolute; top: 5px; right: 7px; width: 9px; height: 9px; border-radius: 50%; background: #ff4d5e; box-shadow: 0 0 0 2px rgba(20, 12, 50, .8); }
.fp-tei-dot.hidden { display: none; }

/* ===== fish-egg.css ===== */
/* Phase 2 – Agent Taschen-Ei: das Tamagotchi-Gerät (public/js/pet-egg.js, fishing/pet-egg-ui.js) */

/* ───────── Gerät ───────── */
.tei-dev {
  --tei-shell: #ff8fa3;
  --tei-dark: color-mix(in srgb, var(--tei-shell) 52%, #2a0f3a);
  --tei-deep: color-mix(in srgb, var(--tei-shell) 30%, #1a0a26);
  --tei-lcd: #c3cea4;
  --tei-ink: #1d2619;
  position: relative; width: 284px; padding-top: 14px; outline: none;
  font-family: var(--font, 'Nunito', system-ui, sans-serif); color: #fff;
  user-select: none; -webkit-user-select: none; -webkit-tap-highlight-color: transparent; touch-action: manipulation;
}
.tei-shell {
  position: relative; width: 284px; height: 410px;
  border-radius: 50% 50% 47% 47% / 57% 57% 43% 43%;
  background:
    radial-gradient(70% 46% at 30% 16%, rgba(255, 255, 255, .5), rgba(255, 255, 255, 0) 70%),
    radial-gradient(1.4px 1.4px at 20% 30%, rgba(255, 255, 255, .55) 50%, transparent 51%) 0 0 / 23px 19px,
    radial-gradient(1.2px 1.2px at 60% 70%, rgba(255, 255, 255, .35) 50%, transparent 51%) 0 0 / 17px 29px,
    radial-gradient(100% 80% at 70% 100%, var(--tei-dark) 0%, transparent 62%),
    var(--tei-shell);
  box-shadow:
    inset -12px -16px 28px color-mix(in srgb, var(--tei-shell) 45%, #2a0f3a),
    inset 10px 12px 20px rgba(255, 255, 255, .32),
    inset 0 0 0 1px rgba(255, 255, 255, .18),
    0 22px 44px rgba(8, 4, 30, .55), 0 4px 10px rgba(8, 4, 30, .3);
}
.tei-shine {
  position: absolute; left: 34px; top: 30px; width: 70px; height: 26px; border-radius: 50%;
  background: linear-gradient(180deg, rgba(255, 255, 255, .55), rgba(255, 255, 255, 0)); transform: rotate(-22deg); pointer-events: none;
}
/* Schlüsselring */
.tei-ring {
  position: absolute; left: 50%; top: -16px; width: 24px; height: 24px; margin-left: -12px; border-radius: 50%;
  border: 4px solid #e6e1f3; box-shadow: inset 0 -2px 0 rgba(0, 0, 0, .18), 0 2px 3px rgba(8, 4, 30, .35);
}
.tei-ring::after {
  content: ''; position: absolute; left: 50%; bottom: -12px; width: 10px; height: 9px; margin-left: -5px; border-radius: 4px 4px 2px 2px;
  background: linear-gradient(180deg, var(--tei-shell), var(--tei-dark));
}

/* Rahmen um das LCD */
.tei-bezel {
  position: absolute; left: 50%; top: 44px; width: 226px; transform: translateX(-50%); padding: 9px 9px 7px;
  border-radius: 26px 26px 34px 34px;
  background: linear-gradient(180deg, #3a2f52, #241c36);
  box-shadow: inset 0 2px 0 rgba(255, 255, 255, .12), inset 0 -3px 6px rgba(0, 0, 0, .35), 0 2px 0 rgba(255, 255, 255, .35), 0 -1px 0 rgba(0, 0, 0, .25);
}
.tei-glass {
  position: relative; padding: 2px 5px; border-radius: 12px;
  background:
    linear-gradient(160deg, rgba(255, 255, 255, .22), rgba(255, 255, 255, 0) 38%),
    linear-gradient(180deg, #ccd6ad, var(--tei-lcd) 55%, #b2bd90);
  box-shadow: inset 0 3px 6px rgba(20, 30, 10, .45), inset 0 -1px 0 rgba(255, 255, 255, .25);
}
.tei-screen { position: relative; }
.tei-lcd { display: block; width: 100%; aspect-ratio: 3 / 2; height: auto; cursor: pointer; }
.tei-icons { display: grid; grid-template-columns: repeat(4, 1fr); height: 26px; }
.tei-ic {
  display: grid; place-items: center; padding: 0; margin: 0; border: 0; background: none; cursor: pointer; opacity: .2;
  transition: opacity .12s; border-radius: 6px;
}
.tei-ic canvas { width: 21px; height: 21px; image-rendering: pixelated; filter: drop-shadow(1px 1px 0 rgba(20, 28, 16, .2)); }
.tei-ic:hover { opacity: .45; }
.tei-ic.on { opacity: .95; }
.tei-ic.dim:hover { opacity: .28; }
.tei-ic:focus { outline: none; }
.tei-call {
  position: absolute; right: 2px; top: 2px; width: 13px; height: 13px; border-radius: 50%; display: grid; place-items: center;
  font: 900 10px/1 var(--font-display, 'Fredoka', sans-serif); font-style: normal; color: var(--tei-lcd); background: var(--tei-ink); opacity: .1; transition: opacity .1s;
}
.tei-call.on { opacity: .9; }

/* Text unter dem Bildschirm */
.tei-capbox { height: 54px; padding: 6px 4px 0; text-align: center; overflow: hidden; }
.tei-cap, .tei-capsub { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; overflow-wrap: anywhere; }
.tei-cap { font: 700 12.5px/1.25 var(--font, 'Nunito', sans-serif); color: #f3efff; }
.tei-capsub { margin-top: 2px; font: 600 11px/1.3 var(--font, 'Nunito', sans-serif); color: #b8afd9; }
.tei-capbox.two .tei-capsub { -webkit-line-clamp: 1; }
.tei-capsub:empty { display: none; }

/* Namens-Eingabe */
.tei-extra {
  position: absolute; left: 6px; right: 6px; bottom: 6px; padding: 8px; border-radius: 16px 16px 26px 26px;
  background: #2b2240; box-shadow: 0 -4px 12px rgba(0, 0, 0, .35);
}
.tei-name-l { display: block; margin-bottom: 6px; font: 700 12.5px var(--font, 'Nunito', sans-serif); text-align: center; color: #fff; }
.tei-name-row { display: flex; gap: 5px; }
.tei-name-in {
  flex: 1; min-width: 0; padding: 7px 9px; border-radius: 10px; border: 2px solid rgba(255, 255, 255, .16); background: #171126; color: #fff;
  font: 700 14px var(--font, 'Nunito', sans-serif); outline: none; user-select: text; -webkit-user-select: text;
}
.tei-name-in:focus { border-color: #ffc933; }
.tei-name-ok, .tei-name-no {
  flex: none; padding: 0 9px; border: 0; border-radius: 10px; font: 700 12.5px var(--font-display, 'Fredoka', sans-serif); cursor: pointer;
}
.tei-name-ok { background: #ffc933; color: #3a2400; }
.tei-name-no { background: rgba(255, 255, 255, .1); color: #ddd6ff; }
.tei-name-ok:disabled { opacity: .5; }

/* Aufdruck */
.tei-brand {
  position: absolute; left: 0; right: 0; top: 305px; text-align: center; pointer-events: none; line-height: 1;
  color: var(--tei-deep); opacity: .7; text-shadow: 0 1px 0 rgba(255, 255, 255, .35);
}
.tei-brand b { font: 700 11px var(--font-display, 'Fredoka', sans-serif); letter-spacing: .32em; margin-right: -.32em; }
.tei-brand span { display: none; }

/* Die drei Knöpfe */
.tei-btns { position: absolute; left: 0; right: 0; top: 322px; display: flex; justify-content: center; gap: 20px; }
.tei-bw { display: flex; flex-direction: column; align-items: center; gap: 1px; }
.tei-bw-a { transform: translate(4px, -6px); }
.tei-bw-c { transform: translate(-4px, -6px); }
.tei-bw-b { transform: translateY(4px); }
.tei-btn {
  width: 36px; height: 36px; padding: 0; border-radius: 50%; border: 0; cursor: pointer;
  background: radial-gradient(70% 70% at 35% 30%, #fffdf6, #efe7d6 55%, #d5c9b0);
  box-shadow: 0 4px 0 #a7987c, 0 6px 8px rgba(30, 10, 40, .45), inset 0 -2px 3px rgba(120, 100, 70, .35);
  transition: transform .06s, box-shadow .06s;
}
.tei-btn.down { transform: translateY(3px); box-shadow: 0 1px 0 #a7987c, 0 2px 4px rgba(30, 10, 40, .4), inset 0 2px 4px rgba(120, 100, 70, .45); }
.tei-btn:focus-visible { outline: 3px solid #ffc933; outline-offset: 3px; }
.tei-bl { font: 700 10.5px var(--font-display, 'Fredoka', sans-serif); color: var(--tei-deep); opacity: .75; text-shadow: 0 1px 0 rgba(255, 255, 255, .35); }
.tei-speaker { position: absolute; left: 50%; bottom: 16px; display: flex; gap: 5px; transform: translateX(-50%); pointer-events: none; }
.tei-speaker i { width: 4px; height: 4px; border-radius: 50%; background: var(--tei-deep); opacity: .45; box-shadow: 0 1px 0 rgba(255, 255, 255, .3); }

/* Zuklappen */
.tei-x {
  position: absolute; z-index: 2; right: 2px; top: 14px; width: 30px; height: 30px; border-radius: 50%; border: 1px solid rgba(255, 255, 255, .22);
  background: rgba(24, 16, 44, .82); color: #fff; font: 700 13px var(--font, 'Nunito', sans-serif); cursor: pointer; box-shadow: 0 4px 10px rgba(8, 4, 30, .4);
}
.tei-x:hover { background: rgba(48, 32, 84, .95); }
.tei-dev:focus-visible .tei-shell { outline: 2px solid rgba(255, 201, 51, .45); outline-offset: 3px; }

/* ───────── Startseite & Lobby: schwebendes Fenster + Ei-Symbol ───────── */
.tei-pop { position: fixed; z-index: 46; left: 0; top: 0; cursor: grab; filter: drop-shadow(0 0 0 transparent); animation: peIn .22s cubic-bezier(.2, 1.4, .4, 1); }
.tei-pop.drag { cursor: grabbing; }
.tei-pop.mob { cursor: default; }
.tei-pop.hidden { display: none; }
@keyframes peIn { from { opacity: 0; transform: translateY(-10px) scale(.92); } }

.tei-launch {
  position: relative; flex: none; width: 44px; height: 48px; margin-right: 10px; padding: 0; border: 0; background: none; cursor: pointer;
  display: grid; place-items: center; border-radius: 14px; transition: transform .15s;
}
.tei-launch:hover { transform: translateY(-2px) rotate(-4deg); }
.tei-launch:focus-visible { outline: 3px solid #ffc933; outline-offset: 2px; }
.tei-l-egg {
  position: relative; width: 36px; height: 44px; border-radius: 50% 50% 46% 46% / 58% 58% 42% 42%;
  background: radial-gradient(60% 40% at 32% 22%, rgba(255, 255, 255, .55), transparent 70%), var(--tei-shell, #ff8fa3);
  box-shadow: inset -4px -5px 8px color-mix(in srgb, var(--tei-shell, #ff8fa3) 45%, #2a0f3a), 0 4px 10px rgba(8, 4, 30, .45);
}
.tei-launch.open .tei-l-egg { box-shadow: inset -4px -5px 8px rgba(120, 20, 60, .45), 0 0 0 3px rgba(255, 201, 51, .8), 0 4px 10px rgba(8, 4, 30, .45); }
.tei-l-scr { position: absolute; left: 7px; top: 11px; width: 22px; height: 17px; border-radius: 4px; background: #c3cea4; box-shadow: inset 0 1px 2px rgba(20, 30, 10, .5), 0 0 0 2px #2c2340; display: grid; place-items: center; }
.tei-mini-lcd { width: 16px; height: 12px; image-rendering: pixelated; }
.tei-l-dots { position: absolute; left: 0; right: 0; bottom: 6px; display: flex; justify-content: center; gap: 3px; }
.tei-l-dots i { width: 4px; height: 4px; border-radius: 50%; background: #f5eedd; box-shadow: 0 1px 0 #a7987c; }
.tei-l-dots i:nth-child(2) { transform: translateY(1px); }
.tei-l-badge {
  position: absolute; right: -1px; top: 0; min-width: 16px; height: 16px; padding: 0 4px; border-radius: 8px; display: grid; place-items: center;
  background: #ff4d5e; color: #fff; font: 800 11px/1 var(--font, 'Nunito', sans-serif); font-style: normal; box-shadow: 0 0 0 2px #2a1d5a;
}
.tei-launch.new .tei-l-egg { animation: peWob 2.6s ease-in-out infinite; }
@keyframes peWob { 0%, 70%, 100% { transform: rotate(0); } 76% { transform: rotate(-9deg); } 84% { transform: rotate(8deg); } 92% { transform: rotate(-4deg); } }

@media (max-width: 559px) {
  .tei-launch { width: 38px; height: 46px; margin-right: 0; }
  .tei-l-egg { width: 32px; height: 40px; }
  .tei-l-scr { left: 6px; top: 10px; width: 20px; height: 15px; }
}

/* ───────── Angelwelt: schwebendes Fenster ───────── */
.tei-float { position: absolute; z-index: 24; right: 22px; top: 108px; cursor: grab; pointer-events: auto; animation: teiFade .2s ease-out; }
@keyframes teiFade { from { opacity: 0; } }
.tei-float.drag { cursor: grabbing; }
.tei-float.hidden { display: none; }
.tei-float.touch { right: auto; left: 6px; top: 150px; cursor: default; transform: scale(.84); transform-origin: top left; }
@media (max-height: 760px) {
  .tei-float { top: 96px; transform: scale(.8); transform-origin: top right; }
  .tei-float.touch { top: 56px; transform: scale(.66); transform-origin: top left; }
}
@media (max-height: 520px) {
  .tei-float { top: 52px; transform: scale(.62); }
  .tei-float.touch { top: 50px; left: 70px; transform: scale(.56); }
}

@media (prefers-reduced-motion: reduce) {
  .tei-pop, .tei-float, .tei-launch.new .tei-l-egg { animation: none; }
}

/* Touch-Knopf in der Angelwelt: Ruf-Abzeichen */
.fw-tbtn.tei-attn { position: relative; }
.fw-tbtn.tei-attn::after {
  content: '!'; position: absolute; right: -2px; top: -2px; min-width: 18px; height: 18px; border-radius: 9px; display: grid; place-items: center;
  background: #ff4d5e; color: #fff; font: 800 12px/1 var(--font, 'Nunito', sans-serif); box-shadow: 0 0 0 2px rgba(20, 14, 52, .9);
}

/* ===== fish-collect.css ===== */
/* Sammlung der Angelwelt (Phase 2, Agent „Sammlung“): Profil-Hintergründe der Sammel-Sets, Sammlungs-Panel (Trophäen,
   Titel, Sets, Kronen), Kronen im Lexikon, Kronen-Hinweis nach dem Fang, Titel in der Spielerliste, Wochen-Bestenliste.
   Farben/Schrift wie fishing.css (Glas-Panels, Fredoka/Nunito). */

/* ==========================================================================
   Profil-Hintergründe (backgrounds.js FX: wishwell, nightswarm, pikeden, mythsea, crownvault, observatory)
   ========================================================================== */
.pbg-wishwell { background: radial-gradient(60% 46% at 50% 18%, rgba(190,255,250,.32), transparent 70%), radial-gradient(80% 70% at 50% 60%, #2aa7ad 0%, #137083 55%, #083548 100%); }
.pbg-wishwell .s-wcaustic { inset: -10%; background: repeating-radial-gradient(circle at 30% 40%, rgba(255,255,255,.08) 0 2cqh, transparent 2cqh 7cqh), repeating-radial-gradient(circle at 75% 60%, rgba(255,255,255,.06) 0 1.6cqh, transparent 1.6cqh 6cqh); animation: colCaustic 12s ease-in-out infinite alternate; }
.pbg-wishwell .s-wcoins { left: 0; right: 0; bottom: 0; width: 100%; height: 62%; }
.pbg-wishwell .s-wrim { left: -5%; right: -5%; bottom: -14cqh; height: 26cqh; border-radius: 50% 50% 0 0 / 100% 100% 0 0; background: repeating-linear-gradient(90deg, #b9b2a6 0 12cqh, #9d9488 12cqh 13cqh), #b9b2a6; box-shadow: inset 0 2cqh 0 rgba(255,255,255,.18), 0 -1cqh 3cqh rgba(0,0,0,.35); }
.pbg-wishwell .wring { left: var(--x); top: var(--y); width: 30cqh; height: 12cqh; margin: -6cqh -15cqh; border-radius: 50%; border: max(1px, .6cqh) solid rgba(220,255,250,.6); animation: bgRipple calc(var(--t) * .8) ease-out var(--d) infinite; }
@keyframes colCaustic { from { transform: translate(-2%, -1%) rotate(-1deg); } to { transform: translate(2%, 1%) rotate(1deg); } }

.pbg-nightswarm { background: radial-gradient(40% 30% at 80% 18%, rgba(220,230,255,.18), transparent 70%), linear-gradient(180deg, #060a22 0%, #121c4e 44%, #1d2d6a 55%, #0a1434 55.4%, #08112b 78%, #050a1c 100%); }
.pbg-nightswarm .s-moon { right: 15%; top: 8%; width: 22cqh; height: 22cqh; }
.pbg-nightswarm .s-nrefl { right: calc(15% + 2cqh); width: 18cqh; top: 57%; bottom: 6%; }
.pbg-nightswarm .s-nrefl i { position: absolute; left: 0; right: 0; height: 1.4cqh; border-radius: 1cqh; background: rgba(255,240,190,.5); animation: bgBreathe 2.4s ease-in-out infinite alternate; }
.pbg-nightswarm .s-nrefl i:nth-child(1) { top: 6%; } .pbg-nightswarm .s-nrefl i:nth-child(2) { top: 30%; left: 18%; right: 14%; animation-delay: -.8s; } .pbg-nightswarm .s-nrefl i:nth-child(3) { top: 58%; left: 30%; right: 26%; animation-delay: -1.6s; }
.pbg-nightswarm .s-nreeds { bottom: 0; height: 64%; aspect-ratio: 1; transform-origin: 50% 100%; animation: bgSway 5s ease-in-out infinite alternate; }
.pbg-nightswarm .s-nreeds.l { left: -2%; } .pbg-nightswarm .s-nreeds.r { right: -3%; height: 54%; animation-delay: -2.4s; }
.pbg-nightswarm .nfly { left: var(--x); top: calc(30% + var(--y) * .55); width: 1.6cqh; height: 1.6cqh; border-radius: 50%; background: #f2ff8a; box-shadow: 0 0 2.2cqh .9cqh rgba(220,255,120,.65); animation: bgFly calc(var(--t) * 1.4) ease-in-out var(--d) infinite; }

.pbg-pikeden { background: radial-gradient(70% 50% at 50% -10%, rgba(220,255,170,.45), transparent 60%), linear-gradient(180deg, #6b9a4f 0%, #33623a 38%, #1b3d27 72%, #0f2618 100%); }
.pbg-pikeden .s-prays { inset: -20% -10%; background: repeating-linear-gradient(100deg, rgba(255,255,220,.08) 0 10cqh, transparent 10cqh 36cqh); animation: ppRays 10s ease-in-out infinite alternate; }
.pbg-pikeden .s-preeds { bottom: -2%; height: 92%; aspect-ratio: 1; transform-origin: 50% 100%; animation: bgSway 4.2s ease-in-out infinite alternate; }
.pbg-pikeden .s-preeds.l { left: -6%; } .pbg-pikeden .s-preeds.r { right: -8%; height: 80%; animation-delay: -2s; }
.pbg-pikeden .s-pikew { top: 46%; height: 18cqh; aspect-ratio: 160 / 44; left: 0; animation: colPike 16s ease-in-out infinite; }
.pbg-pikeden .pmote { left: var(--x); top: var(--y); width: .9cqh; height: .9cqh; border-radius: 50%; background: rgba(230,255,200,.55); animation: bgFly calc(var(--t) * 2) ease-in-out var(--d) infinite; }
@keyframes colPike { 0% { transform: translateX(120cqw) translateY(0); } 45% { transform: translateX(28cqw) translateY(-2cqh); } 60% { transform: translateX(26cqw) translateY(1cqh); } 100% { transform: translateX(-60cqw) translateY(0); } }

.pbg-mythsea { background: radial-gradient(60% 46% at 50% 112%, rgba(255,102,179,.42), transparent 70%), radial-gradient(40% 30% at 20% 20%, rgba(142,243,255,.16), transparent 70%), linear-gradient(180deg, #1c0f50 0%, #2a1172 52%, #12073a 100%); }
.pbg-mythsea .s-mrays { inset: -20% -10%; background: repeating-linear-gradient(80deg, rgba(200,170,255,.07) 0 12cqh, transparent 12cqh 40cqh); animation: ppRays 11s ease-in-out infinite alternate; }
.pbg-mythsea .s-morb { left: 50%; top: 40%; width: 40cqh; height: 40cqh; margin: -20cqh; border-radius: 50%; background: radial-gradient(circle, rgba(255,214,250,.55), rgba(255,102,179,.18) 45%, transparent 70%); animation: bgBreathe 3.2s ease-in-out infinite alternate; }
.pbg-mythsea .s-tent { bottom: -2%; height: 70%; aspect-ratio: 80 / 100; transform-origin: 20% 100%; animation: bgSway 3.6s ease-in-out infinite alternate; }
.pbg-mythsea .s-tent.l { left: 0; } .pbg-mythsea .s-tent.r { right: 0; transform-origin: 80% 100%; animation-delay: -1.8s; }
.pbg-mythsea .twinkle { background: #ffd0ea; }
.pbg-mythsea .mjelly { left: var(--x); bottom: -14cqh; width: calc(8cqh * var(--s)); height: calc(10cqh * var(--s)); animation: colRise calc(var(--t) * 2.2) linear var(--d) infinite; }
.pbg-mythsea .mjelly b { border-radius: 50% 50% 20% 20% / 70% 70% 30% 30%; background: radial-gradient(circle at 50% 30%, rgba(200,255,255,.95), rgba(142,243,255,.5) 55%, rgba(197,139,255,.2)); box-shadow: 0 0 3cqh rgba(142,243,255,.6); animation: bgJellyPulse 1.4s ease-in-out infinite alternate; }
@keyframes colRise { from { transform: translateY(0); opacity: 0; } 12% { opacity: 1; } 88% { opacity: .9; } to { transform: translateY(-130cqh); opacity: 0; } }

.pbg-crownvault { background: radial-gradient(46% 64% at 50% 22%, rgba(255,226,140,.38), transparent 70%), repeating-linear-gradient(90deg, rgba(0,0,0,.12) 0 3cqh, transparent 3cqh 9cqh), linear-gradient(180deg, #4a0b19 0%, #861a2e 56%, #3a0812 100%); }
.pbg-crownvault .s-vspot { left: 25%; right: 25%; top: -10%; bottom: 8%; background: linear-gradient(180deg, rgba(255,240,190,.4), rgba(255,240,190,0)); clip-path: polygon(38% 0, 62% 0, 100% 100%, 0 100%); animation: bgBreathe 4s ease-in-out infinite alternate; }
.pbg-crownvault .s-vault { left: 50%; bottom: 2%; height: 64%; aspect-ratio: 200 / 90; transform: translateX(-50%); }
.pbg-crownvault .vdust { left: calc(30% + var(--x) * .4); top: var(--y); width: .8cqh; height: .8cqh; border-radius: 50%; background: #fff2c0; animation: bgFly calc(var(--t) * 1.6) ease-in-out var(--d) infinite; }

.pbg-observatory { background: radial-gradient(60% 40% at 30% 30%, rgba(120,140,255,.18), transparent 70%), linear-gradient(180deg, #04061a 0%, #0c1442 58%, #1b2a62 82%, #24346c 100%); }
.pbg-observatory .s-omilky { left: -20%; right: -20%; top: 18%; height: 34%; background: radial-gradient(50% 50% at 50% 50%, rgba(220,210,255,.28), rgba(160,140,255,.1) 55%, transparent 75%); transform: rotate(-16deg); filter: blur(1cqh); animation: bgBreathe 6s ease-in-out infinite alternate; }
.pbg-observatory .s-obs { left: 0; right: 0; bottom: 0; width: 100%; height: 46%; }

/* ==========================================================================
   Gemeinsame Bausteine
   ========================================================================== */
.col-crown { display: inline-grid; place-items: center; width: 1.25em; height: 1.1em; vertical-align: -0.15em; }
.col-crown svg { width: 100%; height: 100%; overflow: visible; filter: drop-shadow(0 1px 1px rgba(0,0,0,.45)); }
.col-tier-bronze { --tc: #e0915a; --tc2: #7a4214; }
.col-tier-silver { --tc: #e8eef6; --tc2: #7d889c; }
.col-tier-gold { --tc: #ffd23f; --tc2: #9a6a10; }
.col-tier-mythic { --tc: #ff8fd0; --tc2: #8f3fd8; }
.col-title-tag { display: inline-flex; align-items: center; gap: 4px; padding: 1px 8px 1px 6px; border-radius: 999px; font: 700 11px/1.5 Nunito, sans-serif; letter-spacing: .2px;
  color: #1b1440; background: linear-gradient(180deg, color-mix(in srgb, var(--tc, #ffd23f) 100%, #fff 35%), var(--tc, #ffd23f)); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--tc2, #9a6a10) 70%, transparent); white-space: nowrap; max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
.col-title-tag.col-tier-mythic { background: linear-gradient(90deg, #ffb3e0, #c9b4ff, #9ff3ff); }
.col-title-tag::before { content: '❝'; font-size: 10px; opacity: .55; }

/* ==========================================================================
   Kronen-Hinweis nach dem Fang (collection-ui.js)
   ========================================================================== */
.col-hint { position: absolute; left: 50%; top: max(76px, calc(env(safe-area-inset-top) + 70px)); z-index: 30; transform: translate(-50%, -14px); opacity: 0; pointer-events: auto;
  display: flex; align-items: center; gap: 12px; padding: 10px 18px 10px 12px; border-radius: 18px; max-width: min(92vw, 460px);
  background: linear-gradient(180deg, rgba(43,32,112,.96), rgba(20,15,48,.96)); border: 2px solid var(--tc, #ffd23f); box-shadow: 0 10px 30px rgba(0,0,0,.45), 0 0 24px color-mix(in srgb, var(--tc, #ffd23f) 45%, transparent);
  color: #fff; font: 600 15px/1.25 Nunito, sans-serif; transition: transform .35s cubic-bezier(.2,1.4,.4,1), opacity .25s; }
.col-hint.show { transform: translate(-50%, 0); opacity: 1; }
.col-hint .ic { font-size: 30px; line-height: 1; flex: none; display: grid; place-items: center; width: 44px; height: 44px; }
.col-hint .ic svg { width: 44px; height: 40px; }
.col-hint b { display: block; font: 600 18px/1.15 Fredoka, Nunito, sans-serif; color: var(--tc, #ffd23f); }
.col-hint small { display: block; color: #d8d0ff; font-size: 13px; margin-top: 2px; }
.col-hint.new .ic { animation: colPop .7s cubic-bezier(.2,1.6,.4,1) both; }
@keyframes colPop { 0% { transform: scale(.2) rotate(-30deg); } 70% { transform: scale(1.18) rotate(6deg); } 100% { transform: scale(1) rotate(0); } }

/* ==========================================================================
   Sammlungs-Panel (Trophäen · Titel · Sets · Kronen)
   ========================================================================== */
.col-modal { max-width: 880px !important; padding: 0 !important; overflow: visible !important; background: none !important; border: none !important; box-shadow: none !important; }
.col-panel { width: 100%; max-height: min(780px, calc(100vh - 40px)); max-height: min(780px, calc(100dvh - 40px)); text-align: left; display: flex; flex-direction: column; border-radius: 22px; overflow: hidden;
  background: linear-gradient(180deg, rgba(40,30,104,.97), rgba(22,16,56,.97)); border: 1px solid rgba(255,255,255,.14); box-shadow: 0 20px 60px rgba(0,0,0,.5); color: #fff; font-family: Nunito, sans-serif; }
.col-panel h3, .col-panel p { text-align: left; }
.col-head { flex: none; display: flex; align-items: center; gap: 10px; padding: 14px 16px 6px 18px; }
.col-head h3 { margin: 0; font: 600 22px/1.1 Fredoka, Nunito, sans-serif; flex: 1; min-width: 0; }
.col-head h3 small { display: block; font: 700 12px/1.3 Nunito, sans-serif; color: #b9b0e8; margin-top: 2px; }
.col-x { flex: none; width: 36px; height: 36px; border-radius: 50%; border: 0; background: rgba(255,255,255,.1); color: #fff; font-size: 18px; cursor: pointer; }
.col-x:hover { background: rgba(255,255,255,.2); }
.col-tabs { flex: none; display: flex; gap: 6px; padding: 6px 14px 10px; overflow-x: auto; scrollbar-width: none; }
.col-tabs::-webkit-scrollbar { display: none; }
.col-tab { flex: none; display: inline-flex; align-items: center; gap: 6px; padding: 7px 13px; border-radius: 999px; border: 1px solid rgba(255,255,255,.14); background: rgba(255,255,255,.06); color: #e8e3ff; font: 800 13px Nunito, sans-serif; cursor: pointer; }
.col-tab em { font-style: normal; font-weight: 700; color: #b9b0e8; font-size: 12px; }
.col-tab.on { background: #ffd23f; color: #2a1b00; border-color: #ffd23f; }
.col-tab.on em { color: #6b4a00; }
.col-body { flex: 1; min-height: 0; overflow-y: auto; padding: 4px 16px 18px; overscroll-behavior: contain; }
.col-note { color: #c9c0f2; font-size: 13px; margin: 6px 2px 12px; }
.col-empty { padding: 30px 10px; text-align: center; color: #c9c0f2; }
.col-guest { margin: 8px 0 14px; padding: 12px 14px; border-radius: 14px; background: rgba(255,210,63,.12); border: 1px solid rgba(255,210,63,.35); color: #ffe9a6; font-size: 14px; }

/* Trophäen */
.col-wall { display: grid; grid-template-columns: repeat(auto-fill, minmax(152px, 1fr)); gap: 12px; padding: 14px; border-radius: 18px;
  background: repeating-linear-gradient(0deg, #7a4f2c 0 34px, #6b4426 34px 36px), #7a4f2c; box-shadow: inset 0 0 0 4px #4f311c, inset 0 8px 18px rgba(0,0,0,.35); }
.col-plaque { position: relative; display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 10px 8px 9px; border-radius: 14px; min-height: 150px; text-align: center;
  background: linear-gradient(180deg, #a8733f, #8a5a30); border: 2px solid #4f311c; box-shadow: 0 4px 0 #3a2312, 0 8px 16px rgba(0,0,0,.35); color: #fff7e6; cursor: pointer; font: inherit; }
.col-plaque:hover { filter: brightness(1.08); }
.col-plaque.empty { background: rgba(0,0,0,.18); border-style: dashed; border-color: rgba(255,240,210,.35); box-shadow: none; color: #f3dfc0; justify-content: center; }
.col-plaque.locked { cursor: default; opacity: .7; }
.col-plaque.locked:hover { filter: none; }
.col-plaque canvas { width: 128px; height: 72px; }
.col-plaque b { font: 600 15px/1.15 Fredoka, Nunito, sans-serif; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.col-plaque small { font-size: 12px; color: #ffe9c6; }
.col-plaque .pin { position: absolute; top: 6px; width: 8px; height: 8px; border-radius: 50%; background: radial-gradient(circle at 35% 35%, #fff3c0, #b07a10); }
.col-plaque .pin.l { left: 8px; } .col-plaque .pin.r { right: 8px; }
.col-plaque .plus { font-size: 30px; line-height: 1; opacity: .8; }
.col-plaque .rar { position: absolute; left: 50%; bottom: -1px; transform: translateX(-50%); width: 46%; height: 3px; border-radius: 2px; background: var(--rc, #b8c4d6); }
.col-slothint { margin: 10px 2px 0; font-size: 13px; color: #c9c0f2; }
.col-pick { margin-top: 14px; }
.col-pick h4 { margin: 0 0 8px; font: 600 16px Fredoka, Nunito, sans-serif; }
.col-pick-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(124px, 1fr)); gap: 8px; }
.col-pick-it { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 8px 6px; border-radius: 12px; border: 1px solid rgba(255,255,255,.12); background: rgba(255,255,255,.06); color: #fff; cursor: pointer; font: inherit; }
.col-pick-it:hover { background: rgba(255,255,255,.12); border-color: var(--rc, #fff); }
.col-pick-it:disabled { opacity: .45; cursor: default; }
.col-pick-it canvas { width: 96px; height: 54px; }
.col-pick-it b { font-size: 13px; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.col-pick-it small { font-size: 11px; color: #c9c0f2; }
.col-pick-it .cost { color: #ffe066; font-weight: 800; }
.col-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.col-btn { padding: 8px 14px; border-radius: 12px; border: 0; background: #ffd23f; color: #2a1b00; font: 800 14px Nunito, sans-serif; cursor: pointer; }
.col-btn.ghost { background: rgba(255,255,255,.1); color: #fff; }
.col-btn:disabled { opacity: .5; cursor: default; }

/* Titel */
.col-cur { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; margin: 6px 0 12px; padding: 12px 14px; border-radius: 16px; background: rgba(255,255,255,.07); }
.col-cur .col-title-tag { font-size: 14px; padding: 3px 12px 3px 9px; }
.col-forms { display: inline-flex; gap: 4px; margin-left: auto; }
.col-forms button { padding: 4px 10px; border-radius: 999px; border: 1px solid rgba(255,255,255,.2); background: transparent; color: #e8e3ff; font: 700 12px Nunito, sans-serif; cursor: pointer; }
.col-forms button.on { background: rgba(255,255,255,.18); color: #fff; }
.col-tlist { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 8px; }
.col-t { position: relative; display: flex; flex-direction: column; gap: 4px; padding: 10px 12px; border-radius: 14px; text-align: left; border: 1px solid rgba(255,255,255,.12); background: rgba(255,255,255,.05); color: #fff; font: inherit; cursor: pointer; }
.col-t:hover { background: rgba(255,255,255,.1); }
.col-t.sel { border-color: #ffd23f; box-shadow: 0 0 0 2px rgba(255,210,63,.35); }
.col-t.locked { cursor: default; opacity: .62; }
.col-t.locked:hover { background: rgba(255,255,255,.05); }
.col-t .nm { font: 600 15px/1.2 Fredoka, Nunito, sans-serif; color: var(--tc, #fff); }
.col-t.locked .nm { color: #c9c0f2; }
.col-t small { color: #c9c0f2; font-size: 12px; }
.col-bar { height: 6px; border-radius: 3px; background: rgba(255,255,255,.12); overflow: hidden; }
.col-bar i { display: block; height: 100%; border-radius: 3px; background: linear-gradient(90deg, #ffd23f, #ff9f1a); }
.col-t .tier { position: absolute; right: 10px; top: 9px; width: 10px; height: 10px; border-radius: 50%; background: var(--tc, #fff); box-shadow: 0 0 6px var(--tc, #fff); }

/* Sets */
.col-sets { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 10px; }
.col-set { display: flex; flex-direction: column; gap: 6px; padding: 12px; border-radius: 16px; background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.12); }
.col-set.done { background: linear-gradient(180deg, rgba(255,210,63,.16), rgba(255,210,63,.05)); border-color: rgba(255,210,63,.55); }
.col-set-top { display: flex; align-items: center; gap: 10px; }
.col-set-top .ic { font-size: 26px; line-height: 1; width: 36px; text-align: center; flex: none; }
.col-set-top b { display: block; font: 600 16px/1.15 Fredoka, Nunito, sans-serif; }
.col-set-top small { display: block; font-size: 12px; color: #c9c0f2; }
.col-set-top .cnt { margin-left: auto; font: 800 13px Nunito, sans-serif; color: #ffe066; white-space: nowrap; }
.col-set p { margin: 0; font-size: 13px; color: #d8d0ff; }
.col-chips { display: flex; flex-wrap: wrap; gap: 4px; }
.col-chip { padding: 2px 8px; border-radius: 999px; font: 700 11px/1.6 Nunito, sans-serif; background: rgba(255,255,255,.08); color: #b9b0e8; border: 1px solid transparent; }
.col-chip.got { background: color-mix(in srgb, var(--rc, #62d98a) 22%, transparent); color: #fff; border-color: color-mix(in srgb, var(--rc, #62d98a) 55%, transparent); }
.col-reward { display: flex; align-items: center; gap: 8px; font-size: 12px; color: #e8e3ff; }
.col-reward .acc-badge { flex: none; }
.col-reward .bgthumb { width: 46px; height: 26px; border-radius: 6px; overflow: hidden; flex: none; position: relative; }

/* Kronen-Übersicht */
.col-cstats { display: flex; flex-wrap: wrap; gap: 10px; margin: 6px 0 12px; }
.col-cstat { display: flex; align-items: center; gap: 8px; padding: 8px 14px; border-radius: 14px; background: rgba(255,255,255,.07); font: 800 15px Nunito, sans-serif; }
.col-cstat .col-crown { font-size: 22px; }
.col-cstat small { color: #c9c0f2; font-weight: 700; font-size: 12px; }
.col-stars { display: flex; align-items: center; gap: 12px; margin: 0 0 12px; padding: 12px 14px; border-radius: 16px; background: linear-gradient(90deg, rgba(43,47,138,.7), rgba(18,15,69,.6)); border: 1px solid rgba(159,176,255,.35); }
.col-stars .big { font: 600 26px/1 Fredoka, Nunito, sans-serif; color: #ffd65a; text-shadow: 0 0 12px rgba(255,214,90,.5); white-space: nowrap; }
.col-stars .col-bar { flex: 1; min-width: 80px; }
.col-stars small { color: #c9c0f2; font-size: 12px; line-height: 1.35; } /* darf umbrechen – am Handy ist der Satz breiter als die Karte */

/* ==========================================================================
   Lexikon (dex.js): Kronen am Eintrag, Kronen-Zähler, Filter, Sets, Meister-Sterne
   ========================================================================== */
.fdx-card .fdx-crown { position: absolute; left: 50%; top: 3px; transform: translateX(-50%); font-size: 15px; z-index: 2; pointer-events: none; }
.fdx-crowns { display: inline-flex; align-items: center; gap: 8px; margin-top: 4px; font: 800 13px Nunito, sans-serif; color: #fff; }
.fdx-crowns span { display: inline-flex; align-items: center; gap: 3px; }
.fdx-crown-chip { --rc: #ffd23f; }
.fdx-stars { color: #ffd65a; font-weight: 800; margin-left: 4px; text-shadow: 0 0 8px rgba(255,214,90,.45); }
.fdx-cneed { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 6px; }
.fdx-cneed > span { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: 999px; background: rgba(255,255,255,.08); font: 700 12px Nunito, sans-serif; color: #e8e3ff; }
.fdx-cneed > span.got { background: color-mix(in srgb, var(--tc) 28%, transparent); color: #fff; }
.fdx-sets { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 8px; margin: 4px 0 6px; }
.fdx-set { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border-radius: 12px; background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.1); color: #fff; text-align: left; font: inherit; cursor: pointer; }
.fdx-set:hover, .fdx-set.sel { border-color: #ffd23f; background: rgba(255,210,63,.1); }
.fdx-set.done { border-color: rgba(255,210,63,.5); }
.fdx-set .ic { font-size: 20px; width: 26px; text-align: center; flex: none; }
.fdx-set b { display: block; font: 600 14px/1.15 Fredoka, Nunito, sans-serif; }
.fdx-set .col-bar { margin-top: 4px; }
.fdx-set em { margin-left: auto; font-style: normal; font: 800 12px Nunito, sans-serif; color: #ffe066; white-space: nowrap; }
.fdx-card.dim { opacity: .28; }

/* ==========================================================================
   Spielerliste & Bestenliste
   ========================================================================== */
.fw-prow .col-title-tag { align-self: flex-start; width: max-content; margin-top: 2px; font-size: 10px; padding: 0 7px 0 5px; }
.fw-lb-mode { display: flex; gap: 4px; padding: 0 14px 8px; }
.fw-lb-mode button { flex: 1; padding: 6px 10px; border-radius: 10px; border: 1px solid rgba(255,255,255,.14); background: rgba(255,255,255,.06); color: #e8e3ff; font: 800 13px Nunito, sans-serif; cursor: pointer; }
.fw-lb-mode button.on { background: #ffd23f; border-color: #ffd23f; color: #2a1b00; }
.fw-lb-week { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 10px; margin: 0 0 8px; padding: 8px 10px; border-radius: 12px; background: rgba(255,255,255,.06); font-size: 12px; color: #d8d0ff; }
.fw-lb-week b { color: #fff; }
.fw-lb-pennant { display: inline-flex; align-items: center; gap: 6px; font-weight: 800; color: #ffe066; }
.fw-lb-pennant i { width: 14px; height: 16px; background: #e0323f; clip-path: polygon(0 0, 100% 50%, 0 100%); flex: none; }
.fw-lb-stars { color: #ffd65a; font-weight: 800; margin-left: 4px; }

@media (max-width: 640px) {
  .col-modal { max-width: none !important; }
  .col-panel { max-height: calc(100dvh - 24px); }
  .col-head { padding: 12px 12px 4px 14px; }
  .col-head h3 { font-size: 19px; }
  .col-body { padding: 4px 12px calc(16px + env(safe-area-inset-bottom)); }
  .col-wall { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; padding: 10px; }
  .col-plaque { min-height: 132px; }
  .col-plaque canvas { width: 110px; height: 62px; }
  .col-tlist, .col-sets { grid-template-columns: 1fr; }
  .col-hint { top: calc(env(safe-area-inset-top) + 150px); font-size: 14px; padding: 8px 14px 8px 10px; }
  .col-hint b { font-size: 16px; }
}
@media (prefers-reduced-motion: reduce) {
  .col-hint, .col-hint.new .ic { transition: none; animation: none; }
}

/* ==========================================================================
   Profil (profile.js): Titel unter dem Namen, Trophäenwand, Angler-Sammlung, Haustier
   ========================================================================== */
.pf-titlerow { margin: 2px 0 1px; min-width: 0; }
.pf-titlerow .col-title-tag { font-size: 12.5px; padding: 2px 10px 2px 8px; }
.pf-twall { display: grid; grid-template-columns: repeat(auto-fill, minmax(104px, 1fr)); gap: 8px; padding: 10px; border-radius: 14px;
  background: repeating-linear-gradient(0deg, #7a4f2c 0 26px, #6b4426 26px 28px), #7a4f2c; box-shadow: inset 0 0 0 3px #4f311c, inset 0 6px 14px rgba(0,0,0,.3); }
.pf-tplaque { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 8px 6px 7px; border-radius: 12px; text-align: center; min-width: 0;
  background: linear-gradient(180deg, #b47c45, #8a5a30); border: 2px solid #4f311c; box-shadow: 0 3px 0 #3a2312, inset 0 -3px 0 color-mix(in srgb, var(--rc, #b8c4d6) 70%, transparent); color: #fff7e6; }
.pf-tplaque .pf-fishpic { width: 88px; height: 52px; margin: 0; background: none; box-shadow: none; }
.pf-tplaque .pf-fishpic canvas, .pf-tplaque .pf-fishpic svg { width: 100%; height: 100%; object-fit: contain; }
.pf-tplaque b { font: 600 13.5px/1.15 var(--font-display, Fredoka), sans-serif; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pf-tplaque small { font-weight: 800; font-size: 11.5px; color: #ffe9c6; display: inline-flex; align-items: center; gap: 3px; }
.pf-colrows { display: flex; flex-direction: column; gap: 8px; }
.pf-colrow { display: flex; align-items: center; gap: 10px; padding: 7px 10px; border-radius: 12px; background: rgba(255,255,255,.05); }
.pf-colrow .k { color: var(--muted, #c9c0f2); font-weight: 800; font-size: 13px; }
.pf-colrow b { margin-left: auto; font: 600 16px var(--font-display, Fredoka), sans-serif; }
.pf-colrow.stars b { color: #ffd65a; text-shadow: 0 0 10px rgba(255,214,90,.45); }
.pf-crowns { margin-left: auto; display: inline-flex; gap: 10px; font-weight: 800; }
.pf-crowns > span { display: inline-flex; align-items: center; gap: 3px; }
.pf-setchips { display: flex; flex-wrap: wrap; gap: 4px; }
.pf-setchips .col-chip { --rc: #ffd23f; }
.pf-petbox { display: flex; align-items: center; gap: 14px; }
.pf-petpic { width: 84px; height: 84px; flex: none; border-radius: 20px; display: grid; place-items: center; font-size: 48px; line-height: 1;
  background: radial-gradient(circle at 50% 40%, rgba(255,255,255,.18), rgba(255,255,255,.04)); border: 1px solid rgba(255,255,255,.12); overflow: hidden; }
.pf-petpic canvas { width: 100%; height: 100%; object-fit: contain; }
.pf-pettext { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.pf-pettext b { font: 600 20px/1.1 var(--font-display, Fredoka), sans-serif; }
.pf-pettext small { color: var(--muted, #c9c0f2); font-weight: 700; font-size: 13px; }
.fdx-sets-tog { all: unset; cursor: pointer; font: 700 13px/1 var(--font, Nunito), sans-serif; color: var(--muted, #c9c0f2); text-transform: uppercase; letter-spacing: 1px; margin: 2px 0 -4px; }
.fdx-sets-tog:hover { color: #fff; }
.fdx-sets[hidden] { display: none; }

/* ===== fish-social.css ===== */
/* Phase 2 – Agent Gemeinsam: Sitzen, Angelbuddy, Duelle (social-ui.js) + Titel im Namensschild (actors.js setTitle) */

/* ───────── Titel unter dem Namen (actors.js setTitle) ───────── */
.fw-tag.has-title { flex-wrap: wrap; justify-content: center; row-gap: 0; padding: 3px 11px 3px; border-radius: 12px; max-width: 240px; }
.fw-ptitle {
  flex-basis: 100%; display: block; text-align: center; margin-top: -1px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  font: 700 10.5px/1.25 var(--font); letter-spacing: .35px; color: #d9d2ff; text-shadow: 0 1px 0 rgba(0, 0, 0, .4);
}
.fw-ptitle::before, .fw-ptitle::after { content: '·'; margin: 0 4px; opacity: .55; }
.fw-tag.me .fw-ptitle { color: #6b4300; text-shadow: none; }
.fw-ptitle.t-bronze, .fw-ptitle.t-uncommon { color: #f0b27a; }
.fw-ptitle.t-silver, .fw-ptitle.t-common { color: #e4ebf7; }
.fw-ptitle.t-gold, .fw-ptitle.t-legendary { color: #ffd34d; }
.fw-ptitle.t-platinum, .fw-ptitle.t-secret { color: #9ff6ff; text-shadow: 0 0 6px rgba(142, 243, 255, .55); }
.fw-ptitle.t-rare { color: #7cc4ff; }
.fw-ptitle.t-epic { color: #d3a6ff; }
.fw-ptitle.t-mythic { color: #ff8cc6; text-shadow: 0 0 6px rgba(255, 102, 179, .5); }
.fw-ptitle.t-event { color: #ffb36b; }
.fw-ptitle.t-staff { color: #8ff0b8; }
.fw-tag.me .fw-ptitle[class*='t-'] { color: #5a2f00; text-shadow: none; }
.fw-ov:has(.fw-tag.has-title) .fw-bubbles { bottom: 44px; }

/* ⚔️ am Namensschild (im Duell) */
.fso-mark { font-size: 11px; line-height: 1; margin-right: -1px; filter: drop-shadow(0 1px 1px rgba(0, 0, 0, .4)); }

/* ───────── Sitz-Blase in der Welt ───────── */
.fso-seat {
  position: absolute; left: 0; top: 0; z-index: 12; display: inline-flex; align-items: center; gap: 6px; padding: 5px 11px 5px 6px;
  border: 1px solid rgba(255, 255, 255, .22); border-radius: 999px; background: rgba(20, 14, 50, .72); color: #fff; cursor: pointer;
  font: 600 12.5px/1 var(--font-display); white-space: nowrap; box-shadow: 0 4px 14px rgba(8, 4, 30, .35);
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); will-change: transform; animation: fsoFade .25s ease both;
}
.fso-seat::after { content: ''; position: absolute; left: 50%; bottom: -5px; width: 9px; height: 9px; margin-left: -4.5px; transform: rotate(45deg);
  background: rgba(20, 14, 50, .72); border-right: 1px solid rgba(255, 255, 255, .22); border-bottom: 1px solid rgba(255, 255, 255, .22); }
.fso-seat:hover { background: rgba(43, 29, 107, .9); }
.fso-seat.hidden { display: none; }
.fso-seat kbd {
  display: inline-grid; place-items: center; min-width: 20px; height: 20px; padding: 0 5px; border-radius: 6px;
  background: #ffc933; color: #2a1a00; font: 700 12px/1 var(--font-display); box-shadow: 0 2px 0 #b98400;
}
.fso-seat.fso-seat-up { opacity: .9; font-size: 11.5px; padding-left: 6px; }
.fso-seat.fso-seat-up::after { bottom: auto; top: -5px; transform: rotate(225deg); }
.fw-root.touch .fso-seat { padding: 7px 13px; font-size: 13.5px; }
@keyframes fsoFade { from { opacity: 0; } }

/* Touch-Knopf „Hinsetzen“ aktiv */
.fw-tbtn.fso-on { background: rgba(255, 201, 51, .85); border-color: #ffd34d; }

/* ───────── Linke Spalte: Angelbuddy + Duell-Stand ───────── */
.fso-col {
  position: absolute; z-index: 18; top: calc(var(--fw-top-h, 52px) + 60px); left: calc(10px + var(--safe-l));
  width: 236px; display: flex; flex-direction: column; gap: 8px; pointer-events: none !important;
}
.fso-col > * { pointer-events: auto; }
/* Desktop: läuft ein Event, steht dessen Leiste unter der Muschel-Pille (fish-events.css) → eine Zeile tiefer */
.fw-root:has(.fev-bar:not(.hidden)) .fso-col { top: calc(var(--fw-top-h, 54px) + 118px); }
.fso-buddy {
  align-self: flex-start; display: inline-flex; align-items: center; gap: 7px; max-width: 100%; padding: 5px 12px 5px 8px; border-radius: 14px;
  background: linear-gradient(90deg, rgba(56, 160, 110, .9), rgba(37, 110, 92, .88)); border: 1px solid rgba(160, 255, 200, .35);
  box-shadow: var(--fw-shadow); font: 600 12.5px/1.2 var(--font-display); color: #fff;
}
.fso-buddy.hidden { display: none; }
.fso-buddy-ic { font-size: 19px; line-height: 1; }
.fso-buddy-t { min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.fso-buddy-t > b { font-weight: 600; white-space: nowrap; }
.fso-buddy-t > b em { margin-left: 3px; padding: 1px 5px; border-radius: 999px; background: rgba(255, 255, 255, .22); font: 800 10.5px/1.2 var(--font); font-style: normal; }
.fso-buddy-t > span { font: 700 11.5px/1.15 var(--font); opacity: .9; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fso-pop { animation: fsoPop .45s cubic-bezier(.2, 1.6, .4, 1) both; }
@keyframes fsoPop { from { transform: scale(.6); opacity: 0; } }

.fso-hud {
  border-radius: 16px; background: var(--glass); border: 1px solid var(--glass-b); box-shadow: var(--fw-shadow);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); overflow: hidden;
}
.fso-hud.hidden { display: none; }
.fso-hud[data-state='run'], .fso-hud[data-state='grace'] { border-color: rgba(255, 201, 51, .45); }
.fso-hud.fso-flash { animation: fsoFlash .7s ease; }
@keyframes fsoFlash { 30% { box-shadow: 0 0 0 3px rgba(255, 211, 77, .85), var(--fw-shadow); } }
.fso-hud-h {
  width: 100%; display: flex; align-items: center; gap: 7px; padding: 8px 10px; border: none; background: rgba(255, 255, 255, .06);
  color: #fff; cursor: pointer; font: 600 13.5px/1.1 var(--font-display); text-align: left;
}
.fso-hud-h b { flex: 1; min-width: 0; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fso-hud-ic { font-size: 15px; }
.fso-clock { flex: none; padding: 3px 7px; border-radius: 8px; background: rgba(0, 0, 0, .28); font: 800 12.5px/1 var(--font); font-variant-numeric: tabular-nums; }
.fso-clock.hot { background: #e5484d; animation: fsoPulse 1s ease-in-out infinite; }
@keyframes fsoPulse { 50% { transform: scale(1.08); } }
.fso-hrows { list-style: none; margin: 0; padding: 4px 6px 2px; display: flex; flex-direction: column; gap: 1px; }
.fso-hrow { display: grid; grid-template-columns: 22px 10px minmax(0, 1fr) auto; align-items: center; gap: 6px; padding: 4px 4px; border-radius: 8px; font: 700 12.5px/1.2 var(--font); }
.fso-hrow.me { background: rgba(255, 201, 51, .18); }
.fso-hrow.lead .fso-sc { color: #ffd34d; }
.fso-hrow.left, .fso-hrow.wait { opacity: .55; }
.fso-rk { text-align: center; font-size: 13px; font-variant-numeric: tabular-nums; }
.fso-dot { display: inline-block; width: 10px; height: 10px; border-radius: 50%; box-shadow: 0 0 0 1.5px rgba(255, 255, 255, .55) inset, 0 1px 2px rgba(0, 0, 0, .35); vertical-align: middle; }
.fso-pname { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fso-sc { font-variant-numeric: tabular-nums; white-space: nowrap; color: #e9e4ff; }
.fso-hud-mini { padding: 4px 10px 8px; font: 700 12.5px/1.3 var(--font); }
.fso-hud-mini small { display: block; opacity: .7; font-weight: 600; }
.fso-hud-acts { display: flex; justify-content: flex-end; gap: 6px; padding: 2px 8px 8px; }
.fso-mini-btn {
  padding: 4px 9px; border-radius: 8px; border: 1px solid rgba(255, 255, 255, .2); background: rgba(255, 255, 255, .08); color: #fff;
  cursor: pointer; font: 600 11.5px/1.1 var(--font-display);
}
.fso-mini-btn:hover:not(:disabled) { background: rgba(255, 255, 255, .18); }
.fso-mini-btn.go { background: #ffc933; color: #2a1a00; border-color: #ffd34d; }
.fso-mini-btn:disabled { opacity: .45; cursor: default; }
.fso-hud.closed .fso-hud-h { background: transparent; }

/* ───────── Einladung ───────── */
.fso-inv {
  position: absolute; z-index: 46; left: 50%; top: 24%; transform: translateX(-50%); width: min(340px, calc(100% - 24px));
  padding: 12px 14px 12px; border-radius: 18px; background: var(--glass-2); border: 1.5px solid rgba(255, 201, 51, .55);
  box-shadow: 0 14px 40px rgba(8, 4, 30, .5), 0 0 0 4px rgba(255, 201, 51, .1); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
}
.fso-inv.hidden { display: none; }
.fso-inv.fso-pop { animation: fsoInv .5s cubic-bezier(.2, 1.5, .4, 1) both; }
@keyframes fsoInv { from { transform: translateX(-50%) translateY(-14px) scale(.85); opacity: 0; } }
.fso-inv-h { display: flex; align-items: center; gap: 10px; }
.fso-inv-h > div { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.fso-inv-h b { font: 600 18px/1.1 var(--font-display); color: #ffd34d; }
.fso-inv-h span { font: 700 13px/1.25 var(--font); color: #e9e4ff; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fso-inv-h .fso-dot { width: 9px; height: 9px; }
.fso-inv-ic { flex: none; width: 42px; height: 42px; display: grid; place-items: center; border-radius: 50%; font-size: 22px;
  background: radial-gradient(circle at 35% 30%, #fff1b0, #ffc933 60%, #e69a00); box-shadow: 0 3px 0 rgba(0, 0, 0, .25); animation: fsoWiggle 1.6s ease-in-out infinite; }
@keyframes fsoWiggle { 0%, 70%, 100% { transform: rotate(0); } 78% { transform: rotate(-12deg); } 86% { transform: rotate(10deg); } 94% { transform: rotate(-5deg); } }
.fso-inv-more { flex: none; padding: 2px 7px; border-radius: 999px; background: rgba(255, 255, 255, .15); font: 800 11px/1.2 var(--font); }
.fso-inv-m { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0 8px; }
.fso-inv-m span { padding: 3px 8px; border-radius: 8px; background: rgba(255, 255, 255, .1); font: 700 12px/1.2 var(--font); }
.fso-inv-bar { height: 4px; border-radius: 3px; background: rgba(255, 255, 255, .12); overflow: hidden; }
.fso-inv-bar i { display: block; height: 100%; background: #ffc933; transform-origin: left; transition: transform .25s linear; }
.fso-inv-b { display: flex; justify-content: flex-end; gap: 8px; margin-top: 10px; }

/* ───────── Countdown ───────── */
.fso-cd { position: absolute; z-index: 47; left: 50%; top: 36%; transform: translate(-50%, -50%); pointer-events: none !important; text-align: center; }
.fso-cd.hidden { display: none; }
.fso-cd span {
  display: block; font: 700 110px/1 var(--font-display); color: #fff; letter-spacing: 2px;
  -webkit-text-stroke: 4px rgba(42, 26, 90, .9); paint-order: stroke fill; text-shadow: 0 8px 0 rgba(20, 10, 60, .45), 0 0 40px rgba(255, 201, 51, .5);
}
.fso-cd span.go { color: #ffd34d; font-size: 96px; }
.fso-cd small { display: block; margin-top: 6px; font: 600 20px/1.1 var(--font-display); color: #fff; text-shadow: 0 2px 6px rgba(0, 0, 0, .55); }
.fso-cd.fso-beat span { animation: fsoBeat .8s cubic-bezier(.2, 1.6, .4, 1) both; }
@keyframes fsoBeat { 0% { transform: scale(2.2); opacity: 0; } 35% { transform: scale(.92); opacity: 1; } 60% { transform: scale(1.04); } 100% { transform: scale(1); opacity: .9; } }

/* ───────── Herausfordern-Fenster (Modal, außerhalb von .fw-root) ───────── */
.modal.fso-modal { max-width: 520px; padding: 0; overflow: hidden; display: flex; flex-direction: column; }
.fso-panel { display: flex; flex-direction: column; max-height: calc(100vh - 34px); max-height: calc(100dvh - 34px); color: #fff; font-family: var(--font); }
.fso-ph { display: flex; align-items: center; gap: 12px; padding: 16px 16px 12px; border-bottom: 1px solid rgba(255, 255, 255, .1);
  background: radial-gradient(120% 140% at 0% 0%, rgba(255, 201, 51, .18), transparent 60%); }
.fso-ph-ic { flex: none; width: 46px; height: 46px; display: grid; place-items: center; border-radius: 14px; font-size: 25px; background: rgba(255, 201, 51, .2); box-shadow: 0 0 0 1.5px rgba(255, 201, 51, .45) inset; }
.fso-ph-t { flex: 1; min-width: 0; }
.fso-ph-t h3 { margin: 0; text-align: left; font: 600 22px/1.1 var(--font-display); }
.fso-ph-t span { display: block; margin-top: 3px; font-size: 13px; font-weight: 700; color: rgba(255, 255, 255, .7); }
.fso-x { flex: none; width: 36px; height: 36px; border-radius: 50%; border: 1px solid rgba(255, 255, 255, .2); background: rgba(255, 255, 255, .08); color: #fff; cursor: pointer; font: 800 15px/1 var(--font); }
.fso-x:hover { background: rgba(255, 255, 255, .2); }
.fso-pbody { flex: 1; min-height: 0; overflow: auto; overscroll-behavior: contain; padding: 4px 16px 10px; scrollbar-width: thin; }
.fso-sec { margin-top: 12px; }
.fso-sec h4 { display: flex; align-items: baseline; justify-content: space-between; margin: 0 0 7px; font: 600 13px/1.2 var(--font-display); letter-spacing: 1px; text-transform: uppercase; color: rgba(255, 255, 255, .72); }
.fso-sec h4 em { font: 800 12px/1 var(--font); font-style: normal; letter-spacing: 0; text-transform: none; color: rgba(255, 255, 255, .55); }
.fso-modes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.fso-mode {
  display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 10px 8px 9px; border-radius: 14px; cursor: pointer; color: #fff;
  border: 2px solid rgba(255, 255, 255, .12); background: rgba(255, 255, 255, .06); text-align: center; transition: transform .12s, border-color .12s, background .12s;
}
.fso-mode:hover { transform: translateY(-2px); border-color: rgba(255, 255, 255, .3); }
.fso-mode.on { border-color: #ffc933; background: rgba(255, 201, 51, .16); box-shadow: 0 0 0 3px rgba(255, 201, 51, .12); }
.fso-mode-ic { font-size: 26px; line-height: 1.1; }
.fso-mode b { font: 600 14px/1.15 var(--font-display); }
.fso-mode small { font: 700 11px/1.3 var(--font); color: rgba(255, 255, 255, .65); }
.fso-row2 { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.fso-row2 h4 { margin: 0; }
.fso-durs { display: flex; gap: 6px; }
.fso-chip { padding: 7px 13px; border-radius: 999px; border: 2px solid rgba(255, 255, 255, .14); background: rgba(255, 255, 255, .06); color: #fff; cursor: pointer; font: 700 13px/1 var(--font); }
.fso-chip.on { border-color: #ffc933; background: rgba(255, 201, 51, .2); }
.fso-lobby {
  width: 100%; display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 14px; cursor: pointer; color: #fff; text-align: left;
  border: 2px dashed rgba(143, 240, 184, .45); background: rgba(56, 160, 110, .14);
}
.fso-lobby.on { border-style: solid; border-color: #8ff0b8; background: rgba(56, 160, 110, .3); }
.fso-lobby > span:nth-child(2) { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.fso-lobby b { font: 600 14.5px/1.2 var(--font-display); }
.fso-lobby small { font: 700 12px/1.3 var(--font); color: rgba(255, 255, 255, .7); }
.fso-lobby-ic { font-size: 24px; }
.fso-quick { display: flex; gap: 12px; margin: -2px 0 6px; }
.fso-link { padding: 0; border: none; background: none; color: #ffd34d; cursor: pointer; font: 800 12.5px/1.3 var(--font); text-decoration: underline; text-underline-offset: 2px; }
.fso-link:disabled { color: rgba(255, 255, 255, .35); cursor: default; text-decoration: none; }
.fso-plist { display: flex; flex-direction: column; gap: 4px; }
.fso-prow {
  display: grid; grid-template-columns: 12px minmax(0, 1fr) auto auto 24px; align-items: center; gap: 9px; padding: 8px 10px; border-radius: 12px; cursor: pointer;
  border: 1.5px solid rgba(255, 255, 255, .08); background: rgba(255, 255, 255, .05); color: #fff; text-align: left; font: 700 14px/1.2 var(--font);
}
.fso-prow:hover:not(:disabled) { background: rgba(255, 255, 255, .1); }
.fso-prow.on { border-color: #ffc933; background: rgba(255, 201, 51, .14); }
.fso-prow:disabled { opacity: .45; cursor: default; }
.fso-prow .fso-pname small { font-weight: 700; font-size: 11px; color: rgba(255, 255, 255, .5); }
.fso-pst { font-size: 12px; color: rgba(255, 255, 255, .65); white-space: nowrap; }
.fso-pdist { font-size: 12px; color: rgba(255, 255, 255, .5); font-variant-numeric: tabular-nums; }
.fso-check { width: 22px; height: 22px; border-radius: 7px; display: grid; place-items: center; border: 2px solid rgba(255, 255, 255, .3); font: 900 13px/1 var(--font); color: #2a1a00; }
.fso-prow.on .fso-check, .fso-lobby.on .fso-check { background: #ffc933; border-color: #ffc933; }
.fso-lobby.on .fso-check { background: #8ff0b8; border-color: #8ff0b8; color: #0e3a26; }
.fso-empty { padding: 16px 8px; text-align: center; font-weight: 800; color: rgba(255, 255, 255, .75); }
.fso-empty small { display: block; margin-top: 4px; font-weight: 700; color: rgba(255, 255, 255, .5); }
.fso-foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 16px; border-top: 1px solid rgba(255, 255, 255, .1); background: rgba(0, 0, 0, .12); }
.fso-foot-t { font: 700 13px/1.2 var(--font); color: rgba(255, 255, 255, .7); }
.fso-go { white-space: nowrap; }

/* laufendes Duell im Fenster */
.fso-sum { margin: 12px 0 6px; padding: 12px; border-radius: 14px; background: rgba(255, 255, 255, .06); border: 1px solid rgba(255, 255, 255, .1); }
.fso-sum-h { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; font: 600 15px/1.2 var(--font-display); }
.fso-sum-h > span:not(.fso-sum-ic) { font: 700 12px/1 var(--font); padding: 3px 7px; border-radius: 7px; background: rgba(255, 255, 255, .1); }
.fso-sum-h em { margin-left: auto; font: 800 12.5px/1 var(--font); font-style: normal; color: #ffd34d; font-variant-numeric: tabular-nums; }
.fso-sum-list { list-style: none; margin: 10px 0 0; padding: 0; display: flex; flex-direction: column; gap: 3px; }
.fso-sum-list li { display: grid; grid-template-columns: 10px minmax(0, 1fr) auto; align-items: center; gap: 8px; padding: 5px 6px; border-radius: 8px; font: 700 13.5px/1.2 var(--font); }
.fso-sum-list li.me { background: rgba(255, 201, 51, .15); }
.fso-sum-acts { display: flex; justify-content: flex-end; gap: 8px; margin-top: 10px; }

/* Info-Karte (Gast): Herausfordern */
.fso-card-act { margin-top: 8px; display: flex; gap: 6px; flex-wrap: wrap; }

/* ───────── Ergebnis-Karte ───────── */
.modal.fso-endmodal { max-width: 400px; padding: 0; }
.fso-end { position: relative; padding: 22px 20px 18px; text-align: center; color: #fff; overflow: hidden;
  background: radial-gradient(120% 90% at 50% 0%, rgba(255, 201, 51, .16), transparent 60%); }
.fso-end.won { background: radial-gradient(120% 90% at 50% 0%, rgba(255, 201, 51, .38), transparent 65%); }
.fso-end.off { background: radial-gradient(120% 90% at 50% 0%, rgba(120, 140, 200, .2), transparent 60%); }
.fso-end-ic { font-size: 56px; line-height: 1; filter: drop-shadow(0 6px 8px rgba(0, 0, 0, .35)); animation: fsoTrophy .9s cubic-bezier(.2, 1.6, .4, 1) both; }
@keyframes fsoTrophy { from { transform: translateY(-20px) scale(.4) rotate(-15deg); opacity: 0; } }
.fso-end h3 { margin: 8px 0 4px; font: 600 26px/1.1 var(--font-display); }
.fso-end p { margin: 0 0 12px; color: rgba(255, 255, 255, .75); font-weight: 700; }
.fso-end-list { list-style: none; margin: 0 0 12px; padding: 0; display: flex; flex-direction: column; gap: 4px; text-align: left; }
.fso-end-list li { display: grid; grid-template-columns: 26px 10px minmax(0, 1fr) auto; align-items: center; gap: 8px; padding: 7px 10px; border-radius: 10px; background: rgba(255, 255, 255, .06); font: 700 14px/1.2 var(--font); }
.fso-end-list li:first-child { background: rgba(255, 201, 51, .16); }
.fso-end-list li.me { box-shadow: 0 0 0 1.5px #ffc933 inset; }
.fso-end-list li.left { opacity: .5; }
.fso-end-list .fso-rk { font-size: 17px; }
.fso-end-rew { display: inline-flex; align-items: center; gap: 7px; padding: 7px 12px; border-radius: 12px; background: rgba(255, 255, 255, .1); margin-bottom: 12px; }
.fso-end-rew span { font-size: 18px; }
.fso-end-rew b { font: 600 15px/1 var(--font-display); color: #ffd34d; }
.fso-end-rew small { font: 700 11.5px/1.2 var(--font); color: rgba(255, 255, 255, .6); }
.fso-end-rew.off { background: none; }
.fso-end-b { display: flex; justify-content: center; gap: 10px; flex-wrap: wrap; }

/* ───────── Handy ───────── */
@media (max-width: 560px) {
  /* Handy: unter der Muschel-Zeile laufen die Inselfunk-Zeilen – die Spalte steht deshalb links direkt über dem Joystick-Feld
     (fw-joy-zone = untere 48 %) und wächst nach oben */
  .fso-col, .fw-root:has(.fev-bar:not(.hidden)) .fso-col { top: auto; bottom: calc(48% + 10px); left: calc(8px + var(--safe-l)); width: 176px; gap: 6px; justify-content: flex-end; }
  .fso-buddy { font-size: 11.5px; padding: 5px 8px 5px 6px; gap: 5px; }
  .fso-hud-h { padding: 6px 8px; font-size: 12.5px; gap: 5px; }
  .fso-clock { font-size: 11.5px; padding: 2px 5px; }
  .fso-hrows { padding: 3px 4px 2px; }
  .fso-hrow { grid-template-columns: 18px 8px minmax(0, 1fr) auto; gap: 4px; font-size: 11.5px; padding: 3px; }
  .fso-hrow .fso-dot { width: 8px; height: 8px; }
  .fso-hud-acts { padding: 2px 6px 6px; }
  .fso-inv { top: 30%; }
  .fso-cd span { font-size: 84px; }
  .fso-cd span.go { font-size: 74px; }
  .fso-modes { grid-template-columns: 1fr; }
  .fso-mode { flex-direction: row; justify-content: flex-start; text-align: left; gap: 10px; padding: 8px 10px; }
  .fso-mode b { flex: none; }
  .fso-mode small { flex: 1; }
  .fso-mode-ic { font-size: 22px; }
  .fso-prow { grid-template-columns: 12px minmax(0, 1fr) auto 24px; }
  .fso-prow .fso-pst { display: none; }
  .fso-foot { flex-direction: column; align-items: stretch; }
  .fso-foot-t { text-align: center; }
}

/* ===== fish-zones.css ===== */
/* Phase 3 – Agent Gebiete (zones-ui.js): Übergänge (Abblenden, Überfahrt), Hinweis an Übergängen, Fähr-Karte,
   Willkommens-Karte neuer Gebiete, Reiseziele-Liste. Glas-Optik wie fishing.css. */

/* ───────── Hinweis am Übergang (Höhle, Bohlenweg, Fähre, Notglocke) ───────── */
.fz-chip {
  position: absolute; z-index: 16; left: 50%; bottom: calc(138px + var(--safe-b, 0px)); transform: translateX(-50%);
  display: flex; align-items: center; gap: 10px; padding: 7px 8px 7px 10px; border-radius: 999px; max-width: calc(100% - 24px);
  background: linear-gradient(180deg, rgba(36, 60, 110, .92), rgba(22, 36, 76, .92)); border: 1.5px solid rgba(160, 210, 255, .55); color: #fff;
  box-shadow: 0 4px 0 rgba(0, 0, 0, .22), var(--fw-shadow); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  animation: fzIn .34s cubic-bezier(.2, 1.5, .4, 1) both;
}
.fz-chip.hidden { display: none; }
.fz-chip-ic { width: 30px; height: 30px; flex: none; display: grid; place-items: center; border-radius: 50%; background: rgba(255, 255, 255, .16); font-size: 17px; }
.fz-chip-tx { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.fz-chip-tx b { font: 600 14.5px/1.1 var(--font-display); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fz-chip-tx small { font: 800 11.5px/1.15 var(--font); color: #cfe6ff; font-variant-numeric: tabular-nums; white-space: nowrap; }
.fz-chip-btn {
  flex: none; padding: 7px 13px; border-radius: 999px; border: none; cursor: pointer; background: linear-gradient(180deg, #ffe066, var(--primary, #ffc933));
  color: #2a1a00; font: 800 13px/1 var(--font); box-shadow: 0 2px 0 rgba(0, 0, 0, .25);
}
.fz-chip-btn:hover { filter: brightness(1.06); }
.fz-chip.locked { background: linear-gradient(180deg, rgba(70, 48, 30, .92), rgba(46, 30, 18, .92)); border-color: rgba(255, 201, 51, .5); }
.fz-chip.locked small { color: #ffe9a8; }
.fz-chip.aboard { background: linear-gradient(180deg, rgba(24, 96, 74, .94), rgba(16, 64, 52, .94)); border-color: rgba(120, 240, 170, .65); }
.fz-chip.aboard .fz-chip-btn { background: rgba(255, 255, 255, .9); color: #145a42; }
.fw-root.busy .fz-chip { display: none; }
/* mit ausgerüsteter Angel bzw. Schwarm-Pille etwas höher (wie der Händler-Stapel) */
.fw-root.fw-eq:not(.touch) .fz-chip { bottom: calc(152px + var(--safe-b, 0px)); }
.fw-root:not(.touch):has(.fsw-pill:not(.hidden)) .fz-chip { bottom: calc(182px + var(--safe-b, 0px)); }
/* Touch: oben unter der Kopfleiste, über dem Joystick frei */
.fz-chip.touch { bottom: auto; top: calc(var(--fw-top-h, 60px) + 104px); padding: 5px 6px 5px 8px; gap: 8px; }
.fz-chip.touch .fz-chip-tx b { font-size: 13.5px; }
.fw-root.touch:has(.fsw-pill:not(.hidden)) .fz-chip.touch { top: calc(var(--fw-top-h, 60px) + 150px); }
@media (max-width: 760px) {
  .fw-root.touch .fz-chip.touch { top: calc(var(--ew-row, 112px) + var(--ew-h, 0px) + 6px); }
  .fw-root.touch:has(.fsw-pill:not(.hidden)) .fz-chip.touch { top: calc(var(--ew-row, 112px) + var(--ew-h, 0px) + 52px); }
}
@keyframes fzIn { from { opacity: 0; transform: translate(-50%, 10px) scale(.92); } }

/* kurze Rückmeldung (gesperrt, Fährgeld …) */
.fz-note {
  position: absolute; z-index: 17; left: 50%; bottom: calc(196px + var(--safe-b, 0px)); transform: translateX(-50%); max-width: min(440px, calc(100% - 24px));
  padding: 8px 14px; border-radius: 16px; background: var(--glass-2); border: 1px solid var(--glass-b); color: #fff; text-align: center;
  font: 800 13.5px/1.3 var(--font); box-shadow: var(--fw-shadow); pointer-events: none; animation: fzIn .3s ease both;
}
.fz-note.warn { background: rgba(70, 38, 10, .9); border-color: rgba(255, 201, 51, .55); color: #ffe9a8; }
.fz-note.hidden { display: none; }
.fw-root.touch .fz-note { bottom: auto; top: calc(var(--fw-top-h, 60px) + 160px); }

/* ───────── Abblenden / Überfahrt ───────── */
.fz-fade {
  position: absolute; inset: 0; z-index: 70; pointer-events: none; display: grid; place-items: center; opacity: 0;
  transition: opacity .55s ease; background: #05060c;
}
.fz-fade.on { opacity: 1; }
.fz-fade.hidden { display: none; }
.fz-fade.fx-mist { background: radial-gradient(circle at 50% 55%, #f4f8ef 0%, #dfe9d6 45%, #b9cdb0 100%); }
.fz-fade.fx-mist .fz-fade-t b { color: #2f4a2a; text-shadow: none; }
.fz-fade.fx-mist .fz-fade-t span { color: #4d6a45; }
.fz-fade.fx-travel, .fz-fade.fx-debug, .fz-fade.fx-boat { background: #0b1830; }
.fz-fade-t { display: flex; flex-direction: column; align-items: center; gap: 6px; transform: translateY(8px); transition: transform .8s ease; }
.fz-fade.on .fz-fade-t { transform: none; }
.fz-fade-t b { font: 600 clamp(26px, 5vw, 40px)/1.1 var(--font-display); color: #fff; text-shadow: 0 3px 0 rgba(0, 0, 0, .35); }
.fz-fade-t span { font: 800 14px/1.2 var(--font); color: #b8b2d8; }
.fz-fade.fx-cave .fz-fade-t b::before { content: '💧'; display: block; text-align: center; font-size: 26px; margin-bottom: 6px; animation: fzDrip 1.2s ease-in infinite; }
@keyframes fzDrip { 0% { transform: translateY(-14px); opacity: 0; } 30% { opacity: 1; } 100% { transform: translateY(10px); opacity: 0; } }
/* Überfahrt */
.fz-fade.fx-ferry { background: linear-gradient(180deg, #8fd0ff 0%, #c9ecff 48%, #2f86c4 52%, #1d5c9a 100%); }
.fz-fade.fx-ferry.night { background: linear-gradient(180deg, #0f1a3c 0%, #2a3f86 48%, #183a6a 52%, #0b2244 100%); }
.fz-cross { position: absolute; inset: 0; overflow: hidden; }
.fz-sea { position: absolute; left: -10%; right: -10%; top: 50%; height: 60px; transform: translateY(-50%); animation: fzWave 3s linear infinite; }
.fz-sea svg { width: 100%; height: 100%; fill: rgba(255, 255, 255, .28); }
@keyframes fzWave { from { transform: translate(0, -50%); } to { transform: translate(-5%, -50%); } }
.fz-boat { position: absolute; top: calc(50% - 54px); left: -140px; width: 120px; height: 70px; animation: fzSail var(--cross, 3.8s) linear forwards, fzBob 1.4s ease-in-out infinite; }
.fz-fade.fx-ferry.on .fz-boat { animation-name: fzSail, fzBob; }
.fz-boat svg { width: 100%; height: 100%; }
@keyframes fzSail { from { left: -140px; } to { left: calc(100% + 20px); } }
@keyframes fzBob { 50% { transform: translateY(5px) rotate(-2deg); } }
.fz-cross-t { position: absolute; left: 0; right: 0; top: calc(50% + 46px); display: flex; flex-direction: column; align-items: center; gap: 4px; text-align: center; padding: 0 16px; }
.fz-cross-t small { font: 800 12px/1 var(--font); letter-spacing: .12em; text-transform: uppercase; color: rgba(255, 255, 255, .8); }
.fz-cross-t b { font: 600 clamp(24px, 4.6vw, 36px)/1.1 var(--font-display); color: #fff; text-shadow: 0 3px 0 rgba(0, 0, 0, .25); }
.fz-cross-t span { font: 800 14px/1.25 var(--font); color: #e3f4ff; }
.fz-prog { position: absolute; left: 50%; bottom: calc(18% + var(--safe-b, 0px)); width: min(260px, 60%); height: 7px; transform: translateX(-50%); border-radius: 4px; background: rgba(255, 255, 255, .25); overflow: hidden; }
.fz-prog i { display: block; height: 100%; width: 100%; background: #fff; transform-origin: left; animation: fzProg 3.8s linear forwards; }
@keyframes fzProg { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@media (prefers-reduced-motion: reduce) { .fz-boat, .fz-sea { animation: none; left: calc(50% - 60px); } }

/* ───────── Willkommen in einem neuen Gebiet ───────── */
.fz-welcome {
  position: absolute; z-index: 30; left: 50%; top: calc(var(--fw-top-h, 60px) + 70px); transform: translateX(-50%); width: min(420px, calc(100% - 24px));
  display: flex; gap: 12px; align-items: flex-start; padding: 12px 38px 12px 12px; border-radius: 18px;
  background: var(--glass-2); border: 1px solid var(--glass-b); box-shadow: var(--fw-shadow); color: #fff;
  backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); animation: fzWel .45s cubic-bezier(.2, 1.4, .4, 1) both;
}
.fz-welcome.out { animation: fzWelOut .4s ease forwards; }
.fz-welcome .fw-x { position: absolute; top: 8px; right: 8px; }
.fz-wel-ic { flex: none; width: 52px; height: 52px; display: grid; place-items: center; font-size: 28px; border-radius: 15px; background: radial-gradient(circle at 50% 40%, rgba(127, 227, 255, .35), rgba(127, 227, 255, .06)); }
.fz-welcome.fz-cave .fz-wel-ic { background: radial-gradient(circle at 50% 40%, rgba(180, 140, 255, .4), rgba(60, 40, 120, .2)); }
.fz-welcome.fz-mangrove .fz-wel-ic { background: radial-gradient(circle at 50% 40%, rgba(150, 230, 120, .4), rgba(40, 90, 50, .2)); }
.fz-wel-tx { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.fz-wel-tx small { font: 800 11px/1 var(--font); letter-spacing: .1em; text-transform: uppercase; color: #ffd76a; }
.fz-wel-tx b { font: 600 20px/1.1 var(--font-display); }
.fz-wel-tx span { font: 700 13px/1.4 var(--font); color: #e3ddff; }
@keyframes fzWel { from { opacity: 0; transform: translate(-50%, -12px) scale(.95); } }
@keyframes fzWelOut { to { opacity: 0; transform: translate(-50%, -8px); } }

/* ───────── Fähr-Karte & Reiseziele ───────── */
.fz-card-act { display: flex; gap: 8px; margin-top: 10px; }
.fz-card-act .btn[disabled] { opacity: .6; cursor: default; }
.fz-dests { display: flex; flex-direction: column; gap: 6px; padding-right: 26px; }
.fz-dests-t { font: 600 21px/1.15 var(--font-display); }
.fz-dests-l { display: flex; flex-direction: column; gap: 6px; margin-top: 6px; }
.fz-dest { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 14px; background: rgba(255, 255, 255, .07); border: 1px solid rgba(255, 255, 255, .08); }
.fz-dest > div { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
.fz-dest b { font: 600 15.5px/1.15 var(--font-display); }
.fz-dest small { font: 700 12px/1.3 var(--font); color: #cfc8f2; }
.fz-dest-ic { flex: none; width: 36px; height: 36px; display: grid; place-items: center; font-size: 20px; border-radius: 12px; background: rgba(255, 255, 255, .1); }
.fz-dest-st { flex: none; padding: 4px 8px; border-radius: 9px; background: rgba(120, 240, 170, .18); color: #bff5d6; font: 800 12px/1 var(--font); white-space: nowrap; }
.fz-dest.locked { opacity: .78; }
.fz-dest.locked .fz-dest-st { background: rgba(255, 201, 51, .18); color: #ffe9a8; }
.fz-dest.here { border-color: rgba(255, 201, 51, .5); }
.fz-dest.here .fz-dest-st { background: rgba(255, 201, 51, .25); color: #ffe48a; }
.fz-dests-n { font: 700 12px/1.3 var(--font); color: var(--muted, #b8b2d8); margin-top: 4px; }

/* ───────── Polarlicht (Gletscher, nachts): Schleier am oberen Bildrand ───────── */
.fz-aurora {
  position: absolute; z-index: 0; left: 0; right: 0; top: 0; height: 42%; pointer-events: none; opacity: 0; overflow: hidden;
  transition: opacity 2.5s ease; mix-blend-mode: screen;
  -webkit-mask-image: linear-gradient(180deg, #000 0%, #000 35%, transparent 100%); mask-image: linear-gradient(180deg, #000 0%, #000 35%, transparent 100%);
}
.fz-aurora i {
  position: absolute; left: -30%; width: 160%; height: 70%; border-radius: 50%; filter: blur(28px);
  background: linear-gradient(90deg, transparent 0%, rgba(80, 255, 170, .55) 18%, rgba(60, 220, 255, .4) 38%, rgba(150, 110, 255, .45) 58%, rgba(80, 255, 170, .5) 78%, transparent 100%);
  animation: fzAur 18s ease-in-out infinite alternate;
}
.fz-aurora i:nth-child(1) { top: -10%; transform: rotate(-4deg); }
.fz-aurora i:nth-child(2) { top: 12%; height: 45%; opacity: .7; animation-duration: 23s; animation-delay: -7s; transform: rotate(3deg); }
.fz-aurora i:nth-child(3) { top: 28%; height: 30%; opacity: .45; animation-duration: 29s; animation-delay: -13s; }
@keyframes fzAur { 0% { translate: -8% 0; scale: 1 1; } 50% { translate: 6% 4%; scale: 1.1 .8; } 100% { translate: -3% -3%; scale: .95 1.15; } }
@media (prefers-reduced-motion: reduce) { .fz-aurora i { animation: none; } }

/* ===== fish-boat.css ===== */
/* Phase 3 – Agent Boot: Bootsverleih (Jonte), Boots-Karte an Bord, Einladungen, Treibgut, Hochsee-Überblendung.
   Baut auf den Fenster-Klassen .gw-* (fishing-catch.css) und den Glas-Variablen aus fishing.css auf. */

/* ───────── Boots-Karte (an Bord) ───────── */
.bt-bar {
  position: absolute; z-index: 14; left: calc(10px + var(--safe-l, 0px)); top: calc(var(--fw-top-h, 54px) + 58px); width: 280px;
  display: flex; flex-direction: column; gap: 8px; padding: 9px 10px 10px; border-radius: 18px;
  background: var(--glass); border: 1px solid var(--glass-b); box-shadow: var(--fw-shadow); color: #fff;
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); animation: btIn .32s cubic-bezier(.2, 1.4, .4, 1) both;
}
.bt-bar.hidden { display: none; }
.bt-bar.deep { background: linear-gradient(180deg, rgba(14, 44, 92, .86), rgba(20, 24, 70, .82)); border-color: rgba(143, 211, 255, .35); }
.bt-bar-head { display: flex; align-items: center; gap: 8px; min-width: 0; }
.bt-bar-ic { flex: none; width: 34px; height: 34px; display: grid; place-items: center; border-radius: 12px; font-size: 19px;
  background: color-mix(in srgb, var(--bc, #e8604c) 70%, #1b1440); box-shadow: inset 0 -3px 0 rgba(0, 0, 0, .22); }
.bt-bar-t { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.bt-bar-t b { font: 600 15.5px/1.1 var(--font-display); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bt-bar-t small { font: 800 11px/1.2 var(--font); color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bt-chips { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 4px; max-width: 120px; }
.bt-chip { padding: 3px 7px; border-radius: 999px; background: rgba(255, 255, 255, .12); font: 800 11.5px/1.2 var(--font); white-space: nowrap; font-variant-numeric: tabular-nums; }
.bt-chip.warn { background: rgba(255, 138, 61, .85); color: #2a1300; animation: btBlink 1s ease-in-out infinite; }
.bt-chip.full { background: rgba(255, 201, 51, .9); color: #2a1d00; }
.bt-chip.deep { background: rgba(80, 170, 255, .35); }
.bt-chip.anc { background: rgba(255, 255, 255, .22); }
.bt-bar-btns { display: flex; flex-wrap: wrap; gap: 6px; }
.bt-b {
  flex: 1 1 74px; display: inline-flex; align-items: center; justify-content: center; gap: 5px; min-height: 36px; padding: 6px 8px;
  border: 1px solid rgba(255, 255, 255, .16); border-radius: 12px; background: rgba(255, 255, 255, .09); color: #fff; cursor: pointer;
  font: 800 12.5px/1.1 var(--font); transition: transform .12s, background .15s, filter .15s; box-shadow: 0 3px 0 rgba(0, 0, 0, .18);
}
.bt-b i { font-style: normal; font-size: 15px; line-height: 1; }
.bt-b:hover:not(:disabled) { background: rgba(255, 255, 255, .18); transform: translateY(-1px); }
.bt-b:disabled { opacity: .42; cursor: default; box-shadow: none; }
.bt-b.on { background: rgba(255, 201, 51, .9); color: #2a1d00; border-color: rgba(255, 255, 255, .5); }
.bt-b.go:not(:disabled) { background: linear-gradient(180deg, #3fc98a, #23a46a); border-color: rgba(255, 255, 255, .45); }
.bt-b.glow:not(:disabled) { animation: btGlow 1.4s ease-in-out infinite; }
/* Desktop: unter der Event-Leiste (fish-events.css: links oben unter der Muschel-Pille) */
.fw-root:not(.touch):has(.fev-bar:not(.hidden)) .bt-bar { top: calc(var(--fw-top-h, 54px) + 112px); }
/* Touch: kompakt, links über dem Steuer-Stick (die Zeilen oben sind mit Muscheln, Event, Schwarm, Natur belegt) */
.bt-bar.touch { left: calc(8px + var(--safe-l, 0px)); top: auto; bottom: calc(250px + var(--safe-b)); width: 196px; padding: 7px 8px 8px; gap: 6px; border-radius: 16px; z-index: 20; }
.bt-bar.touch .bt-bar-ic { width: 28px; height: 28px; font-size: 16px; border-radius: 10px; }
.bt-bar.touch .bt-bar-t b { font-size: 13.5px; }
.bt-bar.touch .bt-bar-t small { font-size: 10px; }
.bt-bar.touch .bt-chips { max-width: 84px; }
.bt-bar.touch .bt-chip { font-size: 10.5px; padding: 2px 6px; }
.bt-bar.touch .bt-b { flex: 1 1 54px; flex-direction: column; gap: 2px; min-height: 46px; padding: 5px 3px; font-size: 10.5px; }
.bt-bar.touch .bt-b i { font-size: 17px; }
.fw-root.busy .bt-bar { opacity: .55; }

/* ───────── Nähe-Hinweis (Jonte / Einsteigen) ───────── */
.bt-near {
  position: absolute; z-index: 15; left: 50%; bottom: calc(138px + var(--safe-b)); transform: translateX(-50%);
  display: inline-flex; align-items: center; gap: 9px; padding: 7px 10px 7px 8px; border-radius: 999px; cursor: pointer;
  background: linear-gradient(180deg, rgba(43, 111, 168, .95), rgba(26, 72, 128, .95)); border: 1.5px solid rgba(255, 255, 255, .55); color: #fff;
  font: 600 14.5px/1 var(--font-display); box-shadow: 0 4px 0 rgba(0, 0, 0, .22), var(--fw-shadow); animation: btNearIn .34s cubic-bezier(.2, 1.5, .4, 1) both;
}
.bt-near.hidden { display: none; }
.bt-near:hover { filter: brightness(1.08); }
.bt-near-ic { width: 28px; height: 28px; display: grid; place-items: center; border-radius: 50%; background: rgba(255, 255, 255, .2); font-size: 16px; }
.bt-near .fw-kbd { margin-left: 2px; }
.fw-root.busy .bt-near { display: none; }
.fw-root:has(.fi-near:not(.hidden)) .bt-near:not(.tile) { bottom: calc(186px + var(--safe-b)); }
.bt-near.tile {
  left: auto; transform: none; right: calc(88px + var(--safe-r, 0px)); bottom: calc(136px + var(--safe-b)); z-index: 21;
  width: 64px; padding: 6px 3px; border-radius: 17px; flex-direction: column; gap: 3px; text-align: center; font-size: 12.5px; line-height: 1.05;
  animation-name: btTileIn;
}
.bt-near.tile .bt-near-ic { width: 26px; height: 26px; font-size: 16px; }
.fw-root:has(.fi-near.tile:not(.hidden)) .bt-near.tile, .fw-root:has(.mk-near.tile:not(.hidden)) .bt-near.tile { bottom: calc(220px + var(--safe-b)); }

/* ───────── Hinweis-Pille ───────── */
.bt-pop {
  position: absolute; z-index: 16; left: 50%; bottom: calc(232px + var(--safe-b)); transform: translateX(-50%); max-width: min(540px, calc(100% - 24px));
  padding: 8px 14px; border-radius: 16px; background: var(--glass-2); border: 1px solid var(--glass-b); box-shadow: var(--fw-shadow);
  font: 800 13.5px/1.3 var(--font); color: #fff; text-align: center; pointer-events: none; backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
}
.bt-pop.on { animation: btPopIn .3s cubic-bezier(.2, 1.5, .4, 1) both; }
.bt-pop.hidden { display: none; }
.bt-pop.bad { border-color: rgba(255, 138, 154, .55); }
.bt-pop.crate { border-color: rgba(255, 210, 58, .6); }
.bt-pop.deep, .bt-pop.home { border-color: rgba(143, 211, 255, .6); }
.bt-pop.storm, .bt-pop.time { border-color: rgba(255, 170, 80, .7); }

/* ───────── Karten (Einladung, Anfrage, Treibgut, Begrüßung) ───────── */
.bt-card {
  position: absolute; z-index: 30; left: 50%; bottom: calc(190px + var(--safe-b)); transform: translateX(-50%); width: min(430px, calc(100% - 24px));
  display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 4px 12px; align-items: center; padding: 12px 14px; border-radius: 20px;
  background: var(--glass-2); border: 1.5px solid rgba(143, 211, 255, .45); box-shadow: var(--fw-shadow), 0 0 0 4px rgba(143, 211, 255, .08); color: #fff;
  backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); animation: btCardIn .38s cubic-bezier(.2, 1.4, .4, 1) both;
}
.bt-card.hidden { display: none; }
.bt-card.loot { border-color: rgba(255, 210, 58, .6); }
.bt-card-ic { grid-row: span 2; width: 48px; height: 48px; display: grid; place-items: center; border-radius: 16px; font-size: 27px; background: rgba(143, 211, 255, .18); }
.bt-card-ic.chest { background: rgba(255, 210, 58, .2); animation: btWiggle 1s ease-in-out 2; }
.bt-card-t { min-width: 0; display: flex; flex-direction: column; gap: 3px; text-align: left; }
.bt-card-t b { font: 600 16px/1.15 var(--font-display); }
.bt-card-t small { font: 700 12.5px/1.3 var(--font); color: var(--muted); }
.bt-card-t .bt-card-hint { font-size: 11.5px; opacity: .85; }
.bt-card-btns { grid-column: 2; display: flex; gap: 8px; margin-top: 6px; flex-wrap: wrap; }
.bt-card-btns .btn { padding: 8px 14px; font-size: 14px; min-height: 38px; }
.bt-loot { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 3px; }
.bt-loot span { display: inline-flex; align-items: center; gap: 4px; padding: 3px 8px 3px 4px; border-radius: 999px; background: rgba(255, 255, 255, .1); font: 800 12px/1.2 var(--font); }
.bt-loot .bt-mat-cv { width: 20px; height: 20px; }
.fw-root.touch .bt-card { left: calc(12px + var(--safe-l, 0px)); right: calc(12px + var(--safe-r, 0px)); width: auto; transform: none; bottom: auto; top: calc(var(--ew-row, 100px) + var(--ew-h, 48px) + 8px); padding: 10px 11px; animation-name: btCardInT; }
.fw-root.touch .bt-card-ic { width: 40px; height: 40px; font-size: 22px; }
.fw-root.touch .bt-card-t b { font-size: 14.5px; }
.fw-root.touch .bt-card-btns { grid-column: 1 / -1; }
.fw-root.touch .bt-card-btns .btn { flex: 1; }

/* ───────── Auswahl (Einladen / Steuer) ───────── */
.bt-popover {
  position: absolute; z-index: 45; width: 260px; max-height: min(420px, calc(100% - 140px)); overflow: auto; padding: 10px; border-radius: 16px;
  display: flex; flex-direction: column; gap: 5px; background: var(--glass-2); border: 1px solid var(--glass-b); box-shadow: var(--fw-shadow); color: #fff;
  backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); animation: btIn .25s ease-out both;
}
.bt-popover.hidden { display: none; }
.bt-po-t { font: 600 14.5px/1.2 var(--font-display); margin: 0 2px 3px; }
.bt-po-row {
  display: grid; grid-template-columns: 22px minmax(0, 1fr) auto; align-items: center; gap: 8px; width: 100%; padding: 7px 9px; border-radius: 11px; cursor: pointer;
  border: 1px solid rgba(255, 255, 255, .12); background: rgba(255, 255, 255, .07); color: #fff; font: 800 13px/1.2 var(--font); text-align: left;
}
.bt-po-row:hover:not(:disabled) { background: rgba(255, 255, 255, .16); }
.bt-po-row:disabled { opacity: .6; cursor: default; }
.bt-po-row i { width: 20px; height: 20px; border-radius: 50%; display: grid; place-items: center; font-style: normal; font-size: 14px; box-shadow: inset 0 -2px 0 rgba(0, 0, 0, .25); }
.bt-po-row span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bt-po-row small { color: var(--muted); font-size: 11px; }
.bt-po-row.all { background: rgba(63, 201, 138, .22); border-color: rgba(63, 201, 138, .5); }
.bt-po-row.sel { border-color: rgba(255, 201, 51, .7); }
.bt-po-empty { color: var(--muted); font: 700 12px/1.3 var(--font); padding: 2px 4px; }
.bt-po-modes { display: flex; flex-direction: column; gap: 4px; margin-top: 6px; padding-top: 7px; border-top: 1px solid rgba(255, 255, 255, .12); }
.bt-mode { padding: 6px 9px; border-radius: 10px; border: 1px solid rgba(255, 255, 255, .12); background: transparent; color: var(--muted); font: 800 12px/1.2 var(--font); text-align: left; cursor: pointer; }
.bt-mode.sel { color: #fff; background: rgba(143, 211, 255, .2); border-color: rgba(143, 211, 255, .5); }

/* ───────── Fenster „Bootsverleih“ ───────── */
.bt-modal { max-width: 720px !important; }
.bt-view { display: flex; flex-direction: column; gap: 12px; }
.bt-far { margin: 0; padding: 8px 12px; border-radius: 12px; background: rgba(255, 201, 51, .12); border: 1px solid rgba(255, 201, 51, .35); font: 800 13px/1.35 var(--font); text-align: left; }
.bt-err { color: #ffb3bf; font-weight: 800; }
.bt-sec {
  display: grid; grid-template-columns: 132px minmax(0, 1fr); gap: 14px; align-items: start; padding: 12px 14px; border-radius: 18px;
  background: rgba(8, 4, 30, .3); border: 1px solid rgba(255, 255, 255, .09); text-align: left;
}
.bt-sec.mine { background: linear-gradient(180deg, rgba(47, 127, 208, .16), rgba(8, 4, 30, .3)); border-color: rgba(143, 211, 255, .3); }
.bt-sec.locked { opacity: .75; }
.bt-pic { width: 132px; padding: 6px 4px; border-radius: 14px; background: linear-gradient(180deg, rgba(143, 211, 255, .14), rgba(47, 127, 208, .1)); }
.bt-pic svg { display: block; width: 100%; height: auto; }
.bt-sec-main { min-width: 0; display: flex; flex-direction: column; gap: 7px; }
.bt-sec h4 { margin: 0; display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; font: 600 19px/1.15 var(--font-display); text-align: left; }
.bt-price { padding: 4px 10px; border-radius: 999px; background: rgba(255, 255, 255, .12); font: 800 12.5px/1.2 var(--font); white-space: nowrap; }
.bt-price.free { background: #62d98a; color: #0f2e1a; }
.bt-facts { margin: 0; font: 700 13px/1.4 var(--font); color: #e6e1ff; text-align: left; }
.bt-note { margin: 0; font: 700 12.5px/1.4 var(--font); color: var(--muted); text-align: left; }
.bt-note.small { font-size: 11.5px; }
.bt-go { align-self: flex-start; min-height: 42px; }
.bt-field { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.bt-field > small { min-width: 42px; font: 800 11px/1 var(--font); text-transform: uppercase; letter-spacing: .6px; color: var(--muted); }
.bt-swatches { display: flex; gap: 6px; flex-wrap: wrap; }
.bt-sw { width: 28px; height: 28px; border-radius: 50%; cursor: pointer; border: 2px solid rgba(255, 255, 255, .35); background: var(--sw); box-shadow: inset 0 -3px 0 rgba(0, 0, 0, .22); transition: transform .12s; }
.bt-sw:hover { transform: scale(1.08); }
.bt-sw.sel { border-color: #fff; box-shadow: 0 0 0 3px rgba(255, 201, 51, .8), inset 0 -3px 0 rgba(0, 0, 0, .22); }
.bt-swatches.small .bt-sw { width: 22px; height: 22px; }
.bt-sw-name { font: 800 12.5px/1 var(--font); color: var(--muted); }
.bt-name { display: inline-flex; align-items: center; gap: 6px; }
.bt-name b { font: 600 15px/1.1 var(--font-display); min-width: 120px; text-align: center; }
.bt-arrow { width: 28px; height: 28px; border-radius: 50%; border: 1px solid rgba(255, 255, 255, .2); background: rgba(255, 255, 255, .08); color: #fff; cursor: pointer; font-size: 11px; }
.bt-arrow:hover { background: rgba(255, 255, 255, .18); }
.bt-cost { display: flex; flex-wrap: wrap; gap: 5px; }
.bt-cost-chip { display: inline-flex; align-items: center; gap: 4px; padding: 3px 8px 3px 4px; border-radius: 999px; background: rgba(255, 255, 255, .08); border: 1px solid rgba(255, 255, 255, .12); font: 800 12px/1.2 var(--font); }
.bt-cost-chip i { font-style: normal; font-size: 14px; padding-left: 3px; }
.bt-cost-chip small { color: var(--muted); font-size: 11px; font-weight: 700; }
.bt-cost-chip.ok { border-color: rgba(98, 217, 138, .5); }
.bt-cost-chip.miss { border-color: rgba(255, 138, 154, .55); background: rgba(255, 77, 94, .1); }
.bt-mat-cv { width: 22px; height: 22px; }
.bt-ups { display: flex; flex-direction: column; gap: 7px; margin-top: 4px; }
.bt-up { display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 8px 10px; border-radius: 14px; background: rgba(8, 4, 30, .32); border: 1px solid rgba(255, 255, 255, .08); }
.bt-up.max { opacity: .8; }
.bt-up-ic { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 12px; background: rgba(255, 255, 255, .08); font-size: 18px; }
.bt-up-main { min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.bt-up-head { display: flex; align-items: center; gap: 8px; }
.bt-up-head b { font: 600 15px/1.1 var(--font-display); }
.bt-up-main > small { font: 700 12px/1.3 var(--font); color: var(--muted); }
.bt-up-main > small em { font-style: normal; color: #8ff0b8; }
.bt-pips { display: inline-flex; gap: 3px; }
.bt-pips i { width: 9px; height: 9px; border-radius: 50%; background: rgba(255, 255, 255, .16); }
.bt-pips i.on { background: var(--primary, #ffc933); box-shadow: 0 0 0 2px rgba(255, 201, 51, .2); }
.bt-up-btn { min-height: 36px; padding: 7px 12px; font-size: 13px; white-space: nowrap; }
.bt-tips { display: flex; flex-direction: column; gap: 5px; padding: 9px 12px; border-radius: 14px; background: rgba(143, 211, 255, .08); border: 1px dashed rgba(143, 211, 255, .3); }
.bt-tips p { margin: 0; font: 700 12.5px/1.4 var(--font); color: #dfe8ff; text-align: left; }
@media (max-width: 560px) {
  .bt-sec { grid-template-columns: minmax(0, 1fr); gap: 8px; padding: 10px; }
  .bt-pic { width: 110px; justify-self: center; }
  .bt-up { grid-template-columns: 30px minmax(0, 1fr); }
  .bt-up-btn { grid-column: 1 / -1; width: 100%; }
  .bt-go { align-self: stretch; }
  .bt-name b { min-width: 0; }
}

@keyframes btIn { from { opacity: 0; transform: translateY(-6px) scale(.97); } }
@keyframes btNearIn { from { opacity: 0; transform: translate(-50%, 8px) scale(.94); } }
@keyframes btTileIn { from { opacity: 0; transform: scale(.9); } }
@keyframes btPopIn { from { opacity: 0; transform: translate(-50%, 6px) scale(.95); } }
@keyframes btCardIn { from { opacity: 0; transform: translate(-50%, 12px) scale(.95); } }
@keyframes btCardInT { from { opacity: 0; transform: translateY(12px) scale(.96); } }
@keyframes btBlink { 50% { opacity: .6; } }
@keyframes btGlow { 50% { box-shadow: 0 0 0 4px rgba(63, 201, 138, .35), 0 3px 0 rgba(0, 0, 0, .18); filter: brightness(1.12); } }
@keyframes btWiggle { 25% { transform: rotate(-8deg); } 75% { transform: rotate(8deg); } }
/* Fenster-Texte linksbündig (.gw p ist zentriert) */
.gw.bt-win p, .gw.bt-win h4 { text-align: left; }
.bt-bar.touch .bt-bar-head { flex-wrap: wrap; row-gap: 4px; }
.bt-bar.touch .bt-chips { flex-basis: 100%; justify-content: flex-start; max-width: none; }

/* (Feinschliff P3) Handy: die Boots-Karte stand mittig links und verdeckte das eigene Boot. Jetzt eine schmale Spalte unten
   links direkt über dem Steuer-Stick – wie die Knopf-Spalte rechts: oben eine kleine Pille (Boot, Leihzeit, Treibgut), darunter
   runde Knöpfe. Verfügbare Hauptaktionen (grün: Aussteigen/Hochsee/Heimkehren, gelb: Anker lichten) tragen ihr Wort daneben.
   Tablet (Touch über 760 px) und Desktop bleiben wie bisher. */
@media (max-width: 760px) {
  .bt-bar.touch {
    left: calc(10px + var(--safe-l, 0px)); bottom: calc(192px + var(--safe-b, 0px)); width: auto; max-width: 180px; padding: 0; gap: 6px;
    background: none; border: 0; box-shadow: none; backdrop-filter: none; -webkit-backdrop-filter: none; align-items: flex-start; pointer-events: none;
  }
  .bt-bar.touch > * { pointer-events: auto; }
  .bt-bar.touch .bt-bar-head {
    gap: 5px; padding: 3px 8px 3px 3px; border-radius: 999px; background: var(--glass-2); border: 1px solid var(--glass-b); box-shadow: var(--fw-shadow);
    backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  }
  .bt-bar.touch.deep .bt-bar-head { background: linear-gradient(180deg, rgba(14, 44, 92, .92), rgba(20, 24, 70, .9)); }
  .bt-bar.touch .bt-bar-ic { width: 24px; height: 24px; font-size: 14px; border-radius: 50%; }
  .bt-bar.touch .bt-bar-t { display: none; }
  .bt-bar.touch .bt-bar-head { flex-wrap: nowrap; }
  .bt-bar.touch .bt-chips { flex-basis: auto; max-width: none; flex-wrap: nowrap; }
  .bt-bar.touch .bt-chip { font-size: 11px; padding: 2px 6px; }
  .bt-bar.touch .bt-bar-btns { flex-direction: column; flex-wrap: nowrap; gap: 7px; }
  .bt-bar.touch .bt-b {
    position: relative; flex: none; width: 46px; height: 46px; min-height: 0; padding: 0; border-radius: 50%;
    background: var(--glass-2); border: 1px solid var(--glass-b); box-shadow: 0 4px 0 rgba(0, 0, 0, .22);
  }
  .bt-bar.touch .bt-b i { font-size: 20px; }
  .bt-bar.touch .bt-b span { display: none; }
  .bt-bar.touch .bt-b.go:not(:disabled) span, .bt-bar.touch .bt-b.on span {
    display: block; position: absolute; left: calc(100% + 6px); top: 50%; transform: translateY(-50%); white-space: nowrap;
    padding: 4px 8px; border-radius: 999px; font: 800 11.5px/1 var(--font); color: #fff; background: rgba(27, 20, 64, .82); box-shadow: var(--fw-shadow); pointer-events: none;
  }
  .bt-bar.touch .bt-b:disabled { opacity: .5; }
  .bt-bar.touch .bt-b.on { background: rgba(255, 201, 51, .92); }
  .bt-bar.touch .bt-b.go:not(:disabled) { background: linear-gradient(180deg, #3fc98a, #23a46a); }
}

/* ===== fish-nature.css ===== */
/* Phase 3 – Agent Naturereignisse (nature-ui.js): Inselriese, Gewitter, Regenbogen, Sternschnuppen. Präfix fnat-.
   Fenster nutzen die Ausrüstungs-Klassen (.gw-*, fishing-catch.css) – gleiche Glas-Optik, gleiche Schriften. */

/* ───────── Inselfunk: eigene Farben (chat.js setzt k-<kind>) ───────── */
.fw-msg.sys.k-boss, .fw-msg.sys.k-nature { font-style: normal; padding-left: 8px; border-left: 2.5px solid var(--kc); color: color-mix(in srgb, var(--kc) 50%, white); }
.fw-msg.sys.k-boss { --kc: #7fe3ff; font-weight: 800; }
.fw-msg.sys.k-nature { --kc: #c9b8ff; }

/* ───────── oben mittig: Ereignis-Chip + Balken des Inselriesen ───────── */
.fnat-top {
  position: absolute; z-index: 17; top: calc(var(--fw-top-h, 54px) + 10px); left: 50%; transform: translateX(-50%);
  display: flex; flex-direction: column; align-items: center; gap: 6px; pointer-events: none; width: max-content; max-width: calc(100% - 20px);
}
.fw-root:not(.touch):has(.fw-banner:not(.hidden)) .fnat-top { top: calc(var(--fw-top-h, 54px) + 76px); }
.fnat-chip {
  display: inline-flex; align-items: center; gap: 7px; padding: 6px 11px 6px 9px; border-radius: 999px; pointer-events: auto; white-space: nowrap;
  background: rgba(22, 28, 52, .82); border: 1.5px solid rgba(201, 184, 255, .5); color: #fff; font: 600 13.5px/1 var(--font-display);
  box-shadow: var(--fw-shadow); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); animation: fnatIn .4s cubic-bezier(.2, 1.4, .4, 1) both;
}
.fnat-chip.hidden { display: none; }
.fnat-chip .ic { font-size: 16px; }
.fnat-chip .cd { padding: 3px 6px; border-radius: 8px; background: rgba(255, 255, 255, .14); font: 800 11.5px/1 var(--font); font-variant-numeric: tabular-nums; }
.fnat-chip.storm { background: linear-gradient(180deg, rgba(40, 46, 66, .9), rgba(22, 26, 40, .92)); border-color: rgba(255, 228, 92, .55); }
.fnat-chip.storm .ic { animation: fnatZap 3.2s steps(1) infinite; }
.fnat-chip.rainbow { border-image: none; border-color: rgba(255, 255, 255, .6); background: linear-gradient(90deg, rgba(255, 92, 92, .5), rgba(255, 196, 64, .5), rgba(92, 214, 120, .5), rgba(80, 160, 255, .5), rgba(160, 100, 255, .5)), rgba(20, 30, 50, .7); }
.fnat-chip.star { border-color: rgba(255, 243, 176, .6); background: linear-gradient(180deg, rgba(28, 36, 90, .9), rgba(14, 18, 48, .92)); }
.fnat-chip.star .ic { animation: fnatTwinkle 1.6s ease-in-out infinite; }
@keyframes fnatZap { 0%, 88%, 100% { filter: none; } 90%, 94% { filter: brightness(2.2) drop-shadow(0 0 6px #fff36a); } }
@keyframes fnatTwinkle { 50% { transform: rotate(-12deg) scale(1.12); } }
@keyframes fnatIn { from { opacity: 0; transform: translateY(-8px) scale(.94); } }

.fnat-boss {
  display: flex; align-items: center; gap: 9px; padding: 7px 13px 8px 9px; border-radius: 16px; pointer-events: auto; cursor: pointer;
  width: min(420px, calc(100vw - 20px)); color: #fff;
  background: linear-gradient(135deg, rgba(12, 44, 70, .92), rgba(16, 30, 54, .92)); border: 1.5px solid rgba(127, 227, 255, .55);
  box-shadow: var(--fw-shadow), 0 0 0 4px rgba(127, 227, 255, .08); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  animation: fnatIn .45s cubic-bezier(.2, 1.3, .4, 1) both; transition: filter .15s;
}
.fnat-boss:hover { filter: brightness(1.1); }
.fnat-boss.hidden { display: none; }
.fnat-boss > .ic { font-size: 26px; line-height: 1; flex: none; animation: fnatBob 2.6s ease-in-out infinite; }
.fnat-boss .col { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 5px; }
.fnat-boss .row { display: flex; align-items: baseline; gap: 8px; white-space: nowrap; }
.fnat-boss .tt { font: 600 15px/1 var(--font-display); }
.fnat-boss .pct { font: 800 13px/1 var(--font); color: #9ff0ff; font-variant-numeric: tabular-nums; }
.fnat-boss .inf { margin-left: auto; font: 800 12px/1 var(--font); color: rgba(255, 255, 255, .8); font-variant-numeric: tabular-nums; overflow: hidden; text-overflow: ellipsis; }
.fnat-bar { position: relative; height: 10px; border-radius: 6px; overflow: hidden; background: rgba(0, 0, 0, .35); box-shadow: inset 0 1px 2px rgba(0, 0, 0, .4); }
.fnat-bar i { position: absolute; inset: 0; transform-origin: left center; border-radius: 6px; }
.fnat-bar .ghost { background: rgba(255, 210, 63, .85); transition: transform 1.1s ease-out; }
.fnat-bar .fill { background: linear-gradient(90deg, #2fb2d8, #7fe3ff 60%, #c9f6ff); transition: transform .35s ease-out; }
.fnat-boss.s-announced { border-color: rgba(255, 210, 63, .7); }
.fnat-boss.s-announced .fill { background: repeating-linear-gradient(-45deg, rgba(255, 210, 63, .5) 0 8px, rgba(255, 210, 63, .25) 8px 16px); animation: fnatStripes 1s linear infinite; background-size: 22px 22px; }
.fnat-boss.s-won { border-color: rgba(255, 210, 63, .85); background: linear-gradient(135deg, rgba(110, 76, 10, .92), rgba(16, 30, 54, .92)); }
.fnat-boss.s-gone { opacity: .82; }
.fnat-boss.ext { border-color: rgba(255, 120, 90, .85); animation: fnatPulse 1s ease-in-out infinite; }
@keyframes fnatBob { 50% { transform: translateY(-3px) rotate(-4deg); } }
@keyframes fnatStripes { to { background-position: 22px 0; } }
@keyframes fnatPulse { 50% { box-shadow: var(--fw-shadow), 0 0 0 5px rgba(255, 120, 90, .3); } }

.fnat-feed { display: flex; flex-direction: column; align-items: center; gap: 3px; pointer-events: none; }
.fnat-fl {
  padding: 3px 10px; border-radius: 10px; background: rgba(10, 20, 36, .66); color: #e9fbff; font: 800 12px/1.25 var(--font);
  white-space: nowrap; animation: fnatIn .3s ease-out both; transition: opacity .4s, transform .4s;
}
.fnat-fl.good { color: #b8ffcf; }
.fnat-fl.bad { color: #ffc4b8; }
.fnat-fl.out { opacity: 0; transform: translateY(-4px); }

/* eigene Meldung nach einem Zug am Riesen (über der Ausrüstungsleiste) */
.fnat-pop {
  position: absolute; z-index: 23; left: 50%; bottom: calc(196px + var(--safe-b, 0px)); transform: translateX(-50%); max-width: min(520px, calc(100% - 24px));
  padding: 9px 15px; border-radius: 16px; background: rgba(12, 44, 70, .92); border: 1.5px solid rgba(127, 227, 255, .6); color: #fff;
  font: 600 15px/1.25 var(--font-display); text-align: center; pointer-events: none; box-shadow: var(--fw-shadow);
  animation: fnatPopIn .32s cubic-bezier(.2, 1.5, .4, 1) both;
}
.fnat-pop.hidden { display: none; }
.fnat-pop.good { border-color: rgba(120, 240, 170, .7); }
.fnat-pop.bad { background: rgba(70, 24, 18, .92); border-color: rgba(255, 140, 110, .6); }
@keyframes fnatPopIn { from { opacity: 0; transform: translate(-50%, 8px) scale(.95); } }
/* Treffer am Riesen: catch-ui würde „Eingeholt“ melden – die eigene Meldung ersetzt sie */

/* Blitz: kurzer heller Schleier über allem (Stärke --fa; bei „weniger Bewegung“ setzt nature-ui.js sie stark herab) */
.fnat-flash { position: absolute; inset: 0; z-index: 2; pointer-events: none; opacity: 0; background: radial-gradient(ellipse at 50% 0%, #fff, rgba(220, 232, 255, .8) 60%, rgba(200, 215, 255, .6)); }
.fnat-flash.on { animation: fnatFlash .5s ease-out both; }
@keyframes fnatFlash { 0% { opacity: var(--fa, .4); } 18% { opacity: calc(var(--fa, .4) * .25); } 30% { opacity: calc(var(--fa, .4) * .85); } 100% { opacity: 0; } }

/* ───────── Fenster: Siegerbild & Info ───────── */
.fnat-modal { max-width: 640px !important; }
.fnat-win .gw-body, .fnat-infow .gw-body { padding-bottom: 18px; }
.fnat-photo { display: block; width: 100%; height: auto; border-radius: 6px; box-shadow: 0 10px 26px rgba(0, 0, 0, .45); transform: rotate(-1.2deg); margin: 4px 0 10px; }
.fnat-rw { margin: 6px 0 10px; font: 800 14px/1.4 var(--font); color: #ffe9a8; text-align: center; }
.fnat-acts { display: flex; justify-content: center; gap: 10px; flex-wrap: wrap; }
.fnat-acts .btn { min-width: 140px; text-decoration: none; display: inline-flex; align-items: center; justify-content: center; }
.fnat-info { display: flex; flex-direction: column; gap: 14px; }
.fnat-sec { padding: 12px 14px; border-radius: 14px; background: rgba(255, 255, 255, .06); border: 1px solid rgba(255, 255, 255, .1); }
.fnat-sec h4 { margin: 0 0 6px; font: 600 18px/1.2 var(--font-display); text-align: left; }
.fnat-status { text-align: left; margin: 0 0 8px; font: 800 14px/1.35 var(--font); color: #9ff0ff; }
.fnat-list { margin: 0; padding-left: 18px; font: 700 13.5px/1.45 var(--font); color: rgba(255, 255, 255, .86); }
.fnat-list li + li { margin-top: 4px; }
.fnat-stats { text-align: left; margin: 10px 0 0; font: 800 13px/1.3 var(--font); color: #ffd23f; }
.fnat-again { margin-top: 10px; }

/* ───────── Handy ───────── */
.fw-root.touch .fnat-top { top: calc(var(--ew-row, 100px) + var(--ew-h, 48px) + 8px + var(--fnat-ds, 0px) + var(--fnat-dz, 0px)); }
/* andere Hinweise in derselben Zeile (Schwarm-Pille, Reise-Chip der Gebiete) schieben den Balken nach unten */
.fw-root.touch:has(.fsw-pill:not(.hidden)) .fnat-top { --fnat-ds: 42px; }
.fw-root.touch:has(.fz-chip.touch:not(.hidden)) .fnat-top { --fnat-dz: 48px; }
/* (QA P3) links bündig und schmaler – rechts steht die Knopf-Spalte (fw-tbtns) */
.fw-root.touch .fnat-top { left: calc(10px + var(--safe-l, 0px)); transform: none; align-items: flex-start; max-width: calc(100% - 86px); }
.fw-root.touch .fnat-boss { width: min(360px, calc(100vw - 86px)); padding: 6px 10px 7px 8px; }
.fw-root.touch .fnat-boss > .ic { font-size: 22px; }
.fw-root.touch .fnat-boss .tt { font-size: 14px; }
.fw-root.touch .fnat-pop { bottom: auto; top: 46%; font-size: 14px; }
/* Inselfunk-Zeilen (Handy) unter den Balken schieben, solange er da ist */
.fw-root.touch:has(.fnat-top .fnat-boss:not(.hidden)) .fw-feed { top: calc(var(--ew-row, 100px) + var(--ew-h, 48px) + 64px + var(--fnat-ds, 0px) + var(--fnat-dz, 0px)); }
.fw-root.touch:has(.fnat-top.two) .fw-feed { top: calc(var(--ew-row, 100px) + var(--ew-h, 48px) + 100px + var(--fnat-ds, 0px) + var(--fnat-dz, 0px)); }
.fw-root.touch:has(.fsw-pill:not(.hidden)) { --fnat-ds: 42px; }
.fw-root.touch:has(.fz-chip.touch:not(.hidden)) { --fnat-dz: 48px; }
/* (QA P3) Tablet (Touch, breiter als 760 px): Muschel-Pille und Event-Leiste stehen links oben wie am Desktop –
   der Balken kommt darunter (vorher lag er hinter der Event-Leiste) */
@media (min-width: 761px) {
  .fw-root.touch .fnat-top { top: calc(var(--fw-top-h, 54px) + 112px + var(--fnat-ds, 0px) + var(--fnat-dz, 0px)); }
  .fw-root.touch:has(.fw-banner:not(.hidden)) .fnat-top { top: calc(var(--fw-top-h, 54px) + 182px + var(--fnat-ds, 0px) + var(--fnat-dz, 0px)); }
  .fw-root.touch:has(.fnat-top .fnat-boss:not(.hidden)) .fw-feed { top: calc(var(--fw-top-h, 54px) + 176px + var(--fnat-ds, 0px) + var(--fnat-dz, 0px)); }
  .fw-root.touch:has(.fnat-top.two) .fw-feed { top: calc(var(--fw-top-h, 54px) + 212px + var(--fnat-ds, 0px) + var(--fnat-dz, 0px)); }
}
@media (prefers-reduced-motion: reduce) {
  .fnat-boss > .ic, .fnat-chip .ic, .fnat-boss.ext, .fnat-boss.s-announced .fill { animation: none; }
}

/* (Feinschliff P3) Inselriese aus der Ferne (Höhle, Gletscher, Mangroven, Hochsee): kleiner Chip mit Fortschritt statt Balken,
   Klick/Tipp öffnet die Details (nature-ui.js Klasse .far) */
.fnat-boss.far { width: auto !important; padding: 5px 12px 5px 8px; gap: 7px; border-radius: 999px; box-shadow: var(--fw-shadow); }
.fnat-boss.far > .ic { font-size: 17px; animation: none; }
.fnat-boss.far .col { flex: none; flex-direction: row; align-items: center; gap: 7px; }
.fnat-boss.far .row { gap: 6px; }
.fnat-boss.far .tt { font-size: 13px; }
.fnat-boss.far .inf { display: none; }
.fnat-boss.far.s-announced .inf { display: inline; margin: 0; }
.fnat-boss.far .fnat-bar { width: 44px; height: 5px; flex: none; }
.fnat-chip.away { opacity: .72; filter: saturate(.6); }

/* ===== fish-growth.css ===== */
/* Phase 3 – Agent Insel wächst (growth-ui.js): Inselausbau, Bauhütte, Inselkontor, Namensschild-Verzierungen.
   Baut auf den Fenster-Klassen .gw-* (fishing-catch.css), .cr-* (fish-craft.css) und dem Nähe-Hinweis .mk-near (fish-market.css) auf. */

/* ───────── Nähe-Hinweis ───────── */
.gr-stack {
  position: absolute; z-index: 15; left: 50%; bottom: calc(138px + var(--safe-b, 0px)); transform: translateX(-50%);
  display: flex; flex-direction: column; align-items: center; pointer-events: none !important;
}
.gr-stack .mk-near { pointer-events: auto; }
/* Kontor steht nah an der Bestenlisten-Tafel: deren Hinweis sitzt an derselben Stelle → unser Hinweis rückt darüber */
.fw-root:has(.fw-hint.board.show) .gr-stack { bottom: calc(186px + var(--safe-b, 0px)); }
.gr-near { background: linear-gradient(180deg, rgba(232, 146, 52, .94), rgba(186, 98, 26, .94)); }
.gr-near .mk-near-tap { color: #a8540f; }
.gr-near.hidden { display: none !important; }
.fw-root.busy .gr-near { display: none !important; }

/* ───────── Namensschilder Bauhütte / Kontor ───────── */
.gr-tags .gr-tag small { color: #ffe2b8; }

/* ───────── Hinweis-Karte (Betreten) ───────── */
.gr-notice {
  position: absolute; z-index: 24; left: 50%; top: calc(var(--fw-top-h, 56px) + 14px); transform: translateX(-50%);
  display: flex; align-items: center; gap: 12px; width: min(560px, calc(100% - 24px)); padding: 12px 40px 12px 14px; border-radius: 20px;
  background: linear-gradient(160deg, rgba(58, 40, 110, .95), rgba(30, 22, 70, .95)); border: 1.5px solid rgba(255, 210, 122, .55);
  box-shadow: 0 10px 30px rgba(0, 0, 0, .35); color: #fff; animation: grIn .45s cubic-bezier(.2, 1.4, .4, 1) both;
}
.gr-notice.out { animation: grOut .35s ease forwards; }
.gr-notice-ic { flex: none; width: 54px; height: 54px; display: grid; place-items: center; border-radius: 16px; background: rgba(255, 210, 122, .18); font-size: 30px; }
.gr-notice-tx { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; text-align: left; }
.gr-notice-tx small { font: 800 10.5px/1.1 var(--font); letter-spacing: .8px; text-transform: uppercase; color: #ffd27a; }
.gr-notice-tx b { font: 700 18px/1.15 var(--font-display); }
.gr-notice-tx p { margin: 0; font-size: 13px; line-height: 1.35; color: var(--muted); }
.gr-notice-go { flex: none; padding: 8px 12px; font-size: 13.5px; }
.gr-notice-x { position: absolute; top: 6px; right: 8px; width: 26px; height: 26px; border: none; border-radius: 50%; background: rgba(255, 255, 255, .1); color: #fff; cursor: pointer; }
@keyframes grIn { from { opacity: 0; transform: translate(-50%, -12px) scale(.96); } }
@keyframes grOut { to { opacity: 0; transform: translate(-50%, -10px) scale(.97); } }

/* ───────── Feier beim Stufenaufstieg ───────── */
.gr-cele { position: absolute; inset: 0; z-index: 40; display: grid; place-items: center; pointer-events: none; background: radial-gradient(closest-side, rgba(20, 12, 50, .55), transparent); animation: grFade .4s ease both; }
.gr-cele.out { animation: grFadeOut .4s ease forwards; }
.gr-cele-in {
  pointer-events: auto; position: relative; width: min(420px, calc(100% - 32px)); padding: 22px 22px 18px; border-radius: 26px; text-align: center; color: #fff;
  background: linear-gradient(170deg, #4b2fa0, #2a1a66 70%); border: 2px solid #ffd27a; box-shadow: 0 0 0 6px rgba(255, 210, 122, .18), 0 20px 50px rgba(0, 0, 0, .45);
  animation: grPop .6s cubic-bezier(.2, 1.6, .4, 1) both;
}
.gr-cele-in small { font: 800 11.5px/1 var(--font); letter-spacing: 1px; text-transform: uppercase; color: #ffd27a; }
.gr-cele-ic { font-size: 64px; line-height: 1; margin: 10px 0 4px; filter: drop-shadow(0 4px 0 rgba(0, 0, 0, .25)); animation: grBounce 1.4s ease-in-out infinite; }
.gr-cele-in h3 { margin: 4px 0 2px; font: 700 28px/1.1 var(--font-display); text-shadow: 0 3px 0 rgba(0, 0, 0, .3); }
.gr-cele-in b { display: block; font: 700 17px/1.25 var(--font-display); color: #ffe7a8; }
.gr-cele-in p { margin: 8px 0 0; font-size: 14px; line-height: 1.35; color: #e7e2ff; }
.gr-cele-bonus { font-weight: 800; color: #9ff0b8 !important; }
.gr-cele-thx { font-style: italic; }
.gr-cele-in .btn { margin-top: 14px; min-width: 140px; }
.gr-confetti { position: absolute; inset: 0; overflow: hidden; pointer-events: none; }
.gr-confetti i { position: absolute; top: -20px; width: 9px; height: 14px; border-radius: 2px; background: var(--c); transform: rotate(var(--r)); animation: grFall 2.8s cubic-bezier(.3, .2, .6, 1) forwards; }
@keyframes grFall { to { transform: translateY(110vh) rotate(calc(var(--r) + 540deg)); } }
@keyframes grPop { from { opacity: 0; transform: scale(.6) translateY(20px); } }
@keyframes grBounce { 50% { transform: translateY(-6px) scale(1.05); } }
@keyframes grFade { from { opacity: 0; } }
@keyframes grFadeOut { to { opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .gr-confetti, .gr-cele-ic { animation: none !important; } .gr-confetti { display: none; } }

/* ───────── Fenster ───────── */
.gr-modal { max-width: 940px !important; }
.gr-wallet { display: flex; gap: 6px; flex: none; }
.gr-body { padding-bottom: 14px; }
.gr-view { gap: 14px; }
.gr-tabs .gw-tab em.gr-here { background: transparent; color: #62d98a; font-size: 12px; padding: 0 2px; }
.gr-tabs .gw-tab.sel em.gr-here { color: #0e7a3a; }
.gr-view section h4 { margin: 0 0 4px; font: 700 18px/1.2 var(--font-display); text-align: left; }
.gr-view section > p { margin: 0 0 8px; color: var(--muted); font-size: 13.5px; line-height: 1.4; text-align: left; }
.gr-note { margin: 0; padding: 8px 12px; border-radius: 12px; background: rgba(98, 217, 138, .12); border: 1px solid rgba(98, 217, 138, .35); color: #c8f5d6; font-size: 13px; font-weight: 700; text-align: left; }
.gr-full { background: rgba(255, 138, 30, .14); border-color: rgba(255, 138, 30, .45); }
.gr-empty { grid-column: 1 / -1; margin: 4px 0; color: var(--muted); font-size: 13.5px; font-style: italic; text-align: left; }

.gr-bar { height: 12px; border-radius: 8px; background: rgba(8, 4, 30, .55); overflow: hidden; box-shadow: inset 0 1px 3px rgba(0, 0, 0, .45); }
.gr-bar.big { height: 22px; border-radius: 12px; }
.gr-bar i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #ffe066, #ff9f1c); box-shadow: inset 0 -3px 0 rgba(0, 0, 0, .12); transition: width .6s cubic-bezier(.2, 1, .3, 1); position: relative; overflow: hidden; }
.gr-bar i::after { content: ''; position: absolute; inset: 0; background: repeating-linear-gradient(-45deg, rgba(255, 255, 255, .18) 0 10px, transparent 10px 20px); animation: grStripes 1.2s linear infinite; }
.gr-bar.done i { background: linear-gradient(90deg, #8ff0b0, #3fbf74); }
@keyframes grStripes { to { background-position: 28px 0; } }

.gr-hero { display: flex; gap: 16px; padding: 16px; border-radius: 22px; background: linear-gradient(150deg, rgba(255, 177, 61, .16), rgba(8, 4, 30, .3)); border: 1px solid rgba(255, 210, 122, .3); }
.gr-hero.done { background: linear-gradient(150deg, rgba(98, 217, 138, .16), rgba(8, 4, 30, .3)); border-color: rgba(98, 217, 138, .35); }
.gr-hero-ic { flex: none; width: 92px; height: 92px; display: grid; place-items: center; border-radius: 24px; font-size: 54px; background: rgba(255, 255, 255, .08); box-shadow: inset 0 -4px 0 rgba(0, 0, 0, .2); }
.gr-hero-tx { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; text-align: left; }
.gr-hero-tx h4 { margin: 0; font: 700 26px/1.1 var(--font-display) !important; }
.gr-place { margin: 0; text-align: left; font-size: 13px; font-weight: 800; color: #ffd27a; }
.gr-desc { margin: 0; text-align: left; font-size: 14px; line-height: 1.4; color: var(--muted); font-style: italic; }
.gr-nums { display: flex; justify-content: space-between; font-size: 13.5px; font-weight: 800; font-variant-numeric: tabular-nums; }
.gr-nums span { color: #ffd27a; }
.gr-perk, .gr-stock { margin: 0; font-size: 13px; font-weight: 700; color: #e7e2ff; display: flex; flex-direction: column; gap: 6px; }
.gr-how { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.gr-how div { display: flex; flex-direction: column; gap: 2px; padding: 10px 12px; border-radius: 14px; background: rgba(8, 4, 30, .3); text-align: left; }
.gr-how b { font: 700 14.5px/1.2 var(--font-display); }
.gr-how span { font-size: 12.5px; color: var(--muted); font-weight: 700; }
.gr-me { display: flex; flex-direction: column; gap: 10px; padding: 12px 14px; border-radius: 18px; background: rgba(0, 0, 0, .22); border: 1px solid rgba(255, 255, 255, .08); }
.gr-me > p { margin: 0; text-align: left; font-size: 13.5px; color: #e7e2ff; }
.gr-me-row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.gr-me-row div { display: flex; flex-direction: column; gap: 2px; text-align: left; }
.gr-me-row small { font-size: 10.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .6px; color: var(--muted); }
.gr-me-row b { font: 700 17px/1.15 var(--font-display); font-variant-numeric: tabular-nums; }
.gr-me-row em { font-size: 11.5px; font-style: normal; color: var(--muted); font-weight: 700; }
.gr-buffs { display: flex; flex-wrap: wrap; gap: 6px; }
.gr-buff { padding: 5px 10px; border-radius: 999px; background: rgba(98, 217, 138, .16); border: 1px solid rgba(98, 217, 138, .4); font-size: 12.5px; font-weight: 800; color: #c8f5d6; }
.gr-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.gr-road ol { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 5px; }
.gr-road li { display: grid; grid-template-columns: 38px minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 7px 12px 7px 8px; border-radius: 14px; background: rgba(8, 4, 30, .28); opacity: .78; }
.gr-road li.done { opacity: 1; background: rgba(98, 217, 138, .1); }
.gr-road li.cur { opacity: 1; background: rgba(255, 177, 61, .16); box-shadow: inset 0 0 0 1.5px rgba(255, 177, 61, .55); }
.gr-road-ic { width: 38px; height: 38px; display: grid; place-items: center; border-radius: 12px; background: rgba(255, 255, 255, .08); font-size: 21px; }
.gr-road li > div { display: flex; flex-direction: column; min-width: 0; text-align: left; }
.gr-road li b { font: 700 15px/1.2 var(--font-display); }
.gr-road li small { font-size: 12px; color: var(--muted); font-weight: 700; }
.gr-road li em { font-size: 12px; color: #d9d2ff; }
.gr-road-st { font: 800 12.5px/1 var(--font); color: var(--muted); white-space: nowrap; font-variant-numeric: tabular-nums; }
.gr-road li.done .gr-road-st { color: #8ff0b0; }
.gr-road li.cur .gr-road-st { color: #ffd27a; }

/* Spenden */
.gr-sec { padding: 12px 14px; border-radius: 18px; background: rgba(0, 0, 0, .2); border: 1px solid rgba(255, 255, 255, .07); display: flex; flex-direction: column; gap: 8px; }
.gr-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.gr-chip { padding: 7px 11px; border-radius: 999px; border: 1.5px solid rgba(255, 255, 255, .18); background: rgba(255, 255, 255, .07); color: #fff; font: 800 13px/1 var(--font); cursor: pointer; font-variant-numeric: tabular-nums; }
.gr-chip:hover:not(:disabled) { background: rgba(255, 255, 255, .15); }
.gr-chip:disabled { opacity: .4; cursor: default; }
.gr-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.gr-row .btn { margin-left: auto; }
.gr-in { width: 150px; padding: 9px 12px; border-radius: 12px; border: 2px solid rgba(255, 255, 255, .18); background: rgba(8, 4, 30, .45); color: #fff; font: 800 15px/1 var(--font); font-variant-numeric: tabular-nums; }
.gr-in:focus { outline: none; border-color: var(--primary); }
.gr-prev { font: 700 16px/1 var(--font-display); color: #ffd27a; }
.gr-sum { font-size: 13.5px; font-weight: 800; color: var(--muted); }
.gr-fish { display: grid; grid-template-columns: repeat(auto-fill, minmax(118px, 1fr)); gap: 6px; max-height: 260px; overflow: auto; padding: 2px; scrollbar-width: thin; }
.gr-fishc { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 6px 6px 7px; border-radius: 12px; border: 2px solid rgba(255, 255, 255, .08); background: rgba(8, 4, 30, .35); color: #fff; cursor: pointer; text-align: center; }
.gr-fishc b { font: 700 12.5px/1.15 var(--font-display); max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gr-fishc small { font-size: 11px; color: var(--muted); font-weight: 700; }
.gr-fishc.sel { border-color: var(--primary); background: rgba(255, 201, 51, .14); }
.gr-fishc.r-uncommon { box-shadow: inset 0 -3px 0 #62d98a; } .gr-fishc.r-rare { box-shadow: inset 0 -3px 0 #4fb0ff; } .gr-fishc.r-epic { box-shadow: inset 0 -3px 0 #c58bff; }
.gr-fishc.r-legendary { box-shadow: inset 0 -3px 0 #ffb83d; } .gr-fishc.r-mythic { box-shadow: inset 0 -3px 0 #ff66b3; } .gr-fishc.r-secret { box-shadow: inset 0 -3px 0 #8ef3ff; }
.gr-fish-ph { font-size: 26px; height: 35px; line-height: 35px; }
.gr-mats { display: flex; flex-direction: column; gap: 5px; max-height: 280px; overflow: auto; scrollbar-width: thin; }
.gr-mat { display: flex; align-items: center; gap: 10px; padding: 6px 10px; border-radius: 12px; background: rgba(8, 4, 30, .32); border: 1.5px solid transparent; }
.gr-mat.sel { border-color: rgba(255, 201, 51, .6); background: rgba(255, 201, 51, .1); }
.gr-mat-n { flex: 1; min-width: 0; display: flex; flex-direction: column; text-align: left; }
.gr-mat-n b { font: 700 14px/1.2 var(--font-display); }
.gr-mat-n small { font-size: 11.5px; color: var(--muted); font-weight: 700; }
.gr-mat.t2 .gr-mat-n b { color: #9fd6ff; } .gr-mat.t3 .gr-mat-n b { color: #ffd27a; }
.gr-step { display: flex; align-items: center; gap: 4px; }
.gr-step button { min-width: 32px; height: 32px; border-radius: 10px; border: none; background: rgba(255, 255, 255, .12); color: #fff; font: 800 16px/1 var(--font); cursor: pointer; }
.gr-step button.gr-all { font-size: 12px; padding: 0 8px; }
.gr-step button:disabled { opacity: .35; cursor: default; }
.gr-step span { min-width: 40px; text-align: center; font: 800 14px/1 var(--font); font-variant-numeric: tabular-nums; }

/* Helfer */
.gr-boards { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 10px; }
.gr-lb { padding: 12px 14px; border-radius: 18px; background: rgba(0, 0, 0, .2); }
.gr-lb ol { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.gr-lb li { display: grid; grid-template-columns: 30px minmax(0, 1fr) auto; align-items: center; gap: 8px; padding: 6px 10px; border-radius: 12px; background: rgba(8, 4, 30, .3); }
.gr-lb li.me { background: rgba(255, 201, 51, .16); box-shadow: inset 0 0 0 1.5px rgba(255, 201, 51, .5); }
.gr-rk { font: 800 14px/1 var(--font); text-align: center; }
.gr-nm { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-align: left; border: none; background: none; padding: 0; color: #fff; font: 700 14px/1.2 var(--font-display); cursor: pointer; }
.gr-nm:hover { text-decoration: underline; }
.gr-lb li b { font: 800 13px/1 var(--font); font-variant-numeric: tabular-nums; color: #ffd27a; }
.gr-mine { margin: 6px 0 0 !important; font-weight: 800; color: #ffe7a8 !important; }
.gr-ranks { padding: 12px 14px; border-radius: 18px; background: rgba(0, 0, 0, .2); }
.gr-rank-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.gr-rank { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 14px; background: rgba(8, 4, 30, .3); opacity: .7; }
.gr-rank.on { opacity: 1; background: rgba(255, 201, 51, .14); box-shadow: inset 0 0 0 1.5px rgba(255, 201, 51, .45); }
.gr-rank-ic { font-size: 24px; }
.gr-rank > div { flex: 1; min-width: 0; display: flex; flex-direction: column; text-align: left; }
.gr-rank b { font: 700 14.5px/1.2 var(--font-display); }
.gr-rank small { font-size: 11.5px; color: var(--muted); font-weight: 700; }
.gr-rank-st { font: 800 12.5px/1 var(--font); color: #ffd27a; }

/* Kontor */
.gr-shophead { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.gr-cats { display: flex; gap: 6px; flex-wrap: wrap; flex: 1; }
.gr-cat { display: inline-flex; align-items: center; gap: 6px; padding: 8px 12px; border-radius: 14px; border: none; background: rgba(0, 0, 0, .25); color: var(--muted); font: 700 14px/1 var(--font-display); cursor: pointer; }
.gr-cat:hover { color: #fff; }
.gr-cat.sel { background: #5fe0d0; color: #0f3330; box-shadow: 0 3px 0 rgba(0, 0, 0, .22); }
.gr-coll { font-size: 12.5px; font-weight: 800; color: var(--muted); white-space: nowrap; }
.gr-items { display: grid; grid-template-columns: repeat(auto-fill, minmax(196px, 1fr)); gap: 8px; }
.gr-item { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 12px 10px 10px; border-radius: 18px; background: rgba(8, 4, 30, .32); border: 1.5px solid rgba(255, 255, 255, .07); text-align: center; }
.gr-item.owned { background: rgba(95, 224, 208, .08); }
.gr-item.on { border-color: #5fe0d0; box-shadow: 0 0 0 3px rgba(95, 224, 208, .18); }
.gr-item.locked { opacity: .75; }
.gr-item-pic { height: 70px; display: grid; place-items: center; }
.gr-item b { font: 700 16px/1.15 var(--font-display); }
.gr-item small { font-size: 12px; line-height: 1.3; color: var(--muted); min-height: 31px; }
.gr-price { font: 800 13px/1 var(--font); color: #ffd27a; font-variant-numeric: tabular-nums; }
.gr-price.free { color: var(--muted); } .gr-price.rank { color: #ffb4d0; }
.gr-item-act { margin-top: 4px; min-height: 38px; display: flex; align-items: center; justify-content: center; }
.gr-item-act .btn { padding: 8px 16px; font-size: 14px; }
.gr-lock { font-size: 11.5px; font-weight: 700; color: var(--muted); line-height: 1.25; }
.gr-tagbox { position: relative; height: 40px; width: 180px; display: grid; place-items: center; }
.gr-tagbox .fw-tag.gr-tagprev { position: relative; left: auto; bottom: auto; transform: none; pointer-events: none; }

/* Handy */
@media (max-width: 600px) {
  .gr-hero { flex-direction: column; align-items: center; gap: 10px; padding: 12px; }
  .gr-hero-ic { width: 66px; height: 66px; font-size: 38px; }
  .gr-hero-tx h4 { font-size: 22px !important; text-align: center; }
  .gr-how { grid-template-columns: 1fr; }
  .gr-me-row { grid-template-columns: 1fr 1fr; }
  .gr-boards { grid-template-columns: 1fr; }
  .gr-rank-list { grid-template-columns: 1fr; }
  .gr-items { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gr-item { padding: 10px 6px 8px; }
  .gr-item small { display: none; }
  .gr-tagbox { width: 140px; transform: scale(.9); }
  .gr-tab-l { display: none; }
  .gr-shophead { flex-direction: column; align-items: stretch; gap: 6px; }
  .gr-cats { flex-wrap: nowrap; overflow-x: auto; padding-bottom: 4px; scrollbar-width: none; }
  .gr-cat { flex: none; padding: 7px 10px; font-size: 13px; }
  .gr-coll { text-align: right; }
  .gr-in { width: 120px; }
  .gr-fish { grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); }
  .gr-notice { padding: 10px 34px 10px 10px; gap: 8px 10px; flex-wrap: wrap; }
  .gr-notice-ic { width: 44px; height: 44px; font-size: 24px; }
  .gr-notice-tx { flex: 1 1 calc(100% - 60px); }
  .gr-notice-go { margin-left: 54px; }
}

/* ───────── Namensschild-Verzierungen (Inselkontor) ───────── */
.fw-tag.cos-tag-muschel::before, .fw-tag.cos-tag-muschel::after { content: '🐚'; font-size: 11px; }
.fw-tag.cos-tag-muschel::after { transform: scaleX(-1); }
.fw-tag.cos-tag-muschel { border: 2px solid #ffd6e8; border-bottom-width: 2.5px; background: rgba(120, 50, 90, .72); }
.fw-tag.cos-tag-blumen::before { content: '🌸'; font-size: 12px; }
.fw-tag.cos-tag-blumen::after { content: '🌼'; font-size: 12px; }
.fw-tag.cos-tag-blumen { background: rgba(40, 110, 60, .78); border-bottom-color: #ffd34a; box-shadow: 0 0 0 2px rgba(255, 143, 176, .55), 0 2px 8px rgba(0, 0, 0, .25); }
.fw-tag.cos-tag-anker::before { content: '⚓'; font-size: 12px; }
.fw-tag.cos-tag-anker { background: rgba(20, 50, 100, .82); border: 2px dashed #d8c49a; border-bottom: 2.5px solid #d8c49a; }
.fw-tag.cos-tag-welle { background: linear-gradient(180deg, rgba(20, 70, 130, .8) 60%, rgba(79, 176, 232, .9) 60%); border-bottom-color: #bdf3ff; }
.fw-tag.cos-tag-welle::after { content: '〰'; font-size: 11px; color: #bdf3ff; }
.fw-tag.cos-tag-gold { background: linear-gradient(180deg, rgba(120, 80, 10, .88), rgba(70, 45, 5, .88)); border: 2px solid #ffcc33; border-bottom-width: 3px; color: #fff3c4; box-shadow: 0 0 10px rgba(255, 204, 51, .55); }
.fw-tag.cos-tag-sterne { background: rgba(25, 20, 70, .85); border-bottom-color: #9fd8ff; box-shadow: 0 0 10px rgba(159, 216, 255, .5); }
.fw-tag.cos-tag-sterne::before, .fw-tag.cos-tag-sterne::after { content: '✦'; color: #fff6c8; font-size: 11px; animation: grTwinkle 1.6s ease-in-out infinite; }
.fw-tag.cos-tag-sterne::after { animation-delay: .8s; }
.fw-tag.cos-tag-helm::before { content: '⛑️'; font-size: 13px; }
.fw-tag.cos-tag-helm { background: rgba(110, 70, 10, .85); border-bottom-color: #ffd21e; box-shadow: 0 0 0 2px rgba(255, 210, 30, .6), 0 2px 8px rgba(0, 0, 0, .25); }
.fw-tag.me.cos-tag { color: #fff; text-shadow: 0 1px 0 rgba(0, 0, 0, .35); }
@keyframes grTwinkle { 50% { opacity: .25; transform: scale(.7) rotate(40deg); } }
@media (prefers-reduced-motion: reduce) { .fw-tag.cos-tag-sterne::before, .fw-tag.cos-tag-sterne::after, .gr-bar i::after { animation: none; } }

/* Perlen-Spende (Feinschliff P3) */
.gr-pearl { border-color: rgba(140, 220, 255, .22); background: linear-gradient(160deg, rgba(90, 170, 255, .1), rgba(0, 0, 0, .2)); }
.gr-pearl-wk { display: flex; flex-direction: column; gap: 5px; }
.gr-pearl-wk .gr-nums { display: flex; justify-content: space-between; font-size: 13px; font-weight: 700; color: var(--muted); }
.gr-pearl-wk .gr-nums b { color: #bfe9ff; font-variant-numeric: tabular-nums; }
.gr-pearl-wk small { font-size: 12px; color: var(--muted); font-weight: 700; }
.gr-pearl .gr-bar i { background: linear-gradient(90deg, #7fd3ff, #c7a6ff); }
.gr-pearl-wk .gr-nums span { color: var(--muted); }

/* Kontor-Emotes: äußerer Ring im Emote-Rad (zwischen die Grund-Emotes versetzt) */
.fw-wheel { --gr-wr: min(178px, calc(50vw - 30px), calc(50vh - 30px)); }
.fw-wheel-e.gr-wheel-x { width: 48px; height: 48px; font-size: 24px; border-color: rgba(255, 210, 122, .55); background: rgba(60, 40, 120, .85); }
.fw-wheel-e.gr-wheel-x:hover { border-color: #ffd27a; }

/* ===== fish-stories.css ===== */
/* Phase 3 – Agent Geschichten: Dorfbewohner (Gespräch, Dorfgeschichten), Tierschau, Andenken (stories-ui.js) */

/* ───────── Namensschild der Figuren: Farbe + „!“ / „?“ ───────── */
.fw-tag.npc.fst-tag { background: rgba(20, 14, 50, .78); border-bottom-color: var(--pc, #ffd24a); }
.fst-mark {
  display: inline-grid; place-items: center; width: 19px; height: 19px; margin-left: -4px; border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, #fff6a8, #ffc933 60%, #f0a00e); color: #6a2a00;
  font: 700 14px/1 var(--font-display); text-shadow: none; box-shadow: 0 0 0 2px rgba(255, 255, 255, .85), 0 0 12px rgba(255, 201, 51, .8);
  animation: fstBob 1.6s ease-in-out infinite;
}
.fst-mark.q { background: radial-gradient(circle at 35% 30%, #d9ffe9, #5ee39a 60%, #22a861); color: #08381c; box-shadow: 0 0 0 2px rgba(255, 255, 255, .85), 0 0 12px rgba(94, 227, 154, .85); }
.fst-mark.hidden { display: none; }
@keyframes fstBob { 50% { transform: translateY(-2px) scale(1.08); } }

/* ───────── Modale Grundform (wie der Wunschzettel: eigenes Papier, kein Glas-Kasten) ───────── */
.fst-modal { max-width: 620px !important; padding: 0 !important; overflow: visible !important; background: none !important; border: none !important; box-shadow: none !important; }
.fst-modal.book, .fst-modal.show { max-width: 720px !important; }
.fst-x {
  flex: none; width: 38px; height: 38px; border-radius: 50%; cursor: pointer; border: 1.5px solid rgba(90, 64, 30, .35);
  background: rgba(255, 255, 255, .5); color: #3a2e22; font: 800 16px/1 var(--font); transition: background .15s, transform .15s;
}
.fst-x:hover, .fst-x:focus-visible { background: #fff; transform: scale(1.06) rotate(6deg); }
.fst-title { flex: 1; min-width: 0; text-align: left; }
.fst-title h3 { margin: 0; font: 700 25px/1.05 var(--font-display); color: #3a2e22; text-align: left; }
.fst-title small { display: block; margin-top: 3px; font-size: 13px; font-weight: 700; color: #6d5a43; }
.fst-dlg .fst-empty, .fst-book .fst-empty, .fst-show .fst-empty, .fst-res .fst-empty { padding: 26px 10px; text-align: center; font-weight: 800; color: #6d5a43; }
.fst-dlg p, .fst-book p, .fst-show p, .fst-res p { text-align: left; }
.fst-dlg .fst-empty, .fst-book .fst-empty, .fst-show .fst-empty, .fst-res .fst-empty { text-align: center; }
.fst-book { min-height: min(640px, calc(100dvh - 40px)); }

/* ───────── Gesprächsfenster ───────── */
.fst-dlg {
  --nc: #ffc933; --ink: #3a2e22; --ink2: #6d5a43;
  position: relative; display: flex; flex-direction: column; max-height: calc(100vh - 40px); max-height: calc(100dvh - 40px);
  color: var(--ink); font-family: var(--font); text-align: left; border-radius: 18px; overflow: hidden;
  background:
    radial-gradient(120% 70% at 10% 0%, rgba(255, 255, 255, .6), transparent 60%),
    linear-gradient(176deg, #fbf4e2 0%, #f3e7cb 60%, #ecdcb8 100%);
  box-shadow: 0 0 0 1px rgba(120, 90, 40, .22), 0 18px 50px rgba(8, 4, 30, .55), 0 4px 10px rgba(8, 4, 30, .3);
  animation: fstIn .34s cubic-bezier(.2, 1.3, .4, 1) both;
}
.fst-dlg::before { content: ''; position: absolute; left: 0; right: 0; top: 0; height: 6px; background: var(--nc); }
@keyframes fstIn { from { transform: translateY(26px) scale(.95); opacity: 0; } }
.fst-head { display: flex; align-items: center; gap: 12px; padding: 18px 14px 8px 16px; }
.fst-av {
  flex: none; width: 58px; height: 62px; border-radius: 50%; overflow: hidden; display: grid; place-items: center; font-size: 32px;
  background: radial-gradient(circle at 50% 40%, #fffaf0, color-mix(in srgb, var(--nc) 30%, #e6d3ab)); box-shadow: 0 0 0 3px var(--nc), 0 4px 10px rgba(60, 40, 10, .25);
}
.fst-av canvas { width: 66px; height: 72px; margin-top: 10px; }
.fst-av.fin { background: radial-gradient(circle at 50% 40%, #1d2b6b, #0c1236); box-shadow: 0 0 0 3px #8ef3ff, 0 0 18px rgba(142, 243, 255, .5); }
.fst-av.sm { width: 46px; height: 48px; font-size: 24px; box-shadow: 0 0 0 2.5px var(--nc); }
.fst-av.sm canvas { width: 50px; height: 55px; margin-top: 8px; }
.fst-body { min-height: 0; overflow: auto; overscroll-behavior: contain; padding: 4px 14px 6px; scrollbar-width: thin; scrollbar-color: rgba(90, 64, 30, .35) transparent; }
.fst-log { display: flex; flex-direction: column; gap: 8px; padding: 4px 2px 8px; cursor: pointer; }
.fst-line { display: flex; align-items: flex-end; gap: 8px; animation: fstLine .25s ease both; }
@keyframes fstLine { from { opacity: 0; transform: translateY(6px); } }
.fst-bub {
  position: relative; max-width: 100%; padding: 10px 14px; border-radius: 4px 16px 16px 16px; background: #fff;
  box-shadow: 0 1px 0 rgba(255, 255, 255, .8) inset, 0 0 0 1px rgba(120, 90, 40, .14), 0 3px 8px rgba(60, 40, 10, .08);
  font: 600 16px/1.42 var(--font); color: var(--ink); overflow-wrap: anywhere;
}
.fst-line.who .fst-bub { border-left: 4px solid var(--sc, var(--nc)); }
.fst-bub .nm { display: block; margin-bottom: 2px; font: 700 12.5px/1.2 var(--font-display); color: color-mix(in srgb, var(--sc, var(--nc)) 65%, #2a1f12); text-transform: uppercase; letter-spacing: .8px; }
.fst-line.me { justify-content: flex-end; }
.fst-line.me .fst-bub { border-radius: 16px 4px 16px 16px; background: color-mix(in srgb, var(--nc) 22%, #fffaf0); font-weight: 800; color: #4a3a22; }
.fst-line.narr .fst-bub { background: rgba(255, 255, 255, .35); box-shadow: none; border-radius: 12px; font-style: italic; font-weight: 700; color: #4a3d6e; border: 1.5px dashed rgba(90, 64, 120, .3); }
.fst-mini { flex: none; width: 32px; height: 34px; border-radius: 50%; overflow: hidden; display: grid; place-items: center; background: #fffaf0; box-shadow: 0 0 0 2px var(--sc, var(--nc)); }
.fst-mini canvas { width: 36px; height: 40px; margin-top: 6px; }
.fst-choices { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; padding: 10px 14px 14px; border-top: 1.5px dashed rgba(90, 64, 30, .18); }
.fst-choices:empty { display: none; }
.fst-btn {
  border: none; border-radius: 12px; padding: 10px 15px; cursor: pointer; font: 600 15px/1.1 var(--font-display); color: #3a2400;
  background: rgba(255, 255, 255, .7); box-shadow: 0 0 0 1.5px rgba(90, 64, 30, .3); transition: transform .12s, box-shadow .12s, filter .12s;
}
.fst-btn:hover, .fst-btn:focus-visible { transform: translateY(-1px); filter: brightness(1.04); outline: none; box-shadow: 0 0 0 2px var(--nc, #ffc933); }
.fst-btn.go { background: linear-gradient(180deg, #ffd34d, #f2b21c); box-shadow: 0 3px 0 #b07d0c, 0 6px 14px rgba(176, 125, 12, .3); }
.fst-btn.go:active { transform: translateY(2px); box-shadow: 0 1px 0 #b07d0c; }
.fst-btn.ghost { background: transparent; color: #6d5a43; box-shadow: 0 0 0 1.5px rgba(90, 64, 30, .22); }
.fst-btn:disabled { opacity: .5; cursor: default; }

/* Kapitel-Karte */
.fst-card-slot:empty { display: none; }
.fst-card, .fst-reward {
  position: relative; margin: 6px 0 10px; padding: 12px 14px; border-radius: 14px; text-align: left;
  background: rgba(255, 255, 255, .62); box-shadow: 0 0 0 1.5px color-mix(in srgb, var(--nc, #ffc933) 55%, rgba(90, 64, 30, .2));
  animation: fstLine .3s ease both;
}
.fst-kick { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font: 800 11.5px/1.2 var(--font); text-transform: uppercase; letter-spacing: 1.2px; color: color-mix(in srgb, var(--nc, #ffc933) 60%, #3a2e22); }
.fst-kick .lock { padding: 2px 7px; border-radius: 8px; background: rgba(90, 64, 30, .1); color: #6d5a43; letter-spacing: 0; text-transform: none; }
.fst-ct { display: block; margin: 2px 0 6px; font: 700 19px/1.15 var(--font-display); color: #3a2e22; }
.fst-obj { list-style: none; margin: 4px 0 6px; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.fst-obj li { display: flex; gap: 8px; align-items: flex-start; font-size: 14.5px; font-weight: 700; color: #3a2e22; }
.fst-obj li > i { flex: none; width: 22px; height: 22px; display: grid; place-items: center; border-radius: 7px; background: rgba(90, 64, 30, .1); font-style: normal; font-size: 13px; }
.fst-obj li.ok > i { background: #3f9a5c; color: #fff; font-weight: 900; }
.fst-obj li.ok span { color: #2c6e40; text-decoration: line-through; text-decoration-color: rgba(44, 110, 64, .45); }
.fst-obj .m { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.fst-bar { position: relative; height: 14px; max-width: 280px; border-radius: 7px; overflow: hidden; background: rgba(90, 64, 30, .12); }
.fst-bar i { display: block; height: 100%; border-radius: 7px; background: repeating-linear-gradient(-45deg, color-mix(in srgb, var(--nc, #4f7fc6) 85%, #fff) 0 6px, var(--nc, #4f7fc6) 6px 12px); transition: width .5s cubic-bezier(.2, 1, .3, 1); }
.fst-bar em { position: absolute; inset: 0; display: grid; place-items: center; font: 800 10.5px/1 var(--font); font-style: normal; color: #2a2118; text-shadow: 0 0 3px #fff, 0 0 1px #fff; }
.fst-chips { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 6px; }
.fst-chip { padding: 3px 8px; border-radius: 8px; font: 800 12.5px/1.2 var(--font); background: rgba(255, 255, 255, .8); box-shadow: 0 0 0 1px rgba(90, 64, 30, .16); color: #3a2e22; white-space: nowrap; }
.fst-chip.pe { background: rgba(214, 236, 255, .95); color: #2f4f86; }
.fst-chip.xp { background: rgba(225, 255, 232, .95); color: #2c6e40; }
.fst-keepline { margin-top: 6px; font-size: 13px; font-weight: 800; color: #6d5a43; }
.fst-give { display: flex; align-items: center; gap: 8px; margin: 2px 0 8px; padding: 8px 12px; border-radius: 12px; background: rgba(255, 244, 205, .9); box-shadow: 0 0 0 1.5px rgba(240, 160, 14, .45); font-weight: 800; }
.fst-give span { font-size: 22px; }
.fst-give em { font-style: normal; color: #6d5a43; }
.fst-give small { margin-left: auto; font-size: 12px; color: #8a6a2a; }
.fst-stamp { display: inline-block; margin: 4px 0 2px; padding: 4px 10px 3px; border: 2.5px solid #b5463a; border-radius: 6px; color: #b5463a; transform: rotate(-6deg);
  font: 700 14px/1 var(--font-display); text-transform: uppercase; letter-spacing: 1.5px; opacity: .85; animation: fstStamp .45s cubic-bezier(.2, 1.6, .4, 1) both; }
@keyframes fstStamp { from { transform: rotate(-20deg) scale(2.2); opacity: 0; } }

/* Belohnung */
.fst-reward { overflow: hidden; background: linear-gradient(180deg, rgba(255, 250, 225, .95), rgba(255, 238, 190, .9)); box-shadow: 0 0 0 2px rgba(240, 160, 14, .5), 0 8px 20px rgba(176, 125, 12, .18); }
.fst-reward.big { background: linear-gradient(180deg, #fff6d8, #ffe39a); }
.fst-reward .fst-kick { color: #a0620a; }
.fst-gift { display: flex; align-items: flex-start; gap: 10px; margin-top: 8px; padding: 8px 10px; border-radius: 12px; background: rgba(255, 255, 255, .7); text-align: left; }
.fst-gift .ic { flex: none; font-size: 26px; line-height: 1; }
.fst-gift b { display: block; font: 700 15px/1.2 var(--font-display); }
.fst-gift small { display: block; font-size: 13px; font-weight: 700; color: #6d5a43; line-height: 1.35; }
.fst-gift.note { background: rgba(225, 238, 255, .85); }
.fst-confetti { position: absolute; inset: 0; pointer-events: none; overflow: hidden; }
.fst-confetti i { position: absolute; top: -12px; width: 7px; height: 11px; border-radius: 2px; animation: fstConf linear both; }
@keyframes fstConf { to { transform: translateY(260px) rotate(540deg); opacity: 0; } }

/* ───────── Dorfgeschichten (Buch) & Tierschau-Fenster ───────── */
.fst-book, .fst-show {
  --ink: #3a2e22; position: relative; display: flex; flex-direction: column; max-height: calc(100vh - 40px); max-height: calc(100dvh - 40px);
  color: var(--ink); font-family: var(--font); text-align: left; border-radius: 18px; overflow: hidden;
  background: linear-gradient(176deg, #fbf4e2 0%, #f3e7cb 60%, #ecdcb8 100%);
  box-shadow: 0 0 0 1px rgba(120, 90, 40, .22), 0 0 0 7px #7a4e2a, 0 0 0 8px rgba(0, 0, 0, .25), 0 18px 50px rgba(8, 4, 30, .55);
  animation: fstIn .34s cubic-bezier(.2, 1.3, .4, 1) both;
}
.fst-show { box-shadow: 0 0 0 1px rgba(120, 90, 40, .22), 0 0 0 7px #a8243a, 0 0 0 8px rgba(0, 0, 0, .25), 0 18px 50px rgba(8, 4, 30, .55); }
.fst-bhead { display: flex; align-items: center; gap: 12px; padding: 16px 14px 8px 16px; }
.fst-bic { flex: none; width: 50px; height: 50px; border-radius: 14px; display: grid; place-items: center; font-size: 28px; background: rgba(122, 78, 42, .15); }
.fst-timer { flex: none; padding: 5px 10px; border-radius: 10px; background: rgba(168, 36, 58, .12); color: #a8243a; font: 800 13px/1 var(--font); }
.fst-tabs { display: flex; gap: 6px; padding: 0 14px 8px; overflow-x: auto; scrollbar-width: none; }
.fst-tab { display: inline-flex; align-items: center; gap: 6px; padding: 8px 12px; border-radius: 11px; border: none; cursor: pointer; white-space: nowrap;
  background: rgba(90, 64, 30, .08); color: #6d5a43; font: 600 14.5px/1 var(--font-display); }
.fst-tab i { font-style: normal; }
.fst-tab.on { background: #7a4e2a; color: #fff5e0; box-shadow: 0 3px 0 #4f3018; }
.fst-bbody, .fst-sbody { min-height: 0; overflow: auto; overscroll-behavior: contain; padding: 4px 14px 16px; scrollbar-width: thin; scrollbar-color: rgba(90, 64, 30, .35) transparent; }
.fst-chains { display: flex; flex-direction: column; gap: 12px; }
.fst-chain { position: relative; padding: 12px 12px 10px; border-radius: 16px; background: rgba(255, 255, 255, .5); box-shadow: 0 0 0 1.5px color-mix(in srgb, var(--nc, #ffc933) 45%, rgba(90, 64, 30, .18)); }
.fst-chain::before { content: ''; position: absolute; left: 0; top: 14px; bottom: 14px; width: 4px; border-radius: 0 4px 4px 0; background: var(--nc, #ffc933); }
.fst-chain.done { opacity: .82; }
.fst-chain.fin { --nc: #5b8cff; background: linear-gradient(160deg, rgba(29, 43, 107, .1), rgba(255, 255, 255, .5)); }
.fst-chain.fin.locked { opacity: .7; }
.fst-ch-head { display: flex; align-items: center; gap: 10px; }
.fst-ch-t { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.fst-ch-t b { font: 700 18px/1.15 var(--font-display); }
.fst-ch-t small { font-size: 12.5px; font-weight: 700; color: #6d5a43; }
.fst-dots { display: flex; gap: 4px; flex: none; }
.fst-dots i { width: 11px; height: 11px; border-radius: 50%; background: rgba(90, 64, 30, .15); }
.fst-dots i.on { background: var(--nc, #ffc933); }
.fst-dots i.cur { background: #fff; box-shadow: 0 0 0 2.5px var(--nc, #ffc933); }
.fst-ch-cur { margin-top: 6px; }
.fst-ch-cur .fst-card { margin: 6px 0 2px; }
.fst-state { display: inline-block; padding: 3px 9px; border-radius: 9px; font: 800 12.5px/1.2 var(--font); background: rgba(90, 64, 30, .1); color: #6d5a43; }
.fst-state.s-offer { background: #ffe9a8; color: #6a4300; }
.fst-state.s-ready { background: #c9f5d9; color: #155c33; }
.fst-state.s-locked, .fst-state.s-guest { background: rgba(90, 64, 30, .08); }
.fst-book .fst-done { margin: 6px 0 0; font-weight: 800; color: #2c6e40; }
.fst-past { margin-top: 6px; font-size: 13.5px; font-weight: 700; color: #6d5a43; }
.fst-past summary { cursor: pointer; }
.fst-past ol { margin: 4px 0 0 18px; padding: 0; }
.fst-book .fst-guestnote, .fst-show .fst-guestnote, .fst-guestnote { margin: 8px 2px 0; padding: 8px 12px; border-radius: 12px; background: rgba(61, 139, 255, .1); color: #2f4f86; font-size: 13.5px; font-weight: 800; }

.fst-note { padding: 4px 2px; }
.fst-note-head { display: flex; align-items: baseline; justify-content: space-between; font: 700 19px/1.2 var(--font-display); }
.fst-note-head span { font: 800 14px/1 var(--font); color: #2f4f86; }
.fst-book .fst-note-sub { margin: 4px 0 10px; font-size: 13.5px; font-weight: 700; color: #6d5a43; text-align: left; }
.fst-note ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.fst-note li { display: flex; gap: 10px; align-items: flex-start; padding: 10px 12px; border-radius: 12px; background: rgba(255, 255, 255, .6); font-size: 14.5px; font-weight: 700; line-height: 1.4; }
.fst-note li i { flex: none; font-style: normal; font-size: 20px; line-height: 1.1; }
.fst-note li.no { background: rgba(90, 64, 30, .06); color: #8a7a62; font-style: italic; }
.fst-kgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
.fst-keep { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 12px 10px; border-radius: 14px; cursor: pointer; border: 2px solid rgba(90, 64, 30, .18);
  background: rgba(255, 255, 255, .6); color: #3a2e22; font-family: var(--font); text-align: center; transition: transform .12s, border-color .12s; }
.fst-keep:hover:not(:disabled) { transform: translateY(-2px); border-color: #f2b21c; }
.fst-keep .ic { font-size: 34px; line-height: 1.1; }
.fst-keep b { font: 700 15px/1.15 var(--font-display); }
.fst-keep small { font-size: 12px; font-weight: 700; color: #6d5a43; line-height: 1.3; }
.fst-keep em { margin-top: 2px; font-style: normal; font: 800 12px/1 var(--font); color: #2f4f86; }
.fst-keep.on { border-color: #3f9a5c; background: rgba(214, 255, 228, .7); }
.fst-keep.on em { color: #2c6e40; }
.fst-keep.locked { opacity: .55; cursor: default; }

/* Tierschau-Fenster */
.fst-show-top { margin-bottom: 8px; }
.fst-mine { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; padding: 10px 12px; border-radius: 14px; background: rgba(255, 233, 168, .6); font-weight: 800; }
.fst-legend { display: flex; flex-wrap: wrap; gap: 6px; margin: 6px 0 10px; }
.fst-legend span { padding: 4px 9px; border-radius: 9px; background: rgba(90, 64, 30, .08); font: 800 12.5px/1.2 var(--font); color: #6d5a43; }
.fst-legend span.ok { background: #c9f5d9; color: #155c33; }
.fst-entries { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 10px; }
.fst-entry { display: grid; grid-template-columns: 78px minmax(0, 1fr); gap: 8px 10px; align-content: start; padding: 10px; border-radius: 14px; background: rgba(255, 255, 255, .62); box-shadow: 0 0 0 1.5px rgba(90, 64, 30, .14); }
.fst-entry.own { box-shadow: 0 0 0 2px #f2b21c; }
.fst-entry.focus { box-shadow: 0 0 0 3px #3d8bff; }
.fst-entry .pic { display: grid; place-items: center; width: 78px; height: 78px; border-radius: 12px; background: radial-gradient(circle at 50% 40%, #fff, #f1e3bf); }
.fst-entry .pic canvas { max-width: 72px; max-height: 72px; image-rendering: pixelated; }
.fst-entry .tx { min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.fst-entry .tx b { font: 700 16px/1.15 var(--font-display); }
.fst-entry .tx small { font-size: 12px; font-weight: 700; color: #6d5a43; }
.fst-entry .tx small.sp { color: #2f4f86; }
.fst-entry .tags { display: flex; flex-wrap: wrap; gap: 3px; margin-top: 3px; }
.fst-entry .tags span { padding: 1px 6px; border-radius: 6px; background: rgba(90, 64, 30, .08); font-size: 11px; font-weight: 800; }
.fst-entry .votes { grid-column: 1 / -1; display: flex; gap: 6px; align-self: end; }
.fst-vote { flex: 1; min-width: 40px; height: 36px; border-radius: 11px; cursor: pointer; border: 2px solid rgba(90, 64, 30, .2); background: #fff; font-size: 18px; line-height: 1; transition: transform .12s, background .12s; }
.fst-vote:hover:not(:disabled) { transform: translateY(-2px); border-color: #f2b21c; }
.fst-vote.on { background: linear-gradient(180deg, #ffd34d, #f2b21c); border-color: #b07d0c; box-shadow: 0 2px 0 #b07d0c; }
.fst-vote:disabled { opacity: .4; cursor: default; }
.fst-show .fst-thanks { margin: 10px 2px 0; font-weight: 800; color: #2c6e40; }

/* Hinweis-Karte beim Start der Tierschau */
.fst-ncard {
  position: fixed; z-index: 58; top: 74px; left: 50%; transform: translateX(-50%); display: flex; align-items: center; gap: 12px;
  width: max-content; max-width: min(460px, calc(100vw - 24px)); padding: 12px 18px 12px 12px; border-radius: 18px; cursor: pointer;
  background: rgba(22, 16, 56, .94); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); border: 2px solid rgba(255, 107, 203, .55);
  box-shadow: 0 10px 30px rgba(8, 4, 30, .4), 0 0 0 4px rgba(255, 107, 203, .12); color: #fff; animation: fstCardIn .38s cubic-bezier(.2, 1.5, .4, 1) both;
}
.fst-ncard.out { animation: fstCardOut .3s ease forwards; }
.fst-ncard .ic { flex: none; width: 46px; height: 46px; display: grid; place-items: center; border-radius: 14px; background: rgba(255, 107, 203, .18); font-size: 26px; }
.fst-ncard b { display: block; font: 700 17px/1.15 var(--font-display); color: #ffd0ef; }
.fst-ncard span { display: block; font-weight: 700; font-size: 14px; line-height: 1.35; }
@keyframes fstCardIn { from { opacity: 0; transform: translate(-50%, -16px) scale(.9); } }
@keyframes fstCardOut { to { opacity: 0; transform: translate(-50%, -12px); } }

/* Siegerehrung der Tierschau */
.fst-res-back { position: absolute; inset: 0; z-index: 60; display: grid; place-items: center; padding: 16px; background: rgba(8, 4, 30, .35); pointer-events: auto; }
.fst-res {
  position: relative; width: min(560px, 100%); max-height: calc(100% - 20px); overflow: auto; padding: 18px 16px 16px; border-radius: 22px; text-align: center;
  background: linear-gradient(180deg, #fff6d8, #ffe39a); color: #3a2e22; box-shadow: 0 0 0 3px #a8243a, 0 20px 50px rgba(8, 4, 30, .5);
  animation: fstIn .4s cubic-bezier(.2, 1.4, .4, 1) both;
}
.fst-res .fst-x { position: absolute; right: 10px; top: 10px; }
.fst-res .fst-kick { justify-content: center; color: #a8243a; }
.fst-res h3 { margin: 2px 0 10px; font: 700 26px/1.1 var(--font-display); }
.fst-res-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 10px; }
.fst-res-col { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 10px 8px; border-radius: 16px; background: rgba(255, 255, 255, .7); }
.fst-res-col .cat { font: 800 12.5px/1.2 var(--font); color: #a8243a; }
.fst-res-col .pic { width: 84px; height: 84px; display: grid; place-items: center; }
.fst-res-col .pic canvas { max-width: 80px; max-height: 80px; image-rendering: pixelated; }
.fst-res-col b { font: 700 17px/1.1 var(--font-display); }
.fst-res-col small { font-size: 12.5px; font-weight: 700; color: #6d5a43; }
.fst-res-col em { font-style: normal; font: 800 12px/1 var(--font); color: #2f4f86; }
.fst-res .fst-res-sum, .fst-res .fst-res-hint { margin: 10px 0 0; font-size: 13.5px; font-weight: 800; color: #6d5a43; text-align: center; }
.fst-res-rew { margin-top: 8px; font: 700 16px/1.2 var(--font-display); color: #2c6e40; }
.fst-res-rew:empty { display: none; }

/* ───────── Handy ───────── */
@media (max-width: 520px) {
  .fst-modal, .fst-modal.book, .fst-modal.show { max-width: none !important; }
  .fst-dlg, .fst-book, .fst-show { border-radius: 16px; }
  .fst-head { padding: 16px 10px 6px 12px; gap: 10px; }
  .fst-av { width: 48px; height: 52px; }
  .fst-av canvas { width: 56px; height: 61px; margin-top: 8px; }
  .fst-title h3 { font-size: 21px; }
  .fst-bub { font-size: 15px; padding: 9px 12px; }
  .fst-body, .fst-bbody, .fst-sbody { padding-left: 10px; padding-right: 10px; }
  .fst-choices { padding: 8px 10px 12px; }
  .fst-btn { flex: 1 1 auto; padding: 12px 12px; font-size: 15px; }
  .fst-ct { font-size: 17.5px; }
  .fst-tab span { display: none; }
  .fst-tab { padding: 9px 13px; font-size: 18px; }
  .fst-tab.on span { display: inline; font-size: 14px; }
  .fst-dots i { width: 9px; height: 9px; }
  .fst-entries { grid-template-columns: minmax(0, 1fr); }
  .fst-ch-t small { font-size: 12px; }
}

/* ───────── Pflege-Menü (pet-ui.js): „Andere dürfen meine Tiere streicheln“ ───────── */
.fp-patok { display: flex; align-items: flex-start; gap: 10px; margin-top: 10px; padding: 9px 12px; border-radius: 12px; cursor: pointer;
  background: rgba(8, 4, 30, .3); border: 1px solid rgba(255, 255, 255, .08); text-align: left; }
.fp-patok input { flex: none; width: 20px; height: 20px; margin: 1px 0 0; accent-color: #ff6bcb; cursor: pointer; }
.fp-patok span { display: flex; flex-direction: column; gap: 2px; }
.fp-patok b { font: 600 14.5px/1.2 var(--font-display); color: #fff; }
.fp-patok small { font-size: 12.5px; font-weight: 700; color: var(--muted, #b9b3d9); }

/* (QA P3) schillernder Fisch würde abgegeben – deutlich machen */
.fst-give.shy { box-shadow: 0 0 0 2px #fff6, 0 0 14px #b78cff99; background: linear-gradient(100deg, rgba(255,120,200,.22), rgba(120,200,255,.22), rgba(170,255,170,.2)); }
.fst-give.shy small { color: #ffd6ff; font-weight: 800; }

/* ===== fish-photo.css ===== */
/* Phase 3 – Agent Foto & Brücke: Fotomodus (photo-ui.js), Glücksköder-Kachel, Hinweis auf dem Endbildschirm (end.js).
   Farben/Schrift wie fishing.css (Glas-Panels, Fredoka/Nunito). */

/* ==========================================================================
   Fotomodus: Oberfläche der Angelwelt ausblenden
   ========================================================================== */
.fw-root.fwp-on > .fw-ui, .fw-root.fwp-on > .fw-catch-ui { visibility: hidden !important; }
.fw-root.fwp-on .fw-tags { display: none !important; }
body.fwp-photo #social { display: none !important; }

.fwp {
  position: absolute; inset: 0; z-index: 60; color: #fff; font-family: var(--font);
  opacity: 0; transition: opacity .22s ease; -webkit-user-select: none; user-select: none;
  --fwp-glass: rgba(24, 17, 58, .78);
}
.fwp.show { opacity: 1; }
.fwp-touch { position: absolute; inset: 0; touch-action: none; cursor: grab; }
.fwp-touch:active { cursor: grabbing; }
.fwp-frame { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.fwp-tint, .fwp-grain { position: absolute; pointer-events: none; }
.fwp-grain { background-size: 128px 128px; mix-blend-mode: overlay; }

/* Sprechblase (Vorschau) – Anker = Kopf der Figur */
.fwp-emote { position: absolute; left: 0; top: 0; width: 0; height: 0; pointer-events: none; transform-origin: 0 0; will-change: transform; }
.fwp-emote .b {
  position: absolute; left: 0; bottom: 0; transform: translate(-50%, -14px);
  display: grid; place-items: center; width: 54px; height: 48px; border-radius: 19px; background: #fff;
  font: 30px/1 "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif; box-shadow: 0 6px 14px rgba(0, 0, 0, .28);
}
.fwp-emote .b::after { content: ''; position: absolute; left: 50%; bottom: -11px; margin-left: -8px; border: 8px solid transparent; border-top: 12px solid #fff; border-bottom: 0; }
.fwp-emote.hidden { display: none; }

/* Kopfzeile */
.fwp-top {
  position: absolute; left: 0; right: 0; top: 0; display: flex; align-items: center; gap: 12px;
  padding: calc(10px + var(--safe-t, 0px)) calc(14px + var(--safe-r, 0px)) 10px calc(14px + var(--safe-l, 0px)); pointer-events: none;
}
.fwp-top > * { pointer-events: auto; }
.fwp-title {
  display: inline-flex; align-items: center; gap: 8px; padding: 7px 14px 7px 11px; border-radius: 999px;
  background: var(--fwp-glass); border: 1px solid rgba(255, 255, 255, .14); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  font: 600 16px/1 var(--font-display); box-shadow: 0 6px 18px rgba(8, 4, 30, .35);
}
.fwp-title span { font-size: 18px; }
.fwp-help { flex: 1; min-width: 0; text-align: center; font: 700 12px/1.3 var(--font); color: rgba(255, 255, 255, .78); text-shadow: 0 1px 3px rgba(0, 0, 0, .6); pointer-events: none !important; }
.fwp-x {
  width: 40px; height: 40px; flex: none; border-radius: 50%; border: 1px solid rgba(255, 255, 255, .2); background: var(--fwp-glass);
  color: #fff; font: 700 17px/1 var(--font); cursor: pointer; box-shadow: 0 6px 18px rgba(8, 4, 30, .35); transition: transform .12s, background .15s;
}
.fwp-x:hover { background: rgba(255, 77, 94, .85); transform: scale(1.06); }

/* Bedienleiste unten */
.fwp-panel {
  position: absolute; left: 50%; bottom: calc(14px + var(--safe-b, 0px)); transform: translateX(-50%); width: min(880px, calc(100% - 28px));
  display: flex; align-items: center; gap: 14px; padding: 10px 12px 10px 14px; border-radius: 22px;
  background: var(--fwp-glass); border: 1px solid rgba(255, 255, 255, .14); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
  box-shadow: 0 10px 30px rgba(8, 4, 30, .45); transition: transform .3s cubic-bezier(.2, 1.2, .4, 1), opacity .2s;
}
.fwp.bare .fwp-panel { transform: translateX(-50%) translateY(140%); opacity: 0; pointer-events: none; }
.fwp.bare .fwp-help { opacity: 0; }
.fwp-pbody { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 8px; }
.fwp-tabs { display: flex; gap: 4px; }
.fwp-tab {
  padding: 5px 13px; border-radius: 999px; border: 0; background: transparent; color: rgba(255, 255, 255, .62);
  font: 800 12px/1.2 var(--font); letter-spacing: .4px; text-transform: uppercase; cursor: pointer; transition: background .15s, color .15s;
}
.fwp-tab:hover { color: #fff; background: rgba(255, 255, 255, .08); }
.fwp-tab.on { color: #2a1d00; background: var(--primary, #ffc933); }
.fwp-row { display: flex; align-items: center; gap: 7px; overflow-x: auto; overscroll-behavior: contain; scrollbar-width: none; padding: 2px 2px 3px; min-height: 42px; }
.fwp-row::-webkit-scrollbar { display: none; }
.fwp-chip {
  flex: none; display: inline-flex; align-items: center; gap: 6px; height: 36px; padding: 0 13px 0 10px; border-radius: 13px;
  border: 1.5px solid rgba(255, 255, 255, .13); background: linear-gradient(180deg, rgba(255, 255, 255, .1), rgba(255, 255, 255, .03));
  color: #fff; font: 700 13.5px/1 var(--font); cursor: pointer; white-space: nowrap; transition: transform .12s, border-color .15s, background .15s;
}
.fwp-chip .ic { font-size: 16px; line-height: 1; }
.fwp-chip:hover { transform: translateY(-1px); border-color: rgba(255, 255, 255, .3); }
.fwp-chip.on { border-color: var(--primary, #ffc933); background: linear-gradient(180deg, rgba(255, 201, 51, .3), rgba(255, 201, 51, .08)); box-shadow: 0 0 0 3px rgba(255, 201, 51, .12); }
.fwp-chip.dis, .fwp-chip:disabled { opacity: .38; cursor: not-allowed; transform: none; }
.fwp-chip.emo { width: 38px; padding: 0; justify-content: center; font: 20px/1 "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif; }
.fwp-sep { flex: none; width: 1px; height: 24px; background: rgba(255, 255, 255, .16); margin: 0 3px; }
.fwp-range { flex: none; display: inline-flex; align-items: center; gap: 6px; height: 36px; padding: 0 10px; border-radius: 13px; background: rgba(255, 255, 255, .06); }
.fwp-range input { width: 120px; accent-color: var(--primary, #ffc933); }

/* Auslöser */
.fwp-shutter {
  flex: none; position: relative; width: 70px; height: 70px; border-radius: 50%; cursor: pointer; padding: 0;
  border: 4px solid #fff; background: rgba(255, 255, 255, .14); box-shadow: 0 6px 20px rgba(0, 0, 0, .35); transition: transform .1s;
}
.fwp-shutter i { position: absolute; inset: 6px; border-radius: 50%; background: radial-gradient(circle at 40% 35%, #ffe28a, #ffc933 55%, #ff9f1c); box-shadow: inset 0 -3px 0 rgba(0, 0, 0, .15); transition: transform .12s; }
.fwp-shutter:hover i { transform: scale(1.05); }
.fwp-shutter:active { transform: scale(.92); }
.fwp-shutter:focus-visible { outline: 3px solid rgba(143, 191, 255, .9); outline-offset: 3px; }

/* Blitz, Filtername */
.fwp-flash { position: absolute; inset: 0; background: #fff; opacity: 0; pointer-events: none; }
.fwp-flash.go { animation: fwpFlash .45s ease-out; }
@keyframes fwpFlash { 0% { opacity: .9; } 100% { opacity: 0; } }
.fwp-name {
  position: absolute; left: 50%; top: 32%; transform: translate(-50%, -50%); pointer-events: none; opacity: 0;
  font: 600 30px/1 var(--font-display); text-shadow: 0 2px 12px rgba(0, 0, 0, .55); letter-spacing: .5px;
}
.fwp-name.show { animation: fwpName 1.1s ease forwards; }
@keyframes fwpName { 0% { opacity: 0; transform: translate(-50%, -40%); } 18% { opacity: 1; transform: translate(-50%, -50%); } 70% { opacity: 1; } 100% { opacity: 0; } }

/* Ergebnis */
.fwp-result { position: absolute; inset: 0; display: grid; place-items: center; background: rgba(8, 5, 24, .62); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); padding: 16px; z-index: 3; }
.fwp-result.hidden { display: none; }
.fwp-rcard {
  display: flex; flex-direction: column; gap: 12px; align-items: center; max-width: min(760px, 100%); max-height: 100%;
  padding: 16px; border-radius: 22px; background: var(--fwp-glass); border: 1px solid rgba(255, 255, 255, .16);
  box-shadow: 0 18px 50px rgba(0, 0, 0, .5); animation: fwpPop .35s cubic-bezier(.2, 1.4, .4, 1);
}
@keyframes fwpPop { from { transform: scale(.85) rotate(-2deg); opacity: 0; } }
.fwp-rimg { min-height: 0; display: grid; place-items: center; }
.fwp-rimg img { display: block; max-width: 100%; max-height: min(62vh, 560px); border-radius: 6px; box-shadow: 0 8px 26px rgba(0, 0, 0, .45); transform: rotate(-1deg); }
.fwp-rmeta { display: flex; align-items: baseline; gap: 10px; }
.fwp-rmeta b { font: 600 22px/1 var(--font-display); }
.fwp-rmeta small { color: rgba(255, 255, 255, .6); font-weight: 700; font-size: 12px; }
.fwp-rbtns { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; }
.fwp-rbtns .btn { text-decoration: none; }

/* Hinweis nach seltenen Fängen */
.fwp-hint {
  position: absolute; left: 50%; top: calc(var(--fw-top-h, 62px) + 64px); transform: translate(-50%, -12px) scale(.94); opacity: 0;
  display: inline-flex; align-items: center; gap: 10px; padding: 8px 16px 8px 10px; border-radius: 999px; pointer-events: auto; cursor: pointer;
  background: rgba(24, 17, 58, .86); border: 1.5px solid color-mix(in srgb, var(--rc, #ffc933) 70%, white); color: #fff; font-family: var(--font);
  box-shadow: 0 8px 24px rgba(8, 4, 30, .4), 0 0 18px color-mix(in srgb, var(--rc, #ffc933) 35%, transparent); transition: transform .3s cubic-bezier(.2, 1.4, .4, 1), opacity .25s;
}
.fwp-hint.show { transform: translate(-50%, 0) scale(1); opacity: 1; }
.fwp-hint .ic { font-size: 22px; animation: fwpWiggle 1.6s ease-in-out infinite; }
.fwp-hint span:last-child { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; }
.fwp-hint b { font: 600 15px/1.1 var(--font-display); }
.fwp-hint small { font-size: 11.5px; font-weight: 700; color: rgba(255, 255, 255, .7); }
.fwp-hint:hover { filter: brightness(1.12); }
@keyframes fwpWiggle { 0%, 70%, 100% { transform: rotate(0); } 78% { transform: rotate(-12deg); } 86% { transform: rotate(10deg); } }

/* Handy */
.fwp.touch .fwp-help { font-size: 11px; }
@media (max-width: 760px) {
  .fwp-top { gap: 8px; }
  .fwp-help { display: none; }
  .fwp-title { margin-right: auto; }
  .fwp-panel { flex-direction: column-reverse; align-items: stretch; gap: 8px; padding: 10px 10px 10px; border-radius: 20px; width: calc(100% - 16px); bottom: calc(8px + var(--safe-b, 0px)); }
  .fwp-shutter { position: absolute; left: 50%; top: -84px; margin-left: -35px; }
  .fwp-tabs { justify-content: space-between; }
  .fwp-tab { flex: 1; padding: 7px 4px; font-size: 11.5px; }
  .fwp-chip { height: 40px; }
  .fwp-rimg img { max-height: 54vh; }
  .fwp-rbtns .btn { flex: 1 1 40%; }
  .fwp-name { font-size: 24px; top: 26%; }
}
@media (prefers-reduced-motion: reduce) {
  .fwp-flash.go, .fwp-hint .ic, .fwp-rcard, .fwp-name.show { animation: none; }
}

/* ==========================================================================
   Glücksköder (Ausrüstungsleiste Desktop, Touch-Knopf, Fenster)
   ========================================================================== */
.fwp-charm { position: relative; }
.fwp-charm.active { border-color: rgba(98, 217, 138, .75); background: linear-gradient(180deg, rgba(98, 217, 138, .28), rgba(98, 217, 138, .06)); box-shadow: 0 0 0 1px rgba(98, 217, 138, .3), 0 0 18px rgba(98, 217, 138, .28); }
.fwp-hb-n {
  position: absolute; left: 50%; bottom: -7px; transform: translateX(-50%); padding: 2px 6px; border-radius: 7px; white-space: nowrap;
  background: #2fae64; color: #fff; font: 800 10px/1.2 var(--font); box-shadow: 0 2px 0 rgba(0, 0, 0, .3);
}
.fwp-hb-n:empty { display: none; }
.fwp-charm.paused { filter: saturate(.4); }
.fwp-charm .fwp-ring {
  position: absolute; left: 6px; top: 6px; width: 42px; height: 42px; border-radius: 12px; pointer-events: none; opacity: 0;
  background: conic-gradient(#62d98a calc(var(--p, 0) * 360deg), transparent 0); -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor; mask-composite: exclude; padding: 2px;
}
.fwp-charm.active .fwp-ring { opacity: 1; }
.fw-tbtn.fwp-charm-t { position: relative; }
.fw-tbtn.fwp-charm-t.active { box-shadow: 0 0 0 2px rgba(98, 217, 138, .8), 0 0 16px rgba(98, 217, 138, .45); }
.fwp-tb-n {
  position: absolute; right: -4px; bottom: -4px; min-width: 20px; height: 18px; padding: 0 5px; border-radius: 999px; background: #1f8a4c; color: #fff;
  font: 800 11px/18px var(--font); text-align: center; box-shadow: 0 2px 6px rgba(0, 0, 0, .35);
}
.fwp-tb-n:empty { display: none; }
.fwp-cd { display: flex; flex-direction: column; align-items: center; gap: 8px; text-align: center; max-width: 360px; padding: 4px 4px 0; }
.fwp-cd-art { width: 78px; height: 78px; display: grid; place-items: center; font-size: 46px; border-radius: 50%; background: radial-gradient(circle at 50% 40%, rgba(98, 217, 138, .45), rgba(98, 217, 138, .05) 70%); animation: fwpWiggle 2.4s ease-in-out infinite; }
.fwp-cd h3 { margin: 0; font: 600 24px/1.1 var(--font-display); }
.fwp-cd p { margin: 0; line-height: 1.4; }
.fwp-cd-on { display: flex; align-items: center; gap: 10px; padding: 8px 12px; border-radius: 12px; background: rgba(98, 217, 138, .14); font-weight: 800; color: #b9f5cd; }
.fwp-cd-on i { width: 22px; height: 22px; border-radius: 50%; background: conic-gradient(#62d98a calc(var(--p, 0) * 360deg), rgba(255, 255, 255, .15) 0); }
.fwp-cd-note { font-size: 13px; color: var(--muted, #b9b3d6); }
.fwp-cd-have { font-size: 13px; font-weight: 800; color: var(--muted, #b9b3d6); }
.fwp-cd-btns { display: flex; gap: 8px; margin-top: 6px; }

/* ==========================================================================
   Endbildschirm des Brettspiels (end.js): Glücksköder-Hinweis
   ========================================================================== */
.end-fish {
  display: flex; align-items: center; gap: 12px; margin: 14px auto 0; max-width: 560px; padding: 12px 16px; border-radius: 16px; text-align: left;
  background: linear-gradient(135deg, rgba(98, 217, 138, .2), rgba(47, 160, 224, .14)); border: 1px solid rgba(98, 217, 138, .45);
  box-shadow: 0 8px 22px rgba(8, 4, 30, .3); animation: fwpPop .45s cubic-bezier(.2, 1.4, .4, 1) .6s backwards;
}
.end-fish .ic { flex: none; width: 46px; height: 46px; display: grid; place-items: center; font-size: 28px; border-radius: 50%; background: rgba(255, 255, 255, .12); }
.end-fish b { display: block; font: 600 16px/1.2 var(--font-display); }
.end-fish small { display: block; margin-top: 3px; font-size: 13px; line-height: 1.35; color: rgba(255, 255, 255, .82); }
.end-fish.muted { background: rgba(255, 255, 255, .06); border-color: rgba(255, 255, 255, .14); }
.end-fish.hidden { display: none; }
.end-row .end-fchip { display: inline-flex; align-items: center; gap: 3px; margin-left: 6px; padding: 1px 7px; border-radius: 999px; font: 800 11px/16px var(--font); background: rgba(47, 211, 224, .14); color: #a6f3fa; vertical-align: 2px; white-space: nowrap; }
@media (max-width: 640px) { .end-row .end-fchip { display: none; } .end-fish { margin: 10px 8px 0; } }
.fwp-clip { position: absolute; overflow: hidden; pointer-events: none; }

/* (Feinschliff P3) Touch-Knopf 📷 in der Knopf-Spalte. Wird die Spalte auf dem Handy lang (ab 8 Knöpfen, z. B. mit
   Glücksköder), rücken die Knöpfe etwas enger zusammen – die Spalte bleibt unter dem HUD-Stapel (fish-events.css). */
@media (max-width: 760px) {
  .fw-root.touch .fw-tbtns:has(> .fw-tbtn:nth-child(8)) { gap: 8px; }
  .fw-root.touch .fw-tbtns:has(> .fw-tbtn:nth-child(8)) > .fw-tbtn { width: 48px; height: 48px; font-size: 22px; }
}
.fw-root.busy .fwp-tbtn { opacity: .45; pointer-events: none; }

/* ===== fish-shiny.css ===== */
/* Schillernde Fische (Phase 3 Nr. 35 – Agent „Schillernde“): Lexikon-Ansicht, Fang-Karte, Eimer, Inselfunk, Funkeln.
   Zeichnungen: public/js/fishing/shinyart.js. Regenbogen-Rahmen über border-image bzw. Masken-Trick (padding-box/border-box). */
:root { --shy-rainbow: linear-gradient(115deg, #ff8ad8, #ffd36b, #8dffb0, #7fd8ff, #b79bff, #ff8ad8); }

/* ───────── Funkeln (sparkleEl) ───────── */
.shy-sparks { position: absolute; inset: 0; pointer-events: none; overflow: visible; }
.shy-sparks i { position: absolute; width: 10px; height: 10px; margin: -5px 0 0 -5px; transform: scale(calc(var(--s, 1) * .2)); opacity: 0;
  background: radial-gradient(circle, #fff 0 18%, transparent 20%),
    linear-gradient(0deg, transparent 44%, #fff 46% 54%, transparent 56%),
    linear-gradient(90deg, transparent 44%, #fff 46% 54%, transparent 56%);
  clip-path: polygon(50% 0, 58% 42%, 100% 50%, 58% 58%, 50% 100%, 42% 58%, 0 50%, 42% 42%);
  filter: drop-shadow(0 0 3px rgba(255, 236, 170, .95)); animation: shyTw 2.6s ease-in-out infinite; }
@keyframes shyTw { 0%, 100% { opacity: 0; transform: scale(calc(var(--s, 1) * .2)) rotate(0); } 45% { opacity: 1; transform: scale(var(--s, 1)) rotate(45deg); } 60% { opacity: .9; } }

/* ───────── Lexikon (dex.js) ───────── */
.fdx-title-row { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; }
.fdx-title-row:empty { display: none; }
.fdx-shy-count { display: inline-flex; align-items: center; gap: 4px; margin-top: 4px; padding: 2px 9px 2px 7px; border-radius: 999px;
  font: 800 12.5px/1.5 Nunito, sans-serif; color: #fff; background: rgba(255, 255, 255, .08); border: 1px solid rgba(255, 255, 255, .16); }
.fdx-shy-count i, .fdx-view-b.shy i, .fdx-shy-mark { font-style: normal; background: var(--shy-rainbow); background-size: 200% 100%; -webkit-background-clip: text; background-clip: text; color: transparent; }
.fdx-shy-count i { font-size: 14px; }

.fdx-view { display: flex; gap: 4px; padding: 4px; border-radius: 14px; background: rgba(0, 0, 0, .22); }
.fdx-view-b { flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 4px; min-height: 36px; border: none; border-radius: 10px; padding: 6px 10px;
  background: transparent; color: var(--muted, #b9b3e6); cursor: pointer; font: 600 14px/1 Fredoka, var(--font-display, sans-serif); white-space: nowrap; transition: background .15s, color .15s; }
.fdx-view-b:hover { color: #fff; background: rgba(255, 255, 255, .06); }
.fdx-view-b em { font-style: normal; font: 800 11px/1 Nunito, sans-serif; padding: 2px 6px; border-radius: 7px; background: rgba(255, 255, 255, .1); margin-left: 2px; }
.fdx-view-b.sel { color: #1b1440; background: #ffc933; box-shadow: 0 3px 0 rgba(0, 0, 0, .2); }
.fdx-view-b.shy.sel { background: var(--shy-rainbow); background-size: 220% 100%; animation: shyFlow 6s linear infinite; }
.fdx-view-b.shy.sel i { color: #1b1440; background: none; -webkit-background-clip: border-box; background-clip: border-box; }
.fdx-view-b.sel em { background: rgba(27, 20, 64, .18); }
@keyframes shyFlow { to { background-position: 220% 0; } }

.fdx-shy-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; padding: 10px 12px; border-radius: 16px;
  background: linear-gradient(135deg, rgba(255, 138, 216, .14), rgba(127, 216, 255, .1) 55%, rgba(141, 255, 176, .1)); border: 1px solid rgba(255, 255, 255, .14); }
.fdx-shy-bar[hidden] { display: none; }
.fdx-shy-prog { flex: 1 1 220px; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.fdx-shy-prog b { font: 700 15px/1.1 Fredoka, var(--font-display, sans-serif); }
.fdx-shy-prog small { color: var(--muted, #b9b3e6); font-weight: 700; font-size: 11.5px; }
.fdx-shy-meter { height: 8px; border-radius: 6px; background: rgba(8, 4, 30, .55); overflow: hidden; }
.fdx-shy-meter i { display: block; height: 100%; min-width: 3px; border-radius: 6px; background: var(--shy-rainbow); background-size: 300% 100%; animation: shyFlow 8s linear infinite; }
.fdx-shy-chips { display: flex; gap: 6px; flex-wrap: wrap; }
.fdx-shy-chip { --rc: #e7b6ff; padding: 4px 10px; }

.fdx-card .fdx-shy-mark { position: absolute; right: 7px; bottom: 6px; font-size: 15px; line-height: 1; pointer-events: none; filter: drop-shadow(0 0 4px rgba(255, 220, 255, .7)); }
.fdx-shy-card.got { border-color: transparent; background: linear-gradient(180deg, #34287c, #251b5c) padding-box, var(--shy-rainbow) border-box;
  box-shadow: 0 0 14px rgba(231, 182, 255, .28); }
.fdx-shy-card.got:hover { box-shadow: 0 6px 18px rgba(0, 0, 0, .35), 0 0 18px rgba(255, 211, 107, .45); }
.fdx-shy-card.got .fdx-cnt { background: rgba(27, 20, 64, .7); }
.fdx-shy-card.unknown.theirs.got { border-style: solid; background: linear-gradient(180deg, rgba(30, 20, 70, .9), rgba(20, 12, 52, .9)) padding-box, var(--shy-rainbow) border-box; }
.fdx-shy-art { position: relative; }
.fdx-shy-card.miss { border-color: rgba(214, 170, 255, .35); }
.fdx-shy-card.miss .fdx-name { letter-spacing: 0; color: rgba(255, 255, 255, .7); }
.fdx-shy-dim { opacity: .55; }
.fdx-card.secret.fdx-shy-got { box-shadow: 0 0 16px rgba(255, 211, 107, .45); }

.fdx-dcard canvas[hidden], .fdx-stats[hidden] { display: none; }
.fdx-dcard.fdx-dshy { border-color: transparent; background: linear-gradient(180deg, #3a2d8a, #261c5e) padding-box, var(--shy-rainbow) border-box;
  box-shadow: 0 0 46px rgba(231, 182, 255, .4), 0 18px 50px rgba(0, 0, 0, .5); }
.fdx-shy-tog { display: block; margin: 9px auto 0; min-height: 36px; padding: 7px 14px; border-radius: 12px; cursor: pointer; color: #fff;
  font: 700 13.5px/1 Nunito, sans-serif; background: rgba(255, 255, 255, .08); border: 2px solid transparent;
  background-image: linear-gradient(#2d2270, #2d2270), var(--shy-rainbow); background-origin: border-box; background-clip: padding-box, border-box; }
.fdx-shy-tog:hover { filter: brightness(1.15); }
.fdx-shy-stats { margin-top: 10px; }

/* ───────── Fang-Karte (catch-ui.js) ───────── */
.fc-cardbox.fc-shiny .fc-card { border-color: transparent; background: linear-gradient(180deg, #3a2d8a 0%, #261c5e 100%) padding-box, var(--shy-rainbow) border-box;
  box-shadow: 0 0 0 5px rgba(27, 20, 64, .6), 0 0 60px rgba(231, 182, 255, .55), 0 24px 60px rgba(0, 0, 0, .55); }
.fc-cardbox.fc-shiny .fc-ribbon { background: var(--shy-rainbow); background-size: 300% 100%; animation: shyFlow 4s linear infinite; color: #1b1440; }
.fc-cardbox.fc-shiny .fc-card-glow { background: radial-gradient(closest-side, rgba(255, 211, 107, .32), rgba(183, 155, 255, .22) 60%, transparent); }
.fc-stamp-shiny { left: 50%; top: 2%; transform: translateX(-50%) rotate(-4deg); color: #ffe7a8; border-color: #ffd36b;
  background: linear-gradient(110deg, rgba(255, 138, 216, .55), rgba(127, 216, 255, .5), rgba(141, 255, 176, .5)); text-shadow: 0 2px 0 rgba(0, 0, 0, .35); }
@media (max-width: 560px) { .fc-stamp-shiny { font-size: 18px; } }

/* ───────── Eimer (inventory-ui.js) ───────── */
.mk-fish.shiny { border-color: transparent; background: linear-gradient(180deg, rgba(58, 45, 138, .95), rgba(38, 28, 94, .95)) padding-box, var(--shy-rainbow) border-box; }
.mk-fish.shiny.sel { background: linear-gradient(180deg, rgba(255, 201, 51, .28), rgba(58, 45, 138, .95)) padding-box, var(--shy-rainbow) border-box; }
.mk-shy-art { position: relative; display: block; }
.mk-tag.shy { background: var(--shy-rainbow); color: #1b1440; font-size: 12px; padding: 2px 6px; }
.mk-btn-rel.confirm { background: linear-gradient(180deg, #ffb07a, #ff7a4d); color: #2a0e00; }

/* ───────── Inselfunk (chat.js: kind 'shiny') ───────── */
.fw-msg.sys.k-shiny { font-style: normal; font-weight: 800; font-size: 13px; color: #fff; padding: 4px 8px; margin: 2px 0; border-radius: 9px;
  background: linear-gradient(90deg, rgba(255, 138, 216, .26), rgba(127, 216, 255, .16) 50%, rgba(141, 255, 176, .06)); border-left: 3px solid #ffd36b; }
.fw-msg.sys.k-shiny .txt { text-shadow: 0 0 10px rgba(255, 211, 107, .55); }

/* ───────── Großer Moment (shiny-ui.js) ───────── */
.shy-burst { position: fixed; inset: 0; z-index: 60; pointer-events: none; overflow: hidden; }
.shy-burst::before { content: ''; position: absolute; inset: -20%; background: conic-gradient(from 0deg, rgba(255, 138, 216, .0), rgba(255, 211, 107, .22), rgba(141, 255, 176, .0), rgba(127, 216, 255, .22), rgba(183, 155, 255, .0), rgba(255, 138, 216, .22), rgba(255, 138, 216, .0));
  animation: shyBurst 1.6s ease-out forwards; mix-blend-mode: screen; }
.shy-burst i { position: absolute; width: 16px; height: 16px; margin: -8px; background: #fff; opacity: 0;
  clip-path: polygon(50% 0, 58% 42%, 100% 50%, 58% 58%, 50% 100%, 42% 58%, 0 50%, 42% 42%); filter: drop-shadow(0 0 6px #ffd36b);
  animation: shyFly 1.5s cubic-bezier(.2, .8, .3, 1) forwards; }
@keyframes shyBurst { 0% { opacity: 0; transform: scale(.6) rotate(0); } 25% { opacity: 1; } 100% { opacity: 0; transform: scale(1.3) rotate(80deg); } }
@keyframes shyFly { 0% { opacity: 0; transform: translate(0, 0) scale(.3); } 20% { opacity: 1; } 100% { opacity: 0; transform: translate(var(--dx), var(--dy)) scale(1.1) rotate(160deg); } }

@media (prefers-reduced-motion: reduce) {
  .shy-sparks i, .fdx-view-b.shy.sel, .fdx-shy-meter i, .fc-cardbox.fc-shiny .fc-ribbon { animation: none !important; }
  .shy-sparks i { opacity: .8; transform: scale(var(--s, 1)); }
  .shy-burst { display: none; }
}

/* ===== fish-weather.css ===== */
/* fish-weather.css – Wetteranzeige zum Aufklappen (js/fishing/weather-ui.js, Server server/fishing/wx-info.js) */

/* Uhr/Wetter-Pille als Knopf */
.fw-clock.fwx-clock { cursor: pointer; transition: background .15s, border-color .15s, transform .15s; }
.fw-clock.fwx-clock:hover { background: var(--glass-2); transform: translateY(-1px); }
.fw-clock.fwx-clock.on { background: var(--glass-2); border-color: rgba(255, 201, 51, .6); }
.fw-clock.fwx-clock:focus-visible { outline: 2px solid #ffe066; outline-offset: 2px; }
.fwx-caret { font-style: normal; font-size: 10px; line-height: 1; color: var(--muted); margin-left: -2px; transition: transform .2s; }
.fw-clock.on .fwx-caret { transform: rotate(180deg); }

/* Karte */
.fwx-card {
  position: absolute; z-index: 43; width: 344px; max-height: calc(100% - var(--fw-top-h, 54px) - 24px); overflow-y: auto;
  overscroll-behavior: contain; scrollbar-width: thin; padding: 12px 12px 10px; border-radius: 18px;
  background: rgba(29, 21, 80, .96); border: 1.5px solid var(--glass-b); box-shadow: var(--shadow); color: #fff;
  backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); animation: fwxIn .2s cubic-bezier(.2, 1.3, .4, 1) both;
  -webkit-user-select: text; user-select: text;
}
.fwx-card.hidden { display: none; }
.fwx-card.narrow { left: calc(12px + var(--safe-l)); right: calc(12px + var(--safe-r)); width: auto; }
@keyframes fwxIn { from { opacity: 0; transform: translateY(-6px) scale(.98); } to { opacity: 1; transform: none; } }

.fwx-head { display: flex; align-items: center; gap: 10px; padding-bottom: 10px; border-bottom: 1px solid rgba(255, 255, 255, .1); }
.fwx-big { font: 30px/1 "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif; filter: drop-shadow(0 2px 4px rgba(0, 0, 0, .3)); }
.fwx-title { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
.fwx-title b { font: 600 19px/1.15 var(--font-display); }
.fwx-title small { font: 800 12px/1.3 var(--font); color: var(--muted); }

.fwx-sec { margin-top: 10px; }
.fwx-sec h4 { margin: 0 0 5px; font: 800 10.5px/1.2 var(--font); letter-spacing: .6px; text-transform: uppercase; color: var(--muted); }

.fwx-effs, .fwx-sp { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.fwx-eff {
  display: flex; align-items: center; gap: 9px; min-height: 36px; padding: 6px 10px; border-radius: 12px;
  background: rgba(255, 255, 255, .06); font: 700 13.5px/1.25 var(--font);
}
.fwx-eff .ic { font-size: 17px; flex: none; }
.fwx-eff .lb { flex: 1; min-width: 0; }
.fwx-eff b { flex: none; font: 600 13.5px/1 var(--font-display); white-space: nowrap; }
.fwx-eff.up { background: rgba(98, 217, 138, .1); }
.fwx-eff.up b { color: #8ff0b0; }
.fwx-eff.down b { color: #ffb0a0; }
.fwx-eff.ev { background: rgba(201, 184, 255, .12); }
.fwx-eff.ev b { color: #ddd0ff; }
.fwx-eff.calm b { color: var(--muted); font-family: var(--font); font-weight: 800; font-size: 12px; }

.fwx-spi {
  display: grid; grid-template-columns: 10px minmax(0, 1fr) auto; align-items: center; gap: 9px; padding: 5px 10px; border-radius: 10px;
  background: rgba(255, 255, 255, .04); font: 700 13.5px/1.25 var(--font);
}
.fwx-spi .dot { width: 10px; height: 10px; border-radius: 50%; background: var(--rc); box-shadow: 0 0 8px color-mix(in srgb, var(--rc) 60%, transparent); }
.fwx-spi .nm { display: flex; flex-direction: column; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fwx-spi .nm.unk { color: #cfc8ee; font-style: italic; }
.fwx-spi .nm small { font: 800 10.5px/1.2 var(--font); font-style: normal; color: color-mix(in srgb, var(--rc) 70%, white); }
.fwx-spi .wh { display: flex; flex-direction: column; align-items: flex-end; gap: 1px; font-size: 15px; line-height: 1.1; }
.fwx-spi .wh em { font: 800 10.5px/1.2 var(--font); font-style: normal; color: var(--muted); white-space: nowrap; }
.fwx-spi.here { background: rgba(79, 176, 255, .1); }
.fwx-spi.later { opacity: .62; }
.fwx-more { padding: 2px 10px; font: 800 12px/1.3 var(--font); color: var(--muted); }

.fwx-note { margin: 8px 2px 0; font: 700 12.5px/1.35 var(--font); color: var(--muted); }

.fwx-cmp { display: flex; flex-direction: column; gap: 2px; font: 700 13px/1.2 var(--font); font-variant-numeric: tabular-nums; }
.fwx-row { display: grid; grid-template-columns: minmax(0, 1.5fr) 1fr 1fr .6fr; align-items: center; gap: 6px; min-height: 32px; padding: 0 10px; border-radius: 10px; }
.fwx-row > span:not(.wn) { text-align: right; white-space: nowrap; }
.fwx-row.hd { min-height: 22px; font: 800 10.5px/1.2 var(--font); letter-spacing: .3px; color: var(--muted); }
.fwx-row.cur { background: rgba(255, 201, 51, .14); box-shadow: inset 0 0 0 1.5px rgba(255, 201, 51, .5); }
.fwx-row .wn { display: flex; align-items: center; gap: 7px; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fwx-row .wn .wi { font-size: 16px; line-height: 1; flex: none; }
.fwx-row .wn .wi.svg .fw-wx-svg { width: 18px; height: 18px; }
.fwx-big.svg { display: inline-flex; }
.fwx-big.svg .fw-wx-svg { width: 32px; height: 32px; }
.fwx-row .g { color: #8ff0b0; }
.fwx-row .b { color: #ffb0a0; }
.fwx-row .z { color: var(--muted); }
.fwx-foot { margin: 6px 2px 0; font: 700 11px/1.35 var(--font); color: var(--muted); }

@media (prefers-reduced-motion: reduce) {
  .fwx-card { animation: none; }
  .fwx-caret, .fw-clock.fwx-clock { transition: none; }
}

/* ===== admin.css ===== */
/* Admin-Zentrale (js/admin/index.js) und Team-Durchsagen für alle (js/admin/notice.js) */

/* ---------- Ebene & Rahmen ---------- */
.adm {
  --adm-line: rgba(255, 255, 255, .1); --adm-card: rgba(255, 255, 255, .05); --adm-ink2: #ddd8ff;
  position: fixed; inset: 0; z-index: 55; display: grid; place-items: center;
  padding: max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));
  background: rgba(8, 4, 30, .62); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
  font-family: var(--font); color: #fff; animation: admFade .18s ease both;
}
.adm.out { animation: admFade .16s ease reverse forwards; }
@keyframes admFade { from { opacity: 0; } to { opacity: 1; } }
@keyframes admPop { from { opacity: 0; transform: scale(.97) translateY(8px); } to { opacity: 1; transform: none; } }
.adm-shell {
  position: relative; width: min(1240px, 100%); height: min(920px, 100%); display: grid; grid-template-columns: 232px minmax(0, 1fr);
  border-radius: 24px; overflow: hidden; background: linear-gradient(160deg, #231a5e, #191245 70%);
  border: 1px solid rgba(255, 255, 255, .13); box-shadow: 0 24px 70px rgba(4, 2, 20, .6); animation: admPop .26s cubic-bezier(.2, 1.2, .4, 1) both;
}
.adm-side { display: flex; flex-direction: column; gap: 6px; padding: 18px 12px 14px; background: rgba(10, 6, 35, .32); border-right: 1px solid var(--adm-line); min-height: 0; }
.adm-brand { display: flex; align-items: center; gap: 11px; padding: 2px 8px 16px; }
.adm-brand b { display: block; font: 600 18px/1.1 var(--font-display); }
.adm-brand small { font: 800 10.5px/1.4 var(--font); letter-spacing: 1.4px; color: var(--primary); }
.adm-logo { width: 42px; height: 42px; flex: none; display: grid; place-items: center; border-radius: 13px; font-size: 22px; background: rgba(255, 201, 51, .14); box-shadow: inset 0 0 0 1px rgba(255, 201, 51, .32); }
.adm-nav { display: flex; flex-direction: column; gap: 3px; }
.adm-navb {
  display: flex; align-items: center; gap: 11px; height: 44px; padding: 0 12px; border: none; border-radius: 12px; background: transparent;
  color: var(--adm-ink2); font: 700 15px/1 var(--font); text-align: left; cursor: pointer; transition: background .14s, color .14s;
}
.adm-navb .ic { width: 22px; text-align: center; font-size: 17px; }
.adm-navb:hover { background: rgba(255, 255, 255, .07); color: #fff; }
.adm-navb.on { background: rgba(255, 201, 51, .13); color: #fff; box-shadow: inset 3px 0 0 var(--primary); }
.adm-navb:focus-visible, .adm-x:focus-visible, .adm-tile.click:focus-visible, .adm-urow:focus-visible, .adm-seg:focus-visible, .adm-bar:focus-visible { outline: 3px solid var(--primary); outline-offset: 2px; }
.adm-side-foot { margin-top: auto; display: flex; align-items: center; gap: 8px; padding: 8px 10px; color: var(--muted); }
.adm-stamp { font: 700 12px/1 var(--font); font-variant-numeric: tabular-nums; }
.adm-livedot { width: 8px; height: 8px; flex: none; border-radius: 50%; background: var(--good); box-shadow: 0 0 0 0 rgba(51, 209, 122, .7); animation: admPulse 2s ease infinite; }
.adm-livedot.big { width: 12px; height: 12px; }
@keyframes admPulse { 0% { box-shadow: 0 0 0 0 rgba(51, 209, 122, .6); } 70% { box-shadow: 0 0 0 9px rgba(51, 209, 122, 0); } 100% { box-shadow: 0 0 0 0 rgba(51, 209, 122, 0); } }
.adm-x { position: absolute; top: 14px; right: 14px; z-index: 3; width: 38px; height: 38px; border: none; border-radius: 12px; background: rgba(255, 255, 255, .1); color: #fff; font-size: 15px; cursor: pointer; }
.adm-x:hover { background: rgba(255, 255, 255, .18); }
.adm-main { min-height: 0; overflow: auto; padding: 26px 30px 44px; outline: none; -webkit-user-select: text; user-select: text; scrollbar-width: thin; scrollbar-color: rgba(255, 255, 255, .2) transparent; }
.adm-main button, .adm-main .adm-tile-l, .adm-main .adm-fl { -webkit-user-select: none; user-select: none; }
.adm-view { display: flex; flex-direction: column; gap: 22px; max-width: 1000px; margin: 0 auto; }
.adm-vh { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; padding-right: 44px; }
.adm-vh h2 { margin: 0; font: 600 28px/1.1 var(--font-display); }
.adm-vh small { display: block; margin-top: 4px; font: 700 13px/1.3 var(--font); color: var(--muted); }
.adm-loading { display: flex; align-items: center; justify-content: center; gap: 10px; padding: 70px 0; color: var(--muted); font: 700 14px var(--font); }
.adm-loading i { width: 18px; height: 18px; border-radius: 50%; border: 3px solid rgba(255, 255, 255, .15); border-top-color: var(--primary); animation: admSpin .8s linear infinite; }
@keyframes admSpin { to { transform: rotate(360deg); } }

/* ---------- Bausteine ---------- */
.adm-sec { display: flex; flex-direction: column; gap: 10px; }
.adm-sec-h { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.adm-sec-h h3 { margin: 0; font: 600 18px/1.2 var(--font-display); }
.adm-sec-h small { font: 700 12.5px/1.3 var(--font); color: var(--muted); }
.adm-card { padding: 16px; border-radius: 18px; background: var(--adm-card); border: 1px solid var(--adm-line); }
.adm-two { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.adm-row { display: flex; align-items: center; gap: 10px; margin-top: 10px; }
.adm-row-end { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.adm-grow { flex: 1; }
.adm-btns { display: flex; flex-wrap: wrap; gap: 8px; }
.adm-hint { margin: 0; font: 600 12.5px/1.45 var(--font); color: var(--muted); }
.adm-note { font: 700 13.5px/1.55 var(--font); color: var(--adm-ink2); }
.adm-note code, .adm-hint code { padding: 1px 6px; border-radius: 6px; background: rgba(0, 0, 0, .28); font: 700 12.5px ui-monospace, Consolas, monospace; color: #fff; }
.adm-count { font: 800 12.5px/1 var(--font); color: var(--muted); font-variant-numeric: tabular-nums; }
.adm-empty { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 34px 18px; text-align: center; border-radius: 18px; border: 2px dashed rgba(255, 255, 255, .1); }
.adm-empty .ic { font-size: 30px; }
.adm-empty b { font: 600 18px var(--font-display); }
.adm-empty span { max-width: 380px; font: 600 13.5px/1.45 var(--font); color: var(--muted); }
.adm-input { font: 700 15px/1.2 var(--font); padding: 10px 12px; }
.adm-ta { resize: vertical; min-height: 72px; line-height: 1.45; }
.adm-select { width: auto; padding: 9px 12px; font: 700 14.5px/1.2 var(--font); cursor: pointer; }
.adm-select option { background: #1d1550; color: #fff; }
.adm-main .btn.busy { opacity: .6; pointer-events: none; }
.adm-main .btn.armed { background: linear-gradient(180deg, #ff8a95, var(--danger)); color: #fff; animation: admShake .32s ease; }
@keyframes admShake { 25% { transform: translateX(-3px); } 50% { transform: translateX(3px); } 75% { transform: translateX(-2px); } }

.adm-role { flex: none; display: inline-flex; align-items: center; height: 19px; padding: 0 6px; border-radius: 6px; font: 900 10px/1 var(--font); letter-spacing: .7px; text-transform: uppercase; }
.adm-role.r-admin { background: linear-gradient(135deg, #ff5a6e, #ffb347); color: #2a0b12; }
.adm-role.r-mod { background: #3dd6c6; color: #052a27; }
.adm-pill { display: inline-flex; align-items: center; gap: 4px; height: 23px; padding: 0 9px; border-radius: 12px; background: rgba(255, 255, 255, .08); font: 800 11.5px/1 var(--font); white-space: nowrap; color: var(--adm-ink2); }
.adm-pill.lock { background: rgba(255, 77, 94, .22); color: #ffc7cc; }
.adm-pill.ban { background: rgba(255, 140, 60, .2); color: #ffd3ad; }
.adm-pill.mute { background: rgba(180, 160, 255, .2); color: #e2d9ff; }
.adm-pill.pub { background: rgba(51, 209, 122, .16); color: #aef2cb; }
.adm-pill.ph-play { background: rgba(61, 139, 255, .24); color: #d3e3ff; }
.adm-pill.ph-mg { background: rgba(255, 138, 216, .2); color: #ffd6f2; }
.adm-pill.ph-end { background: rgba(255, 201, 51, .18); color: #ffeaa8; }
.adm-pills { display: flex; flex-wrap: wrap; gap: 6px; }
.adm-pills:empty { display: none; }

.adm-segs { display: flex; flex-wrap: wrap; gap: 4px; }
.adm-seg { height: 32px; padding: 0 12px; border: 2px solid rgba(255, 255, 255, .1); border-radius: 10px; background: transparent; color: var(--adm-ink2); font: 800 13px/1 var(--font); cursor: pointer; }
.adm-seg:hover { background: rgba(255, 255, 255, .07); }
.adm-seg.on { border-color: var(--primary); background: rgba(255, 201, 51, .15); color: #fff; }
.adm-qr { display: flex; flex-wrap: wrap; gap: 5px; }
.adm-qchip { height: 26px; padding: 0 9px; border: 1px solid rgba(255, 255, 255, .14); border-radius: 13px; background: transparent; color: var(--adm-ink2); font: 700 12px/1 var(--font); cursor: pointer; }
.adm-qchip:hover:not(:disabled) { background: rgba(255, 255, 255, .09); color: #fff; }
.adm-qchip:disabled { opacity: .4; cursor: default; }
.adm-reason { display: flex; flex-direction: column; gap: 6px; }
.adm-switch { position: relative; flex: none; width: 54px; height: 32px; border: none; border-radius: 16px; background: rgba(255, 255, 255, .16); cursor: pointer; transition: background .18s; }
.adm-switch i { position: absolute; top: 4px; left: 4px; width: 24px; height: 24px; border-radius: 50%; background: #fff; box-shadow: 0 2px 4px rgba(0, 0, 0, .3); transition: transform .2s cubic-bezier(.3, 1.4, .5, 1); }
.adm-switch.on { background: var(--good); }
.adm-switch.on i { transform: translateX(22px); }
.adm-switch.busy { opacity: .6; }
.adm-check { display: flex; align-items: center; gap: 9px; margin-top: 10px; font: 700 13.5px/1.35 var(--font); color: var(--adm-ink2); cursor: pointer; }
.adm-check input { width: 18px; height: 18px; flex: none; accent-color: var(--primary); }

/* ---------- Übersicht ---------- */
.adm-live { display: grid; grid-template-columns: 1.35fr repeat(3, minmax(0, 1fr)); gap: 10px; }
.adm-live-i { display: flex; align-items: center; gap: 12px; padding: 14px 16px; border-radius: 16px; background: var(--adm-card); border: 1px solid var(--adm-line); min-width: 0; }
.adm-live-i.main { background: linear-gradient(120deg, rgba(51, 209, 122, .14), rgba(51, 209, 122, .03)); border-color: rgba(51, 209, 122, .3); }
.adm-live-i .ic { font-size: 22px; }
.adm-live-i b { display: block; font: 600 26px/1.05 var(--font-display); font-variant-numeric: tabular-nums; }
.adm-live-i small { display: block; margin-top: 2px; font: 700 12px/1.3 var(--font); color: var(--muted); }
.adm-tiles { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.adm-tile {
  position: relative; overflow: hidden; display: flex; flex-direction: column; align-items: flex-start; gap: 4px; min-height: 108px; padding: 14px 16px;
  border-radius: 16px; background: var(--adm-card); border: 1px solid var(--adm-line); color: #fff; font: inherit; text-align: left;
}
.adm-tile[style]::before { content: ''; position: absolute; left: 0; top: 14px; bottom: 14px; width: 3px; border-radius: 0 3px 3px 0; background: var(--ac); }
.adm-tile.click { cursor: pointer; transition: background .14s, transform .14s, border-color .14s; }
.adm-tile.click:hover { background: rgba(255, 255, 255, .09); border-color: rgba(255, 255, 255, .18); transform: translateY(-1px); }
.adm-tile-l { font: 800 11.5px/1.2 var(--font); letter-spacing: .6px; text-transform: uppercase; color: var(--muted); }
.adm-tile-v { font: 600 32px/1.05 var(--font-display); font-variant-numeric: tabular-nums; }
.adm-tile-s { font: 700 12.5px/1.35 var(--font); color: var(--muted); }
.adm-delta { font: 800 12px/1.2 var(--font); font-variant-numeric: tabular-nums; }
.adm-delta.up { color: #8ff2b8; }
.adm-delta.down { color: #ffb8c0; }
.adm-delta.flat { color: var(--muted); }
.adm-mini { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.adm-mini .adm-tile { min-height: 0; padding: 12px 13px; }
.adm-mini .adm-tile-v { font-size: 25px; }

/* Diagramme: dünne Balken, 2px Abstand, gerundete Enden an der Grundlinie, zurückhaltendes Raster */
.adm-ch-h { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 40px; margin-bottom: 8px; }
.adm-ch-h h4 { margin: 0; font: 600 16px/1.2 var(--font-display); }
.adm-ch-h small { font: 700 12px var(--font); color: var(--muted); }
.adm-plot { position: relative; height: 168px; margin: 8px 0 0 36px; }
.adm-grid { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: space-between; pointer-events: none; }
.adm-gl { position: relative; height: 0; border-top: 1px dashed rgba(255, 255, 255, .09); }
.adm-gl:last-child { border-top: 1px solid rgba(255, 255, 255, .22); }
.adm-gl span { position: absolute; right: calc(100% + 8px); top: -8px; font: 700 11px/1 var(--font); color: var(--muted); font-variant-numeric: tabular-nums; white-space: nowrap; }
.adm-bars { position: absolute; inset: 0; display: grid; grid-template-columns: repeat(30, minmax(0, 1fr)); gap: 2px; align-items: end; }
.adm-bar { height: 100%; display: flex; align-items: flex-end; padding: 0; border: none; border-radius: 4px; background: transparent; cursor: pointer; }
.adm-bar i { display: block; width: 100%; border-radius: 4px 4px 1px 1px; background: var(--c); opacity: .78; transition: opacity .12s, filter .12s; }
.adm-bar.today i { opacity: 1; }
.adm-bar:hover, .adm-bar:focus-visible { background: rgba(255, 255, 255, .06); }
.adm-bar:hover i, .adm-bar:focus-visible i { opacity: 1; filter: brightness(1.12); }
.adm-tip {
  position: absolute; top: -6px; left: 50%; z-index: 2; transform: translate(-50%, -100%); display: flex; flex-direction: column; gap: 1px; padding: 6px 10px;
  border-radius: 10px; background: #0f0a2e; border: 1px solid rgba(255, 255, 255, .16); box-shadow: 0 6px 16px rgba(0, 0, 0, .4);
  white-space: nowrap; pointer-events: none; opacity: 0; transition: opacity .1s;
}
.adm-tip.on { opacity: 1; }
.adm-tip b { font: 800 13px/1.2 var(--font); }
.adm-tip span { font: 700 11.5px/1.2 var(--font); color: var(--muted); }
.adm-xl { display: grid; grid-template-columns: repeat(30, minmax(0, 1fr)); gap: 2px; margin: 7px 0 0 36px; }
.adm-xl span { justify-self: center; font: 700 11px/1 var(--font); color: var(--muted); white-space: nowrap; }
.adm-chart-foot { display: flex; justify-content: space-between; gap: 10px; margin-top: 12px; padding-top: 10px; border-top: 1px solid rgba(255, 255, 255, .06); font: 700 12px var(--font); color: var(--muted); font-variant-numeric: tabular-nums; }
.adm-hbars { display: flex; flex-direction: column; gap: 9px; }
.adm-hbar { display: grid; grid-template-columns: minmax(0, 160px) minmax(0, 1fr) auto; align-items: center; gap: 10px; font: 700 13.5px/1.2 var(--font); }
.adm-hbar-n { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.adm-hbar-t { height: 10px; border-radius: 5px; background: rgba(255, 255, 255, .06); }
.adm-hbar-t i { display: block; height: 100%; min-width: 4px; border-radius: 5px; background: #b49bff; }
.adm-hbar b { min-width: 34px; text-align: right; font-variant-numeric: tabular-nums; }

/* ---------- Spieler ---------- */
.adm-toolbar { display: flex; gap: 10px; }
.adm-search { flex: 1; min-width: 0; }
.adm-filters { display: flex; flex-direction: column; gap: 8px; }
.adm-frow { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.adm-fl { flex: none; width: 54px; font: 800 11.5px/1 var(--font); letter-spacing: .6px; text-transform: uppercase; color: var(--muted); }
.adm-listhead { display: flex; justify-content: space-between; align-items: center; margin-bottom: -10px; }
.adm-ulist { display: flex; flex-direction: column; gap: 6px; transition: opacity .15s; }
.adm-ulist.dim { opacity: .5; }
.adm-urow {
  display: grid; grid-template-columns: auto minmax(0, 1fr) auto auto; align-items: center; gap: 12px; padding: 9px 14px 9px 10px;
  border-radius: 14px; background: var(--adm-card); border: 1px solid var(--adm-line); color: #fff; font: inherit; text-align: left; cursor: pointer; transition: background .12s;
}
.adm-urow:hover { background: rgba(255, 255, 255, .09); }
.adm-av { position: relative; display: block; flex: none; border-radius: 50%; background: radial-gradient(circle at 50% 40%, rgba(255, 255, 255, .16), rgba(0, 0, 0, .2)); }
.adm-av.on::after { content: ''; position: absolute; right: 0; bottom: 1px; width: 11px; height: 11px; border-radius: 50%; background: var(--good); box-shadow: 0 0 0 2.5px #211959; }
.adm-av.big.on::after { width: 16px; height: 16px; right: 3px; bottom: 3px; box-shadow: 0 0 0 3px #2b2160; }
.adm-un { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.adm-un-t { display: flex; align-items: center; gap: 7px; min-width: 0; }
.adm-un-t b { font: 600 15.5px/1.2 var(--font-display); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.adm-un small { font: 700 12.5px/1.2 var(--font); color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.adm-uflags { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 4px; }
.adm-umeta { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; min-width: 150px; font: 700 12.5px/1.25 var(--font); color: var(--adm-ink2); }
.adm-umeta small { font: 700 11.5px var(--font); color: var(--muted); }
.adm-on { font-style: normal; color: #8ff2b8; }
.adm-act30 { align-self: center; font: 700 11.5px var(--font); color: var(--muted); white-space: nowrap; }
.adm-pager { display: flex; align-items: center; justify-content: center; gap: 12px; font: 700 13px var(--font); color: var(--muted); }
.adm-pager:empty { display: none; }

/* Detail */
.adm-back { align-self: flex-start; }
.adm-uhead { display: flex; align-items: center; gap: 18px; padding: 18px 20px; background: linear-gradient(120deg, rgba(255, 201, 51, .1), rgba(255, 255, 255, .04) 60%); }
.adm-uhead-t { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.adm-uname { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; }
.adm-uname h2 { margin: 0; font: 600 26px/1.1 var(--font-display); overflow-wrap: anywhere; }
.adm-uhead-t > small { font: 700 13px var(--font); color: var(--muted); }
.adm-uwhere { font: 700 13.5px/1.3 var(--font); color: var(--adm-ink2); }
.adm-uwhere.on { color: #aef2cb; }
.adm-uhead-a { align-self: flex-start; display: flex; gap: 6px; }
.adm-facts { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 8px; }
.adm-fact { display: flex; flex-direction: column; gap: 2px; padding: 11px 13px; border-radius: 14px; background: var(--adm-card); border: 1px solid var(--adm-line); min-width: 0; }
.adm-fact span { font: 800 11px/1.2 var(--font); letter-spacing: .5px; text-transform: uppercase; color: var(--muted); }
.adm-fact b { font: 600 17px/1.25 var(--font-display); font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.adm-fact small { font: 700 12px/1.3 var(--font); color: var(--muted); }
.adm-days-w { display: flex; align-items: center; gap: 12px; margin-top: 2px; }
.adm-days-w .adm-fl { width: auto; }
.adm-days { flex: 1; max-width: 560px; display: grid; grid-template-columns: repeat(28, minmax(0, 1fr)); gap: 3px; }
.adm-days i { aspect-ratio: 1; border-radius: 3px; background: rgba(111, 211, 255, var(--o)); }
.adm-days i.z { background: rgba(255, 255, 255, .06); }
.adm-bio p { margin: 0; font: 600 14px/1.5 var(--font); white-space: pre-wrap; overflow-wrap: anywhere; }
.adm-acts { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 10px; }
.adm-act { display: flex; flex-direction: column; gap: 9px; padding: 15px; border-radius: 18px; background: var(--adm-card); border: 1px solid var(--adm-line); }
.adm-act h4 { margin: 0; font: 600 15.5px/1.2 var(--font-display); }
.adm-pwout { display: flex; flex-direction: column; gap: 6px; }
.adm-pw { display: flex; align-items: center; gap: 8px; padding: 7px 7px 7px 12px; border-radius: 12px; background: rgba(51, 209, 122, .12); border: 1px dashed rgba(126, 240, 174, .55); }
.adm-pw code { flex: 1; min-width: 0; font: 700 17px/1.2 ui-monospace, Consolas, monospace; letter-spacing: 1px; -webkit-user-select: all; user-select: all; overflow-wrap: anywhere; }
.adm-lockinfo { display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; border-radius: 12px; background: rgba(255, 77, 94, .14); border: 1px solid rgba(255, 77, 94, .35); }
.adm-lockinfo b { font: 800 14px/1.3 var(--font); color: #ffc7cc; }
.adm-lockinfo small { font: 700 12.5px/1.35 var(--font); color: var(--adm-ink2); }
.adm-rolecard { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.adm-rolecard > div { display: flex; flex-direction: column; gap: 3px; }
.adm-rolecard b { font: 600 16px var(--font-display); }
.adm-rolecard small { font: 600 12.5px/1.45 var(--font); color: var(--muted); }
.adm-dangercard { background: rgba(255, 77, 94, .05); border-color: rgba(255, 77, 94, .28); }
.adm-danger { display: flex; flex-direction: column; gap: 8px; }
.adm-danger-open { color: #ffb8c0; }
.adm-loglist { display: flex; flex-direction: column; }
.adm-lrow { display: grid; grid-template-columns: 28px minmax(0, 1fr) auto; gap: 10px; align-items: start; padding: 9px 4px; border-bottom: 1px solid rgba(255, 255, 255, .06); }
.adm-lrow:last-child { border-bottom: none; }
.adm-lic { font-size: 16px; line-height: 1.3; text-align: center; }
.adm-lt { display: flex; flex-direction: column; gap: 2px; font: 600 13.5px/1.4 var(--font); min-width: 0; }
.adm-lt small { font: 600 12.5px/1.4 var(--font); color: var(--muted); overflow-wrap: anywhere; }
.adm-lrow time { font: 700 12px/1.4 var(--font); color: var(--muted); white-space: nowrap; }
.adm-lrow.open .adm-lt b { color: #ffc7cc; }

/* ---------- Räume & Inseln ---------- */
.adm-rooms { display: flex; flex-direction: column; gap: 8px; }
.adm-room { display: flex; flex-direction: column; gap: 10px; padding: 12px 14px; }
.adm-room-h { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.adm-room-h > small { font: 700 12px var(--font); color: var(--muted); }
.adm-code { padding: 3px 8px; border-radius: 8px; background: rgba(0, 0, 0, .28); font: 800 15px/1.2 ui-monospace, Consolas, monospace; letter-spacing: 2px; }
.adm-room-more { width: 34px; padding: 6px 0; }
.adm-room-more.on { background: rgba(255, 255, 255, .2); }
.adm-room-p { display: flex; flex-wrap: wrap; gap: 6px; }
.adm-pchip { display: inline-flex; align-items: center; height: 27px; padding: 0 10px; border-radius: 14px; background: rgba(255, 255, 255, .08); font: 700 12.5px/1 var(--font); }
.adm-pchip.off { opacity: .45; }
.adm-pchip em { margin-left: 4px; font-style: normal; color: var(--muted); }
.adm-pchip.bot { background: transparent; border: 1px dashed rgba(255, 255, 255, .2); color: var(--muted); }
.adm-room-tools { display: flex; gap: 8px; }
.adm-room-tools .adm-input { flex: 1; min-width: 0; }
.adm-isles { display: flex; flex-wrap: wrap; gap: 8px; }
.adm-isle { display: flex; align-items: center; gap: 8px; padding: 10px 14px; border-radius: 14px; background: var(--adm-card); border: 1px solid var(--adm-line); font: 700 14px var(--font); }
.adm-isle small { color: var(--muted); font: 700 12.5px var(--font); }

/* ---------- Server ---------- */
.adm-curnotice { display: flex; align-items: center; justify-content: space-between; gap: 14px; background: rgba(61, 139, 255, .1); border-color: rgba(125, 179, 255, .4); }
.adm-curnotice.warn { background: rgba(255, 140, 60, .1); border-color: rgba(255, 160, 90, .45); }
.adm-curnotice small { font: 800 12px var(--font); color: var(--muted); }
.adm-curnotice p { margin: 4px 0 0; font: 700 14.5px/1.45 var(--font); overflow-wrap: anywhere; }
.adm-setrow { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.adm-setrow > div { display: flex; flex-direction: column; gap: 3px; }
.adm-setrow b { font: 600 16px var(--font-display); }
.adm-setrow small { font: 600 12.5px/1.45 var(--font); color: var(--muted); }

/* Konto-Menü: Eintrag für Admins */
.accw-mi.admin .ai { color: var(--primary); }

/* ---------- Durchsagen an alle (überall) ---------- */
.admn-stack {
  position: fixed; top: max(10px, env(safe-area-inset-top)); left: 50%; z-index: 59; width: min(620px, calc(100vw - 24px)); transform: translateX(-50%);
  display: flex; flex-direction: column; gap: 8px; pointer-events: none;
}
.admn-stack:empty { display: none; }
.admn-banner, .admn-flash {
  pointer-events: auto; display: flex; align-items: center; gap: 12px; padding: 10px 10px 10px 14px;
  border-radius: 16px; background: linear-gradient(100deg, rgba(61, 139, 255, .96), rgba(98, 74, 214, .96)); border: 1px solid rgba(255, 255, 255, .28);
  box-shadow: 0 12px 30px rgba(8, 4, 30, .5); color: #fff; font-family: var(--font); animation: admnIn .32s cubic-bezier(.2, 1.3, .4, 1) both;
}
.admn-flash { cursor: pointer; }
.admn-banner.warn, .admn-flash.warn { background: linear-gradient(100deg, rgba(255, 150, 40, .97), rgba(222, 70, 96, .96)); }
.admn-banner.out, .admn-flash.out { animation: admnOut .2s ease forwards; }
@keyframes admnIn { from { opacity: 0; transform: translateY(-14px); } to { opacity: 1; transform: none; } }
@keyframes admnOut { to { opacity: 0; transform: translateY(-10px); } }
.admn-ic { flex: none; font-size: 22px; }
.admn-t { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.admn-t small { font: 800 10.5px/1.3 var(--font); letter-spacing: .7px; text-transform: uppercase; opacity: .85; }
.admn-t span { font: 700 14.5px/1.35 var(--font); overflow-wrap: anywhere; text-shadow: 0 1px 0 rgba(0, 0, 0, .2); }
.admn-x { flex: none; width: 32px; height: 32px; border: none; border-radius: 10px; background: rgba(0, 0, 0, .2); color: #fff; font-size: 13px; cursor: pointer; }
.admn-x:hover { background: rgba(0, 0, 0, .32); }
.admn-dm-back { position: fixed; inset: 0; z-index: 61; display: grid; place-items: center; padding: 16px; background: rgba(8, 4, 30, .58); animation: admFade .18s ease both; }
.admn-dm-back.out { animation: admFade .16s ease reverse forwards; }
.admn-dm {
  width: min(400px, 100%); display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 24px 22px 20px; text-align: center; outline: none;
  border-radius: 22px; background: #261c66; border: 1px solid rgba(255, 255, 255, .16); box-shadow: var(--shadow); color: #fff; font-family: var(--font); animation: admPop .24s cubic-bezier(.2, 1.3, .4, 1) both;
}
.admn-dm-ic { width: 56px; height: 56px; display: grid; place-items: center; border-radius: 50%; font-size: 28px; background: rgba(255, 201, 51, .16); box-shadow: inset 0 0 0 1px rgba(255, 201, 51, .35); }
.admn-dm small { font: 800 11px/1.3 var(--font); letter-spacing: .8px; text-transform: uppercase; color: var(--primary); }
.admn-dm p { margin: 4px 0 0; font: 700 16px/1.5 var(--font); white-space: pre-wrap; overflow-wrap: anywhere; -webkit-user-select: text; user-select: text; }
.admn-dm-by { font: 700 13px var(--font); color: var(--muted); }
.admn-dm .btn { margin-top: 10px; min-width: 160px; }

/* ---------- Handy ---------- */
@media (max-width: 980px) {
  .adm-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .adm-live { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .adm-two { grid-template-columns: minmax(0, 1fr); }
  .adm-umeta { min-width: 0; }
}
@media (max-width: 760px) {
  .adm { padding: 0; }
  .adm-shell { width: 100%; height: 100%; border-radius: 0; border: none; grid-template-columns: minmax(0, 1fr); grid-template-rows: auto minmax(0, 1fr); }
  .adm-side { flex-direction: row; align-items: center; padding: max(8px, env(safe-area-inset-top)) 56px 8px 10px; border-right: none; border-bottom: 1px solid var(--adm-line); overflow-x: auto; scrollbar-width: none; }
  .adm-side::-webkit-scrollbar { display: none; }
  .adm-brand, .adm-side-foot { display: none; }
  .adm-nav { flex-direction: row; gap: 4px; }
  .adm-navb { height: 38px; padding: 0 11px; gap: 7px; font-size: 14px; white-space: nowrap; }
  .adm-navb.on { box-shadow: inset 0 -3px 0 var(--primary); }
  .adm-x { top: max(8px, env(safe-area-inset-top)); right: 0; width: 52px; height: 38px; border-radius: 12px 0 0 12px; background: #2a2068; box-shadow: -14px 0 14px -2px #1d1650; }
  .adm-main { padding: 18px 14px max(32px, env(safe-area-inset-bottom)); }
  .adm-vh { padding-right: 0; }
  .adm-vh h2 { font-size: 24px; }
  .adm-tile { min-height: 96px; padding: 12px 13px; }
  .adm-tile-v { font-size: 26px; }
  .adm-mini { grid-template-columns: minmax(0, 1fr); }
  .adm-urow { grid-template-columns: auto minmax(0, 1fr) auto; gap: 10px; }
  .adm-umeta { display: none; }
  .adm-uhead { flex-wrap: wrap; padding: 16px; }
  .adm-uname h2 { font-size: 22px; }
  .adm-toolbar { flex-wrap: wrap; }
  .adm-search { flex: 1 1 100%; }
  .adm-plot, .adm-xl { margin-left: 30px; }
  .adm-hbar { grid-template-columns: minmax(0, 118px) minmax(0, 1fr) auto; }
  .adm-fl { width: 100%; }
  .adm-days-w { flex-direction: column; align-items: stretch; gap: 6px; }
  .adm-days { max-width: none; }
  .adm-rolecard, .adm-setrow, .adm-curnotice { flex-wrap: wrap; }
  .adm-acts { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 420px) {
  .adm-live-i b { font-size: 22px; }
  .adm-live-i { padding: 12px; gap: 9px; }
  .adm-xl span { font-size: 10px; }
}
@media (prefers-reduced-motion: reduce) {
  .adm, .adm-shell, .admn-banner, .admn-flash, .admn-dm, .admn-dm-back { animation: none; }
  .adm-livedot { animation: none; }
}

/* ===== seo.css ===== */
/* =====================================================================
   SEO & Startseite – Agent seo (docs/seo.md)
   - Info-Bereich unter dem Startbildschirm (#info in index.html; Minispiele, FAQ und Zahlen rendert server/seo.js)
   - Seiten-Zoom: erlaubt (Barrierefreiheit), aber nicht mitten im Spiel
   - <noscript>-Hinweis, kurzes Verbergen beim Sprachwechsel (html.i18n-wait)
   ===================================================================== */

/* Pinch- und Doppeltipp-Zoom nur außerhalb der Spiel-Bildschirme. Eigene Gesten (Joystick, Kamera, Canvas) setzen
   weiterhin touch-action: none; Scroll-Bereiche innerhalb der Bildschirme scrollen normal weiter. */
#screen-mg, #screen-game { touch-action: pan-x pan-y; }

/* Weicht die Sprache des Besuchers von der ausgelieferten Seite ab, bis zur Übersetzung verbergen (Notfall: 1,5 s) */
html.i18n-wait #screen-home { visibility: hidden; animation: siReveal 0s 1.5s forwards; }
@keyframes siReveal { to { visibility: visible; } }

/* Englischer Logo-Untertitel („Board Game & Fishing Island“) ist länger – auf schmalen Handys einzeilig halten */
@media (max-width: 520px) { html[lang="en"] .logo-bottom { font-size: clamp(16px, 5vw, 22px); letter-spacing: 1.5px; } }

.noscript {
  position: fixed; z-index: 1000; left: 12px; right: 12px; top: 12px; padding: 12px 16px; border-radius: 14px;
  background: linear-gradient(180deg, #ff6b78, var(--danger)); color: #fff; font: 700 15px/1.45 var(--font); text-align: center;
  box-shadow: var(--shadow);
}

/* ---------- Grundgerüst ---------- */
.si {
  max-width: 1180px; margin: 0 auto; padding: 0 20px;
  user-select: text; -webkit-user-select: text;
}
.si-sec { padding: 64px 0 0; scroll-margin-top: 16px; }
.si-kicker {
  display: inline-flex; align-items: center; gap: 8px; margin-bottom: 8px; color: var(--lb-pink);
  font-size: 12px; font-weight: 800; letter-spacing: 1.6px; text-transform: uppercase;
}
.si-kicker::before { content: ''; width: 18px; height: 3px; border-radius: 2px; background: currentColor; opacity: .7; }
.si-h {
  margin: 0 0 14px; font-family: var(--font-display); font-weight: 700; font-size: clamp(28px, 4vw, 42px); line-height: 1.1;
  letter-spacing: .2px; text-shadow: 0 4px 0 rgba(122, 42, 154, .55);
}
.si-sub { max-width: 720px; margin: -2px 0 22px; color: var(--muted); font-size: 16px; line-height: 1.55; }
.si-count {
  display: inline-grid; place-items: center; min-width: 1.6em; padding: 0 .3em; margin-left: 4px; border-radius: 14px; vertical-align: .12em;
  background: linear-gradient(180deg, #ffe066, var(--primary)); color: var(--lb-ink); font-size: .62em; line-height: 1.5; text-shadow: none;
  box-shadow: 0 4px 0 rgba(0, 0, 0, .25);
}

/* Hinweis „Mehr über REELPARTY“ am Ende des Startbildschirms */
.si-cue {
  display: flex; align-items: center; gap: 10px; margin: -16px auto 0; padding: 8px 10px 8px 18px; border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, .14); background: rgba(255, 255, 255, .06); color: var(--muted); cursor: pointer;
  font: 800 12.5px var(--font); letter-spacing: 1.3px; text-transform: uppercase; transition: color .15s, background .15s, border-color .15s;
}
.si-cue:hover, .si-cue:focus-visible { color: #fff; background: rgba(255, 255, 255, .1); border-color: rgba(255, 201, 51, .5); outline: none; }
.si-cue i { position: relative; width: 22px; height: 22px; border-radius: 50%; background: var(--primary); box-shadow: 0 2px 0 rgba(0, 0, 0, .25); animation: siBob 2.4s ease-in-out infinite; }
.si-cue i::after {
  content: ''; position: absolute; left: 50%; top: 45%; width: 6px; height: 6px; margin: -4px 0 0 -3.5px;
  border: solid var(--lb-ink); border-width: 0 2.5px 2.5px 0; transform: rotate(45deg);
}
@keyframes siBob { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(3px); } }

/* ---------- Was ist REELPARTY? ---------- */
.si-what { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); column-gap: 40px; align-items: center; }
.si-what > :not(.si-stats) { grid-column: 1; }
.si-what > .si-kicker { justify-self: start; }
.si-lead { margin: 0; font-size: 18px; line-height: 1.6; color: #e9e4ff; }
.si-chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 20px 0 0; padding: 0; list-style: none; }
.si-chips li {
  display: inline-flex; align-items: center; gap: 7px; padding: 6px 13px 6px 7px; border-radius: 999px; font-size: 13.5px; font-weight: 800;
  color: #dff9ea; background: rgba(51, 209, 122, .12); border: 1px solid rgba(51, 209, 122, .35);
}
.si-chips li::before {
  content: '✓'; display: grid; place-items: center; width: 19px; height: 19px; border-radius: 50%;
  background: var(--good); color: #0f3320; font-size: 11px; font-weight: 900;
}
.si-stats { grid-column: 2; grid-row: 1 / span 4; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.si-stat {
  position: relative; overflow: hidden; padding: 20px 18px 16px; border-radius: 20px;
  background: linear-gradient(180deg, rgba(255, 255, 255, .1), rgba(255, 255, 255, .035)); border: 1px solid rgba(255, 255, 255, .12);
  box-shadow: 0 6px 0 rgba(8, 4, 30, .35);
}
.si-stat::before { content: ''; position: absolute; left: 0; right: 0; top: 0; height: 4px; background: var(--c); }
.si-stat::after {
  content: ''; position: absolute; right: -18px; bottom: -18px; width: 74px; height: 74px; border-radius: 50%;
  background: radial-gradient(closest-side, var(--c), transparent); opacity: .22;
}
.si-stat.s1 { --c: #ffc933; }
.si-stat.s2 { --c: #ff6bcb; }
.si-stat.s3 { --c: #33d17a; }
.si-stat.s4 { --c: #2fd3e0; }
.si-stat b { display: block; font: 700 clamp(36px, 4.4vw, 52px)/1 var(--font-display); color: var(--c); text-shadow: 0 3px 0 rgba(8, 4, 30, .45); }
.si-stat span { display: block; margin-top: 8px; color: var(--muted); font-size: 12px; font-weight: 800; letter-spacing: 1.1px; text-transform: uppercase; line-height: 1.3; }

/* ---------- Spielmodi ---------- */
.si-modes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; margin-top: 8px; }
.si-mode {
  display: flex; flex-direction: column; overflow: hidden; border-radius: 22px;
  background: linear-gradient(180deg, #2a2064, #1d1650); border: 1px solid rgba(255, 255, 255, .14); box-shadow: var(--shadow);
}
.si-mode-art { position: relative; aspect-ratio: 2 / 1; overflow: hidden; background: #241a5c; }
.si-mode-art img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s ease; }
.si-mode:hover .si-mode-art img { transform: scale(1.04); }
.si-mode-art::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 50%, #2a2064 99%); pointer-events: none; }
.si-mode-body { position: relative; padding: 0 22px 22px; margin-top: -10px; }
.si-mode h3 { display: flex; align-items: center; gap: 10px; margin: 0 0 8px; font: 600 25px var(--font-display); }
.si-mode p { margin: 0; color: var(--muted); font-size: 15px; line-height: 1.55; }
.si-facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 16px 0 0; padding: 0; list-style: none; }
.si-facts li { display: flex; align-items: baseline; gap: 8px; min-width: 0; padding: 9px 12px; border-radius: 12px; background: var(--lb-sunk); color: #ddd8ff; font-size: 13.5px; font-weight: 700; }
.si-facts b { flex: none; font: 700 18px var(--font-display); color: var(--primary); }

/* Minispiel-Wand (Symbole aus META) */
.si-wall { display: grid; place-items: center; background: radial-gradient(circle at 25% 15%, #5a3fc4, transparent 55%), radial-gradient(circle at 85% 95%, #8a2a9a, transparent 55%), #241a5c; }
.si-wall-in { display: grid; grid-template-columns: repeat(10, 52px); gap: 9px; transform: rotate(-9deg); }
.si-wall-in i {
  display: grid; place-items: center; width: 52px; height: 52px; border-radius: 15px; font-style: normal; font-size: 27px;
  background: rgba(255, 255, 255, .09); border: 1px solid rgba(255, 255, 255, .12); box-shadow: inset 0 -3px 0 rgba(8, 4, 30, .3);
  animation: siPop 5s ease-in-out var(--d) infinite;
}
.si-wall-in i:nth-child(3n) { background: rgba(255, 201, 51, .16); }
.si-wall-in i:nth-child(4n+1) { background: rgba(61, 139, 255, .16); }
.si-wall-in i:nth-child(7n+2) { background: rgba(255, 107, 203, .16); }
@keyframes siPop { 0%, 80%, 100% { transform: none; } 88% { transform: translateY(-6px) rotate(-6deg); } }

/* So läuft eine Partie */
.si-steps { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin: 18px 0 0; padding: 0; list-style: none; counter-reset: st; }
.si-steps li {
  position: relative; counter-increment: st; display: grid; grid-template-columns: auto minmax(0, 1fr); grid-template-areas: 'i b' 'i s';
  column-gap: 12px; align-items: center; padding: 14px; border-radius: 16px; background: rgba(255, 255, 255, .045); border: 1px solid rgba(255, 255, 255, .08);
}
.si-steps li:not(:last-child)::after {
  content: ''; position: absolute; right: -11px; top: 50%; z-index: 1; width: 8px; height: 8px; margin-top: -4px;
  border: solid rgba(255, 201, 51, .7); border-width: 2.5px 2.5px 0 0; transform: rotate(45deg);
}
.si-steps i { grid-area: i; position: relative; display: grid; place-items: center; width: 46px; height: 46px; border-radius: 14px; background: rgba(255, 255, 255, .08); font-style: normal; font-size: 22px; }
.si-steps i::after {
  content: counter(st); position: absolute; top: -7px; left: -7px; width: 21px; height: 21px; border-radius: 50%;
  background: var(--primary); color: var(--lb-ink); font: 700 12px/21px var(--font-display); text-align: center; box-shadow: 0 2px 0 rgba(0, 0, 0, .25);
}
.si-steps b { grid-area: b; font: 600 16px var(--font-display); }
.si-steps span { grid-area: s; margin-top: 2px; color: var(--muted); font-size: 12.5px; line-height: 1.35; }

/* ---------- Alle Minispiele ---------- */
.si-mgs { display: grid; grid-template-columns: repeat(auto-fill, minmax(262px, 1fr)); gap: 10px; margin: 0; padding: 0; list-style: none; }
.si-mg {
  display: flex; align-items: flex-start; gap: 12px; min-width: 0; padding: 12px 14px 12px 12px; border-radius: 16px;
  background: rgba(255, 255, 255, .05); border: 1px solid rgba(255, 255, 255, .08);
  transition: transform .2s var(--lb-ease), background .2s, border-color .2s;
}
.si-mg:hover { transform: translateY(-2px); background: rgba(255, 255, 255, .08); border-color: rgba(255, 255, 255, .2); border-color: color-mix(in srgb, var(--hue) 60%, transparent); }
.si-mg-ic {
  flex: none; display: grid; place-items: center; width: 48px; height: 48px; border-radius: 14px; font-size: 26px;
  background: rgba(255, 255, 255, .08); background: color-mix(in srgb, var(--hue) 24%, rgba(255, 255, 255, .04));
  box-shadow: inset 0 -3px 0 rgba(8, 4, 30, .3); box-shadow: inset 0 -3px 0 color-mix(in srgb, var(--hue) 50%, transparent);
}
.si-mg-tx { min-width: 0; }
.si-mg h3 { margin: 2px 0 3px; font: 600 16.5px/1.25 var(--font-display); }
.si-mg p { margin: 0; color: var(--muted); font-size: 13px; line-height: 1.42; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.si-more { display: none; }

/* ---------- Angelwelt ---------- */
.si-fish-card {
  display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); overflow: hidden; border-radius: 26px;
  background: linear-gradient(135deg, #154a78, #1d1650 62%); border: 1px solid rgba(125, 179, 255, .28); box-shadow: var(--shadow);
}
.si-fish-art { position: relative; min-height: 340px; background: #12406b; }
.si-fish-art img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.si-fish-art::after { content: ''; position: absolute; inset: 0; background: linear-gradient(90deg, transparent 62%, rgba(24, 46, 98, .95)); pointer-events: none; }
.si-fish-body { padding: 32px 34px 32px 22px; }
.si-fish .si-kicker { color: #9fdcff; }
.si-fish-body > p { margin: 0; color: #dcecff; font-size: 15.5px; line-height: 1.6; }
.si-list { display: grid; gap: 9px; margin: 18px 0 22px; padding: 0; list-style: none; }
.si-list li { display: flex; align-items: center; gap: 12px; color: #e4f2ff; font-size: 14.5px; font-weight: 700; line-height: 1.35; }
.si-list i { flex: none; display: grid; place-items: center; width: 36px; height: 36px; border-radius: 11px; background: rgba(125, 179, 255, .16); font-style: normal; font-size: 18px; }
.si-list b { color: #9fdcff; font: 700 17px var(--font-display); }

/* ---------- Konto oder Gast ---------- */
.si-acc { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; }
.si-acc-card { padding: 22px 22px 24px; border-radius: 22px; background: var(--card); border: 1px solid var(--card-border); box-shadow: var(--shadow); }
.si-acc-card.is-acc { background: linear-gradient(160deg, rgba(255, 201, 51, .16), rgba(255, 107, 203, .1) 55%, rgba(255, 255, 255, .05)); border-color: rgba(255, 201, 51, .4); }
.si-acc-top { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
.si-acc-top i { flex: none; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 14px; background: rgba(255, 255, 255, .1); font-style: normal; font-size: 22px; }
.si-acc-top h3 { flex: 1; margin: 0; font: 600 22px var(--font-display); }
.si-tag { padding: 4px 10px; border-radius: 999px; background: rgba(51, 209, 122, .18); color: #9ff0c2; font-size: 11.5px; font-weight: 800; letter-spacing: 1px; text-transform: uppercase; }
.is-acc .si-tag { background: rgba(255, 201, 51, .2); color: var(--primary); }
.si-checks { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
.si-checks li { position: relative; padding-left: 31px; color: #e9e4ff; font-size: 14.5px; font-weight: 600; line-height: 1.45; }
.si-checks li::before {
  content: '✓'; position: absolute; left: 0; top: 0; display: grid; place-items: center; width: 21px; height: 21px; border-radius: 50%;
  background: var(--good); color: #0f3320; font-size: 11px; font-weight: 900;
}
.is-acc .si-checks li::before { content: '★'; background: var(--primary); color: var(--lb-ink); font-size: 12px; }
.si-checks b { color: var(--primary); font-family: var(--font-display); font-weight: 700; }

/* ---------- FAQ ---------- */
.si-faqs { display: grid; gap: 10px; max-width: 880px; }
.si-faq { border-radius: 16px; background: rgba(255, 255, 255, .05); border: 1px solid rgba(255, 255, 255, .09); transition: background .2s, border-color .2s; }
.si-faq[open] { background: rgba(255, 255, 255, .08); border-color: rgba(255, 201, 51, .35); }
.si-faq summary { display: flex; align-items: center; gap: 12px; padding: 15px 16px 15px 18px; list-style: none; cursor: pointer; font: 600 17px/1.3 var(--font-display); border-radius: 16px; }
.si-faq summary::-webkit-details-marker { display: none; }
.si-faq summary:focus-visible { outline: 3px solid var(--primary); outline-offset: 2px; }
.si-faq summary span { flex: 1; }
.si-faq summary::after {
  content: '+'; flex: none; display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%;
  background: rgba(255, 255, 255, .1); color: var(--primary); font: 700 20px/1 var(--font-display); transition: transform .25s var(--lb-ease), background .2s;
}
.si-faq[open] summary::after { transform: rotate(45deg); background: rgba(255, 201, 51, .18); }
.si-faq p { margin: 0; padding: 0 18px 17px; color: #ddd8ff; font-size: 15px; line-height: 1.6; }

/* ---------- Abschluss ---------- */
.si-foot { padding: 64px 0 44px; }
.si-cta {
  display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 18px 24px; padding: 26px 28px; border-radius: 26px;
  background: linear-gradient(100deg, rgba(255, 201, 51, .2), rgba(255, 107, 203, .16) 50%, rgba(61, 139, 255, .16));
  border: 1px solid rgba(255, 201, 51, .4); box-shadow: var(--shadow);
}
.si-cta-tx { min-width: 0; }
.si-cta-tx b { display: block; font: 700 clamp(24px, 3vw, 32px)/1.15 var(--font-display); text-shadow: 0 3px 0 rgba(122, 42, 154, .6); }
.si-cta-tx span { display: block; margin-top: 4px; color: #f2edff; font-weight: 700; }
.si-langs { display: flex; justify-content: center; align-items: center; gap: 6px; margin-top: 28px; color: var(--muted); font-weight: 800; }
.si-langs a { padding: 5px 10px; border-radius: 9px; color: var(--muted); text-decoration: none; transition: color .15s, background .15s; }
.si-langs a:hover, .si-langs a:focus-visible { color: #fff; background: rgba(255, 255, 255, .08); outline: none; }
.si-copy { margin: 6px 0 0; text-align: center; color: rgba(185, 177, 230, .6); font-size: 12.5px; font-weight: 700; letter-spacing: .5px; }
.si-copy a { color: inherit; text-decoration: none; transition: color .15s; }
.si-copy a:hover, .si-copy a:focus-visible { color: #fff; text-decoration: underline; }

/* ---------- Responsiv ---------- */
@media (max-width: 960px) {
  .si-what { grid-template-columns: minmax(0, 1fr); }
  .si-stats { grid-column: 1; grid-row: auto; grid-template-columns: repeat(4, minmax(0, 1fr)); margin-top: 24px; }
  .si-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .si-steps li:nth-child(2)::after { display: none; }
  .si-fish-card { grid-template-columns: minmax(0, 1fr); }
  .si-fish-art { min-height: 0; aspect-ratio: 16 / 9; }
  .si-fish-art::after { background: linear-gradient(180deg, transparent 60%, rgba(26, 40, 96, .95)); }
  .si-fish-body { padding: 4px 24px 26px; }
}
@media (max-width: 720px) {
  .si { padding: 0 14px; }
  .si-sec { padding-top: 48px; }
  .si-cue { margin-top: -12px; }
  .si-lead { font-size: 16px; }
  .si-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .si-stat { padding: 16px 14px 13px; }
  .si-modes, .si-acc { grid-template-columns: minmax(0, 1fr); }
  .si-mode-body { padding: 0 16px 18px; }
  .si-mode h3 { font-size: 22px; }
  .si-facts li { padding: 8px 10px; font-size: 12.5px; }
  .si-facts b { font-size: 16px; }
  .si-wall-in { grid-template-columns: repeat(10, 44px); gap: 7px; }
  .si-wall-in i { width: 44px; height: 44px; font-size: 22px; border-radius: 13px; }
  .si-steps { gap: 10px; }
  .si-steps li { grid-template-columns: minmax(0, 1fr); grid-template-areas: 'i' 'b' 's'; justify-items: start; padding: 12px; }
  .si-steps li::after { display: none; }
  .si-steps i { margin-bottom: 8px; width: 40px; height: 40px; font-size: 19px; }
  .si-mgs { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .si-mg { flex-direction: column; gap: 8px; padding: 11px; }
  .si-mg-ic { width: 42px; height: 42px; font-size: 22px; border-radius: 12px; }
  .si-mg h3 { margin: 0 0 2px; font-size: 15px; }
  .si-mg p { font-size: 12px; -webkit-line-clamp: 3; }
  .si-mgs:not(.open) > li:nth-child(n+9) { display: none; }
  .si-more {
    display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; margin-top: 10px; padding: 12px; border-radius: 14px;
    border: 1px dashed rgba(255, 255, 255, .25); background: rgba(255, 255, 255, .05); color: #fff; cursor: pointer;
    font: 600 15px var(--font-display);
  }
  .si-mgs.open + .si-more { display: none; }
  .si-fish-body { padding: 2px 18px 22px; }
  .si-acc-card { padding: 18px; }
  .si-faq summary { font-size: 16px; padding: 14px 14px 14px 16px; }
  .si-faq p { padding: 0 16px 15px; font-size: 14.5px; }
  .si-foot { padding: 48px 0 36px; }
  .si-cta { padding: 22px 18px; }
  .si-cta .btn { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  .si-cue i, .si-wall-in i { animation: none; }
  .si-mg, .si-mode-art img { transition: none; }
}

/* ===== i18n.css ===== */
/* Sprachschalter „DE | EN“ (js/lang-switch.js) */
.lang-sw { display: inline-flex; align-items: center; gap: 2px; padding: 3px; border-radius: 14px; background: rgba(10, 6, 35, .45); border: 1.5px solid rgba(255, 255, 255, .14); font-family: var(--font); }
.lang-sw-ic { padding: 0 5px 0 6px; font-size: 15px; line-height: 1; }
.lang-sw-b { min-width: 38px; height: 30px; padding: 0 8px; border: none; border-radius: 10px; background: transparent; color: var(--muted); font: 800 13px/1 var(--font); letter-spacing: .5px; cursor: pointer; transition: background .14s, color .14s; }
.lang-sw-b:hover { color: #fff; background: rgba(255, 255, 255, .08); }
.lang-sw-b.on { background: var(--primary); color: #1b1440; cursor: default; }
.lang-sw-b:focus-visible { outline: 3px solid var(--primary); outline-offset: 2px; }
.lang-sw-sm .lang-sw-b { min-width: 32px; height: 26px; font-size: 12px; }
.lang-sw-sm .lang-sw-ic { font-size: 13px; }
.home-top > .lang-sw { margin-right: auto; }

