{"release_id":"01a1c502-4ad1-0000-ec62-adc54d3c69aa","chunk_id":"01a1c502-4c6f-7da2-bcbe-fa8a0c15b0e5","file":"107.yVTPdIb9.mjs","mappings":"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","names":["statTiles","$$anchor","div","$.first_child","fragment","b_1","small","$.sibling","text","div_1","b_2","div_2","b_3","TokenCoin","div_3","b_4","$.set_text","$.get","c","text_1","fmt","warsRow","a_1","root_2","div_4","div_5","b_5","div_6","b_6","div_7","root_3","b_7","$.template_effect","text_7","$$render","consequent","div_8","text_5","text_6","streakLabel","treasuryCard","div_9","root_4","div_10","div_11","amt","form_1","root_5","input","button","$$node","enhance","$.set_value","p_1","p_2","root_6","$0","text_13","clanErrorMessage","consequent_1","CLAN_SLOT_BLOCK","CLAN_SLOT_COST","membersCard","div_12","root_7","div_13","$.each","node_6","groups","grp","div_14","fragment_2","m","div_15","root_10","getAvatarUrl","DuelAvatar","node_9","div_16","div_17","span","root_11","form_2","root_12","$$props","consequent_2","text_17","consequent_3","div_18","span_1","text_18","text_15","consequent_4","div_19","root_14","openSlots","consequent_5","button_1","node_13","inviteCopied","$.delegated","copyInvite","isMember","consequent_6","text_14","donorsCard","div_20","root_15","div_21","root_16","node_16","d","i","div_22","root_18","span_2","node_17","div_23","div_24","span_3","consequent_7","alternate","onMount","activeMode","$.derived","canManage","n","clanContext","mtab","$.state","invite","$.set","owners","officers","plain","timeline","p","e","b","fmtAge","s","eventText","isWarEvent","ms","k","v","fmtWhen","iso","warEventText","other","warHref","bannerCopy","w","answering","answerError","answerWar","accept","res","body","invalidateAll","raidOpen","raidOpenedAt","raidStake","raiding","raidError","declareWar","goto","main","fragment_5","div_25","img","root_19","$.set_attribute","getClanCoverUrl","div_26","div_27","ClanEmblem","node_20","div_28","div_29","h1","span_4","root_20","consequent_9","div_30","div_31","root_21","consequent_10","div_32","root_22","a_2","root_23","form_3","root_24","input_1","div_33","root_25","div_34","root_26","form_4","root_27","a_3","root_28","consequent_12","consequent_13","consequent_14","consequent_15","alternate_1","button_2","root_29","consequent_16","a_4","root_30","consequent_18","div_35","span_5","div_36","i_1","span_6","p_3","root_31","text_28","consequent_19","div_37","root_32","div_38","node_28","node_29","div_39","div_40","a_5","div_41","div_42","button_3","fragment_6","button_4","a_6","root_34","a_7","root_35","consequent_21","alternate_2","p_4","root_36","consequent_22","text_29","text_30","text_31","consequent_23","p_5","root_37","text_33","consequent_24","div_43","node_32","node_33","div_44","node_34","div_45","div_46","div_47","button_5","button_6","button_7","div_48","div_49","fragment_7","node_36","PostComposer","node_37","div_50","item","PostCard","code","oTag","$$element","span_7","root_43","node_41","span_8","root_44","consequent_26","alternate_3","div_51","node_40","span_9","root_45","consequent_27","span_10","div_52","root_46","span_11","svg","root_48","consequent_29","alternate_4","div_53","b_8","span_12","text_36","consequent_25","d_2","consequent_28","alternate_5","div_54","root_49","div_55","root_50","p_6","text_39","consequent_30","alternate_6","div_56","node_44","div_57","node_45","form_5","fragment_13","p_7","root_52","text_40","consequent_31","consequent_32","aside","div_58","node_48","node_49","consequent_33","node_51","node_52","form_6","fragment_15","p_8","root_55","text_41","consequent_34","consequent_35","div_59","root_56","button_8","div_60","div_61","div_62","div_63","div_64","WAR_STAKES","button_9","root_57","classes_6","text_44","p_9","root_58","consequent_36","button_10","node_56","text_42","text_43","consequent_37","text_23","text_24","text_26","classes","classes_1","classes_2","classes_3","classes_4","classes_5"],"sources":["../../../../../../src/routes/k/[tag]/+page.svelte"],"sourcesContent":["<script lang=\"ts\">\n\timport { onMount } from 'svelte';\n\timport { enhance } from '$app/forms';\n\timport { goto, invalidateAll } from '$app/navigation';\n\timport { activeMode } from '$lib/stores/activeMode';\n\timport ClanEmblem from '$lib/components/clan/ClanEmblem.svelte';\n\timport DuelAvatar from '$lib/components/duel/DuelAvatar.svelte';\n\timport TokenCoin from '$lib/components/TokenCoin.svelte';\n\timport PostComposer from '$lib/components/post/PostComposer.svelte';\n\timport PostCard from '$lib/components/post/PostCard.svelte';\n\timport { getAvatarUrl } from '$lib/avatar';\n\timport { getClanCoverUrl } from '$lib/clan-avatar';\n\timport { clanErrorMessage } from '$lib/clan-errors';\n\timport { CLAN_SLOT_COST, CLAN_SLOT_BLOCK } from '$lib/xp';\n\timport { WAR_STAKES } from '$lib/types/clan-war';\n\timport type { ClanEventView } from '$lib/types/clan';\n\n\tlet { data, form } = $props();\n\n\tonMount(() => {\n\t\tactiveMode.set('clan');\n\t\treturn () => activeMode.set(null);\n\t});\n\n\tconst c = $derived(data.clan);\n\tconst isMember = $derived(!!c.viewerRole);\n\tconst canManage = $derived(c.viewerRole === 'owner' || c.viewerRole === 'officer');\n\tconst fmt = (n: number) => n.toLocaleString('en-US');\n\tconst clanContext = $derived({ id: c.id, tag: c.tag, name: c.name });\n\tconst openSlots = $derived(Math.max(0, c.memberCap - c.memberCount));\n\n\t// Mobile-only tabs (desktop shows feed + sidebar side by side).\n\tlet mtab = $state<'feed' | 'members' | 'about'>('feed');\n\n\tlet inviteCopied = $state(false);\n\tfunction copyInvite() {\n\t\t// Members copy the tokenized link — a valid ?invite= code joins instantly\n\t\t// on any policy (the ONLY join path for invite-only clans).\n\t\tconst invite = data.inviteCode ? `?invite=${data.inviteCode}` : '';\n\t\tnavigator.clipboard?.writeText(`${location.origin}/k/${c.tag}${invite}`).then(() => {\n\t\t\tinviteCopied = true;\n\t\t\tsetTimeout(() => (inviteCopied = false), 1600);\n\t\t});\n\t}\n\n\tconst owners = $derived(data.members.filter((m) => m.role === 'owner'));\n\tconst officers = $derived(data.members.filter((m) => m.role === 'officer'));\n\tconst plain = $derived(data.members.filter((m) => m.role === 'member'));\n\tconst groups = $derived([\n\t\t{ label: 'owner', list: owners },\n\t\t{ label: `officers · ${officers.length}`, list: officers },\n\t\t{ label: `members · ${plain.length}`, list: plain }\n\t]);\n\n\t// Merge posts + system events into one reverse-chrono timeline.\n\ttype Item = { k: 'post'; t: number; p: (typeof data.posts)[number] } | { k: 'event'; t: number; e: ClanEventView };\n\tconst timeline = $derived<Item[]>(\n\t\t[\n\t\t\t...data.posts.map((p) => ({ k: 'post' as const, t: new Date(p.createdAt).getTime(), p })),\n\t\t\t...data.events.map((e) => ({ k: 'event' as const, t: new Date(e.createdAt).getTime(), e }))\n\t\t].sort((a, b) => b.t - a.t)\n\t);\n\n\tconst fmtAge = (d: string) => {\n\t\tconst s = Math.floor((Date.now() - new Date(d).getTime()) / 1000);\n\t\tif (s < 60) return 'now';\n\t\tif (s < 3600) return `${Math.floor(s / 60)}m`;\n\t\tif (s < 86400) return `${Math.floor(s / 3600)}h`;\n\t\treturn `${Math.floor(s / 86400)}d`;\n\t};\n\tconst eventText = (e: ClanEventView) =>\n\t\te.type === 'joined' ? 'joined the clan' : e.type === 'left' ? 'left the clan' : `donated ${e.amount ?? 0} tokens`;\n\n\t// ── clan wars (memory project_clan_wars_spec) ────────────────────────────\n\tconst isWarEvent = (e: ClanEventView) => e.type.startsWith('war_');\n\tconst ms = (e: ClanEventView, k: string) => {\n\t\tconst v = e.meta?.[k];\n\t\treturn typeof v === 'string' ? v : null;\n\t};\n\tconst fmtWhen = (iso: string | null) => {\n\t\tif (!iso) return '';\n\t\tconst d = new Date(iso);\n\t\treturn d.toLocaleString('en-US', { month: 'short', day: 'numeric', hour: 'numeric', minute: '2-digit' }).toLowerCase();\n\t};\n\t/** System-authored war rows: one sentence, no actor name. */\n\tconst warEventText = (e: ClanEventView): string => {\n\t\tconst other = ms(e, 'otherTag') ?? '?';\n\t\tconst m = e.meta ?? {};\n\t\tswitch (e.type) {\n\t\t\tcase 'war_raid':\n\t\t\t\treturn `raid announced on #${other} · the brief: ${ms(e, 'challenge') ?? '…'}`;\n\t\t\tcase 'war_requested':\n\t\t\t\treturn m.outgoing ? `war request sent to #${other}` : `#${other} declared war on the clan`;\n\t\t\tcase 'war_accepted':\n\t\t\t\treturn `war vs #${other} accepted · fight at ${fmtWhen(ms(e, 'fightAt'))}`;\n\t\t\tcase 'war_declined':\n\t\t\t\treturn m.dissolved ? 'the raid dissolved · nobody locked a lineup' : `#${other} declined the war`;\n\t\t\tcase 'war_forfeit':\n\t\t\t\treturn m.self ? `no-show vs #${other} · the mark stays until a win` : `#${other} didn't show · won by default`;\n\t\t\tcase 'war_result':\n\t\t\t\treturn m.won ? `beat #${other} ${ms(e, 'score') ?? ''}` : `fell to #${other} ${ms(e, 'score') ?? ''}`;\n\t\t\tdefault:\n\t\t\t\treturn e.type;\n\t\t}\n\t};\n\tconst streakLabel = $derived(c.warStreak > 0 ? `w${c.warStreak}` : c.warStreak < 0 ? `l${-c.warStreak}` : '—');\n\tconst warHref = $derived(data.liveWar ? `/k/war/${data.liveWar.code}` : null);\n\tconst bannerCopy = $derived.by(() => {\n\t\tconst w = data.liveWar;\n\t\tif (!w) return null;\n\t\tconst other = `#${w.otherTag}`;\n\t\tif (w.status === 'mustering') return { lbl: 'raid open', t: `raid on ${other} is mustering`, s: `members apply with a photo · the brief: ${w.challenge}` };\n\t\tif (w.status === 'requested')\n\t\t\treturn w.role === 'defender'\n\t\t\t\t? { lbl: 'war declared', t: `${other} wants your heads.`, s: `${w.stake > 0 ? `${w.stake} tokens on the line · ` : ''}owner + officers have 24h to answer` }\n\t\t\t\t: { lbl: 'request sent', t: `waiting on ${other}`, s: 'they have 24h to answer. no answer is a dodge.' };\n\t\tif (w.status === 'preparing')\n\t\t\treturn { lbl: 'war accepted', t: `fight vs ${other} at ${fmtWhen(w.fightAt)}`, s: w.role === 'defender' ? `members apply with a photo · the brief: ${w.challenge}` : 'lineup locked · waiting for their side' };\n\t\tif (w.status === 'scheduled') return { lbl: 'scheduled', t: `fight vs ${other} at ${fmtWhen(w.fightAt)}`, s: 'lineups revealed · everyone watches at once' };\n\t\treturn null;\n\t});\n\tlet answering = $state(false);\n\tlet answerError = $state('');\n\tasync function answerWar(accept: boolean) {\n\t\tif (!data.liveWar || answering) return;\n\t\tanswering = true;\n\t\tanswerError = '';\n\t\tconst res = await fetch(`/api/clan-war/${data.liveWar.code}/answer`, {\n\t\t\tmethod: 'POST',\n\t\t\theaders: { 'content-type': 'application/json' },\n\t\t\tbody: JSON.stringify({ accept })\n\t\t});\n\t\tanswering = false;\n\t\tif (!res.ok) {\n\t\t\tconst body = await res.json().catch(() => ({}));\n\t\t\tanswerError = body?.error === 'treasury' ? 'your treasury can\\'t cover the stake' : body?.error === 'too_few_members' ? 'you need 4 members to accept' : 'could not answer right now';\n\t\t\treturn;\n\t\t}\n\t\tawait invalidateAll();\n\t}\n\n\t// raid sheet (captain of another clan)\n\tlet raidOpen = $state(false);\n\tlet raidOpenedAt = $state(0);\n\tlet raidStake = $state<number>(0);\n\tlet raiding = $state(false);\n\tlet raidError = $state('');\n\tasync function declareWar() {\n\t\tif (raiding) return;\n\t\traiding = true;\n\t\traidError = '';\n\t\tconst res = await fetch('/api/clan-war/raid', {\n\t\t\tmethod: 'POST',\n\t\t\theaders: { 'content-type': 'application/json' },\n\t\t\tbody: JSON.stringify({ targetTag: c.tag, stake: raidStake })\n\t\t});\n\t\tconst body = await res.json().catch(() => ({}));\n\t\traiding = false;\n\t\tif (!res.ok) {\n\t\t\tconst e = body?.error;\n\t\t\traidError =\n\t\t\t\te === 'too_few_members' ? 'your clan needs 4 members to raid'\n\t\t\t\t: e === 'live_war' ? 'your clan already has a live war'\n\t\t\t\t: e === 'cooldown' ? '3 days between wars with the same clan'\n\t\t\t\t: e === 'treasury' ? 'your treasury can\\'t cover that stake'\n\t\t\t\t: 'could not declare right now';\n\t\t\treturn;\n\t\t}\n\t\tgoto(`/k/war/${body.code}`);\n\t}\n</script>\n\n{#snippet statTiles()}\n\t<div class=\"stat\"><b>{c.memberCount}<small class=\"cap\">/{c.memberCap}</small></b><span>members</span></div>\n\t<div class=\"stat\"><b class=\"v\">#{data.rank}</b><span>rank</span></div>\n\t<div class=\"stat\"><b class=\"coinwrap\"><TokenCoin size={14} />{fmt(c.treasuryTokens)}</b><span>treasury</span></div>\n\t<div class=\"stat\"><b>{fmt(c.xp)}</b><span>clan xp</span></div>\n{/snippet}\n\n{#snippet warsRow()}\n\t<a href=\"/k/{c.tag}/wars\" class=\"wars-card\">\n\t\t<div class=\"wars-head\"><span>wars</span><span class=\"wars-go\">history →</span></div>\n\t\t<div class=\"wars-score\">\n\t\t\t<div class=\"wars-n\"><b>{c.warWins}</b><small>won</small></div>\n\t\t\t<span class=\"wars-dash\">–</span>\n\t\t\t<div class=\"wars-n\"><b class=\"l\">{c.warLosses}</b><small>lost</small></div>\n\t\t\t{#if c.warNoshows}<div class=\"wars-n\"><b class=\"ns\">{c.warNoshows}</b><small>no-show</small></div>{/if}\n\t\t</div>\n\t\t<div class=\"wars-sub\">{c.warWins + c.warLosses + c.warNoshows === 0 ? 'no wars yet. pick a fight.' : `streak ${streakLabel}`}</div>\n\t</a>\n{/snippet}\n\n{#snippet treasuryCard()}\n\t<div class=\"vault\">\n\t\t<div class=\"vault-lbl\">clan treasury</div>\n\t\t<div class=\"vault-bal\"><TokenCoin size={22} />{fmt(c.treasuryTokens)}</div>\n\t\t<div class=\"donate-row\">\n\t\t\t{#each [10, 25, 50] as amt (amt)}\n\t\t\t\t<form method=\"POST\" action=\"?/donate\" use:enhance>\n\t\t\t\t\t<input type=\"hidden\" name=\"amount\" value={amt} />\n\t\t\t\t\t<button class=\"donate-btn\"><TokenCoin size={13} />+{amt}</button>\n\t\t\t\t</form>\n\t\t\t{/each}\n\t\t</div>\n\t\t<p class=\"vault-note\">donate · funds +{CLAN_SLOT_BLOCK} member slots (<TokenCoin size={11} />{CLAN_SLOT_COST} each)</p>\n\t\t{#if form?.donateError}<p class=\"err\">{clanErrorMessage(form.donateError)}</p>{/if}\n\t</div>\n{/snippet}\n\n{#snippet membersCard()}\n\t<div class=\"panel\">\n\t\t<div class=\"panel-lbl\">members · {c.memberCount}/{c.memberCap}</div>\n\t\t{#each groups as grp (grp.label)}\n\t\t\t{#if grp.list.length}\n\t\t\t\t<div class=\"rgrp\">{grp.label}</div>\n\t\t\t\t{#each grp.list as m (m.userId)}\n\t\t\t\t\t<div class=\"mrow\">\n\t\t\t\t\t\t<DuelAvatar nickname={m.nickname} avatarUrl={getAvatarUrl(m.avatarPath)} size={34} />\n\t\t\t\t\t\t<div class=\"min-w-0\">\n\t\t\t\t\t\t\t<div class=\"nm truncate\">\n\t\t\t\t\t\t\t\t{m.nickname ?? 'someone'}\n\t\t\t\t\t\t\t\t{#if m.title}\n\t\t\t\t\t\t\t\t\t<span class=\"mtitle\">{m.title}{#if m.userId === data.currentUserId}<form method=\"POST\" action=\"?/clearTitle\" use:enhance class=\"mtitle-x-form\"><button class=\"mtitle-x\" title=\"remove my title\" aria-label=\"remove my title\">×</button></form>{/if}</span>\n\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"sub\">lvl {m.level}</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<span class=\"xpc\">{fmt(m.xpContributed)} <small>xp</small></span>\n\t\t\t\t\t</div>\n\t\t\t\t{/each}\n\t\t\t{/if}\n\t\t{/each}\n\t\t{#if openSlots > 0 && isMember}\n\t\t\t<div class=\"skel-row\"><div class=\"skel-dot\"></div><div class=\"skel-ll\"><div class=\"skel-line\" style=\"width:45%\"></div><div class=\"skel-line\" style=\"width:28%\"></div></div></div>\n\t\t\t{#if openSlots > 1}<div class=\"skel-row dim\"><div class=\"skel-dot\"></div><div class=\"skel-ll\"><div class=\"skel-line\" style=\"width:38%\"></div><div class=\"skel-line\" style=\"width:22%\"></div></div></div>{/if}\n\t\t\t<button class=\"invite-btn\" onclick={copyInvite}>{inviteCopied ? 'link copied ✓' : `invite teammates · ${openSlots} ${openSlots === 1 ? 'slot' : 'slots'} open`}</button>\n\t\t{/if}\n\t</div>\n{/snippet}\n\n{#snippet donorsCard()}\n\t<div class=\"panel\">\n\t\t<div class=\"panel-lbl\">top donors</div>\n\t\t{#if data.topDonors.length === 0}\n\t\t\t<div class=\"empty-mini\"><TokenCoin size={18} /><p>no donations yet — be the first to fuel the treasury.</p></div>\n\t\t{:else}\n\t\t\t{#each data.topDonors as d, i (i)}\n\t\t\t\t<div class=\"mrow\">\n\t\t\t\t\t<span class=\"rank\">{i + 1}</span>\n\t\t\t\t\t<DuelAvatar nickname={d.nickname} avatarUrl={getAvatarUrl(d.avatarPath)} size={30} />\n\t\t\t\t\t<div class=\"min-w-0\"><div class=\"nm truncate\">{d.nickname ?? 'someone'}</div></div>\n\t\t\t\t\t<span class=\"xpc coinwrap\" style=\"color:var(--color-text)\"><TokenCoin size={12} />{fmt(d.total)}</span>\n\t\t\t\t</div>\n\t\t\t{/each}\n\t\t{/if}\n\t</div>\n{/snippet}\n\n<main class=\"clan-page\">\n\t<a href=\"/k\" class=\"back-link\">← clans</a>\n\n\t<!-- cover + header -->\n\t<div class=\"cover\">\n\t\t{#if getClanCoverUrl(c.coverPath)}<img src={getClanCoverUrl(c.coverPath)} alt=\"\" class=\"cover-img\" />{/if}\n\t</div>\n\t<div class=\"head\">\n\t\t<div class=\"emblem-wrap\"><ClanEmblem tag={c.tag} avatarPath={c.avatarPath} size={92} link={false} /></div>\n\t\t<div class=\"head-row\">\n\t\t\t<div class=\"head-id min-w-0\">\n\t\t\t<h1 class=\"clan-name truncate\">{c.name}{#if c.noShowSince}<span class=\"noshow\">no-show</span>{/if}</h1>\n\t\t\t<div class=\"clan-tag\">#{c.tag}</div>\n\t\t\t{#if c.noShowSince}<div class=\"noshow-sub\">didn't show up for a war · clears with a win</div>{/if}\n\t\t</div>\n\t\t{#if !isMember}\n\t\t\t<div class=\"cta\">\n\t\t\t\t{#if !data.isLoggedIn}\n\t\t\t\t\t<!-- Keep the invite token through the sign-in round-trip. -->\n\t\t\t\t\t<a href={data.inviteValid ? `/auth/sign-in?next=${encodeURIComponent(`/k/${c.tag}?invite=${data.inviteParam}`)}` : '/rate'} class=\"btn btn-v\">\n\t\t\t\t\t\t{data.inviteValid ? 'sign in to accept invite' : 'sign in to join'}\n\t\t\t\t\t</a>\n\t\t\t\t{:else if data.inviteValid}\n\t\t\t\t\t<!-- Arrived via a member's invite link — instant join, any policy. -->\n\t\t\t\t\t<form method=\"POST\" action=\"?/join\" use:enhance>\n\t\t\t\t\t\t<input type=\"hidden\" name=\"inviteCode\" value={data.inviteParam} />\n\t\t\t\t\t\t<button class=\"btn btn-v\">accept invite · join clan</button>\n\t\t\t\t\t</form>\n\t\t\t\t{:else if c.viewerHasPendingRequest}\n\t\t\t\t\t<div class=\"pending\">request pending</div>\n\t\t\t\t{:else if c.joinPolicy === 'invite'}\n\t\t\t\t\t<div class=\"pending muted\">invite-only</div>\n\t\t\t\t{:else if c.joinPolicy === 'open'}\n\t\t\t\t\t<form method=\"POST\" action=\"?/join\" use:enhance><button class=\"btn btn-v\">join clan</button></form>\n\t\t\t\t{:else}\n\t\t\t\t\t<a href=\"/k/{c.tag}/apply\" class=\"btn btn-v\">request to join</a>\n\t\t\t\t{/if}\n\t\t\t\t{#if data.raider && !data.raider.liveWar && !data.liveWar}\n\t\t\t\t\t<button class=\"btn btn-war\" onclick={(e) => { raidOpenedAt = e.timeStamp; raidStake = 0; raidError = ''; raidOpen = true; }}>declare war</button>\n\t\t\t\t{/if}\n\t\t\t</div>\n\t\t{:else if canManage}\n\t\t\t<a href=\"/k/{c.tag}/manage\" class=\"btn btn-ghost cta\">manage clan</a>\n\t\t{/if}\n\t\t</div>\n\t</div>\n\t<div class=\"lvl-row\">\n\t\t<span class=\"chip-v\">lvl {c.level}</span>\n\t\t<div class=\"xpbar\"><i style=\"width:{c.xpPct}%\"></i></div>\n\t\t<span class=\"xp-meta\">{fmt(c.xp)} XP · {fmt(c.xpToNext)} to lvl {c.level + 1}</span>\n\t</div>\n\t{#if form?.joinError}<p class=\"err\">{clanErrorMessage(form.joinError)}</p>{/if}\n\n\t{#if data.liveWar && bannerCopy}\n\t\t<div class=\"war-banner\">\n\t\t\t<div class=\"war-vs\">\n\t\t\t\t<ClanEmblem tag={c.tag} avatarPath={c.avatarPath} size={44} link={false} />\n\t\t\t\t<span class=\"war-vs-t\">vs</span>\n\t\t\t\t<ClanEmblem tag={data.liveWar.otherTag} avatarPath={data.liveWar.otherAvatarPath} size={44} />\n\t\t\t</div>\n\t\t\t<div class=\"war-body\">\n\t\t\t\t<div class=\"war-lbl\">{bannerCopy.lbl}</div>\n\t\t\t\t<a href={warHref} class=\"war-title\">{bannerCopy.t}</a>\n\t\t\t\t<div class=\"war-sub\">{bannerCopy.s}</div>\n\t\t\t</div>\n\t\t\t<div class=\"war-actions\">\n\t\t\t\t{#if data.liveWar.status === 'requested' && data.liveWar.role === 'defender' && canManage}\n\t\t\t\t\t<button class=\"btn btn-v\" disabled={answering} onclick={() => answerWar(true)}>accept</button>\n\t\t\t\t\t<button class=\"btn btn-ghost\" disabled={answering} onclick={() => answerWar(false)}>decline</button>\n\t\t\t\t{:else if (data.liveWar.status === 'mustering' || data.liveWar.status === 'preparing') && isMember}\n\t\t\t\t\t<a href={warHref} class=\"btn btn-v\">apply to fight</a>\n\t\t\t\t{:else}\n\t\t\t\t\t<a href={warHref} class=\"btn btn-ghost\">open the war</a>\n\t\t\t\t{/if}\n\t\t\t</div>\n\t\t\t{#if answerError}<p class=\"err war-err\">{answerError}</p>{/if}\n\t\t</div>\n\t{/if}\n\n\t{#if c.bio}<p class=\"bio\">{c.bio}</p>{/if}\n\n\t<div class=\"stat-row\">{@render statTiles()}</div>\n\t<div class=\"stat-row-wars\">{@render warsRow()}</div>\n\n\t<!-- body: feed + sidebar -->\n\t<div class=\"cols\">\n\t\t<div class=\"feed-col\">\n\t\t\t<div class=\"mtabs\">\n\t\t\t\t<button class:on={mtab === 'feed'} onclick={() => (mtab = 'feed')}>feed</button>\n\t\t\t\t<button class:on={mtab === 'members'} onclick={() => (mtab = 'members')}>members</button>\n\t\t\t\t<button class:on={mtab === 'about'} onclick={() => (mtab = 'about')}>about</button>\n\t\t\t</div>\n\t\t\t<div class=\"feedpane\" class:hide-m={mtab !== 'feed'}>\n\t\t\t{#if isMember}\n\t\t\t\t<div class=\"mobile-treasury\">{@render treasuryCard()}</div>\n\t\t\t\t<PostComposer {clanContext} framed />\n\t\t\t\t<div class=\"timeline\">\n\t\t\t\t\t{#each timeline as item (item.k === 'post' ? item.p.id : item.e.id)}\n\t\t\t\t\t\t{#if item.k === 'post'}\n\t\t\t\t\t\t\t<PostCard post={item.p} viewerLoggedIn={data.isLoggedIn} viewerId={data.currentUserId} framed />\n\t\t\t\t\t\t{:else if isWarEvent(item.e)}\n\t\t\t\t\t\t\t{@const code = ms(item.e, 'code')}\n\t\t\t\t\t\t\t{@const oTag = ms(item.e, 'otherTag')}\n\t\t\t\t\t\t\t<svelte:element this={code ? 'a' : 'div'} href={code ? `/k/war/${code}` : undefined} class=\"fsys fsys-war\">\n\t\t\t\t\t\t\t\t{#if oTag}\n\t\t\t\t\t\t\t\t\t<span class=\"fsys-em\"><ClanEmblem tag={oTag} avatarPath={ms(item.e, 'otherAvatarPath')} size={28} link={false} /></span>\n\t\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t\t<span class=\"fsys-ic\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5 3l4 7-4 7M19 3l-4 7 4 7M9 10h6\" /></svg></span>\n\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t\t<div class=\"fsys-war-t\">{warEventText(item.e)}{#if code}<span class=\"fsys-go\">open →</span>{/if}</div>\n\t\t\t\t\t\t\t\t<span class=\"fsys-t\">{fmtAge(item.e.createdAt)}</span>\n\t\t\t\t\t\t\t</svelte:element>\n\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t<div class=\"fsys\">\n\t\t\t\t\t\t\t\t<span class=\"fsys-ic\">\n\t\t\t\t\t\t\t\t\t{#if item.e.type === 'donated'}<TokenCoin size={15} />\n\t\t\t\t\t\t\t\t\t{:else}<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2M9 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8z\" /></svg>{/if}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<div><b>{item.e.nickname ?? 'someone'}</b> {eventText(item.e)}</div>\n\t\t\t\t\t\t\t\t<span class=\"fsys-t\">{fmtAge(item.e.createdAt)}</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t{:else}\n\t\t\t\t\t\t<div class=\"empty-feed\">\n\t\t\t\t\t\t\t<span class=\"empty-ic\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\" /></svg></span>\n\t\t\t\t\t\t\t<p class=\"empty-title\">no posts yet</p>\n\t\t\t\t\t\t\t<p class=\"empty-sub\">break the ice — your first post kicks off the clan feed.</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t{/each}\n\t\t\t\t</div>\n\t\t\t{:else}\n\t\t\t\t<div class=\"locked\">\n\t\t\t\t\t<span class=\"empty-ic\"><svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><rect x=\"5\" y=\"11\" width=\"14\" height=\"9\" rx=\"2\" /><path d=\"M8 11V8a4 4 0 1 1 8 0v3\" /></svg></span>\n\t\t\t\t\t<p class=\"empty-title\">members only</p>\n\t\t\t\t\t<p class=\"empty-sub\">join {c.name} to see the feed, post, and chip into the treasury.</p>\n\t\t\t\t</div>\n\t\t\t{/if}\n\t\t\t</div>\n\n\t\t\t<!-- mobile-only tab panes (desktop uses the sidebar) -->\n\t\t\t<div class=\"mob-only\" class:hide-m={mtab !== 'members'}>{@render membersCard()}</div>\n\t\t\t<div class=\"mob-only about-pane\" class:hide-m={mtab !== 'about'}>\n\t\t\t\t{@render donorsCard()}\n\t\t\t\t{#if isMember && c.viewerRole !== 'owner'}\n\t\t\t\t\t<form method=\"POST\" action=\"?/leave\" use:enhance><button class=\"btn btn-ghost leave\">leave clan</button></form>\n\t\t\t\t\t{#if form?.leaveError}<p class=\"err\">{clanErrorMessage(form.leaveError)}</p>{/if}\n\t\t\t\t{/if}\n\t\t\t</div>\n\t\t</div>\n\n\t\t<aside class=\"side\">\n\t\t\t<div class=\"sb-stats\">{@render statTiles()}</div>\n\t\t\t{@render warsRow()}\n\t\t\t{#if isMember}{@render treasuryCard()}{/if}\n\t\t\t{@render membersCard()}\n\t\t\t{@render donorsCard()}\n\t\t\t{#if isMember && c.viewerRole !== 'owner'}\n\t\t\t\t<form method=\"POST\" action=\"?/leave\" use:enhance><button class=\"btn btn-ghost leave\">leave clan</button></form>\n\t\t\t\t{#if form?.leaveError}<p class=\"err\">{clanErrorMessage(form.leaveError)}</p>{/if}\n\t\t\t{/if}\n\t\t</aside>\n\t</div>\n</main>\n\n{#if raidOpen && data.raider}\n\t<div class=\"rp-overlay\" role=\"dialog\" aria-modal=\"true\">\n\t\t<button class=\"rp-scrim\" aria-label=\"close\" onclick={(e) => { if (e.timeStamp - raidOpenedAt < 350) return; raidOpen = false; }}></button>\n\t\t<div class=\"rp-sheet\">\n\t\t\t<div class=\"rp-grip\"></div>\n\t\t\t<div class=\"rp-head\">\n\t\t\t\t<div class=\"rp-title\">declare war on #{c.tag}</div>\n\t\t\t\t<div class=\"rp-sub\">#{data.raider.tag} vs #{c.tag} · team size follows the smaller clan · ai-judged</div>\n\t\t\t</div>\n\t\t\t<div class=\"stake-lbl\">stake · from your treasury</div>\n\t\t\t<div class=\"stake-row\">\n\t\t\t\t{#each WAR_STAKES as s (s)}\n\t\t\t\t\t<button type=\"button\" class=\"stake\" class:on={raidStake === s} onclick={() => (raidStake = s)}>{s === 0 ? 'none' : s}</button>\n\t\t\t\t{/each}\n\t\t\t</div>\n\t\t\t<p class=\"rp-note\">12h to muster, then they get 24h to answer. stake is treasury only, never paid out.</p>\n\t\t\t{#if raidError}<p class=\"err\">{raidError}</p>{/if}\n\t\t\t<button class=\"btn btn-v\" disabled={raiding} onclick={declareWar}>{raiding ? 'declaring…' : 'announce the raid'}</button>\n\t\t</div>\n\t</div>\n{/if}\n\n<style>\n\t.clan-page { max-width: 980px; margin: 0 auto; padding: 76px 18px 120px; }\n\t@media (min-width: 768px) { .clan-page { padding: 100px 20px 120px; } }\n\t.back-link { font-size: 11px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; color: var(--color-muted); text-decoration: none; }\n\t.back-link:hover { color: var(--color-text); }\n\n\t.cover { position: relative; height: 150px; border-radius: 18px; overflow: hidden; margin-top: 14px; border: 1px solid var(--color-border); background: linear-gradient(120deg, rgba(124, 92, 255, 0.45), rgba(124, 92, 255, 0.08) 60%, var(--color-surface)); }\n\t.cover::after { content: ''; position: absolute; inset: 0; background: radial-gradient(circle at 22% -30%, rgba(124, 92, 255, 0.45), transparent 55%); }\n\t.cover-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 1; }\n\n\t.head { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; margin: -44px 6px 0; position: relative; z-index: 2; }\n\t.head-row { display: flex; align-items: center; justify-content: space-between; gap: 18px; width: 100%; }\n\t.emblem-wrap { border: 4px solid var(--color-bg); border-radius: 50%; flex-shrink: 0; }\n\t.head-id { flex: 1; min-width: 0; }\n\t.clan-name { font-family: var(--font-display); font-size: 28px; font-weight: 900; letter-spacing: -0.03em; line-height: 1.05; }\n\t.clan-tag { font-size: 13px; font-weight: 800; letter-spacing: 0.08em; color: var(--color-violet); margin-top: 3px; }\n\t.cta { flex-shrink: 0; display: flex; align-items: center; gap: 8px; }\n\t@media (max-width: 560px) {\n\t\t.head-row { flex-direction: column; align-items: flex-start; gap: 12px; }\n\t\t.cta { width: 100%; }\n\t\t.cta .btn { flex: 1; }\n\t}\n\n\t.lvl-row { display: flex; align-items: center; gap: 9px; margin-top: 14px; max-width: 460px; }\n\t.xpbar { height: 7px; border-radius: 99px; background: var(--color-surface-2); overflow: hidden; flex: 1; }\n\t.xpbar > i { display: block; height: 100%; background: linear-gradient(90deg, var(--color-violet-dark), var(--color-violet)); }\n\t.xp-meta { font-size: 10.5px; color: var(--color-muted); white-space: nowrap; }\n\t/* mobile: bar wraps to its own full-width (edge-to-edge) row */\n\t@media (max-width: 640px) {\n\t\t.lvl-row { flex-wrap: wrap; max-width: none; gap: 8px 0; }\n\t\t.lvl-row .chip-v { order: 1; }\n\t\t.lvl-row .xp-meta { order: 2; margin-left: auto; }\n\t\t.lvl-row .xpbar { order: 3; flex-basis: 100%; }\n\t}\n\t.bio { font-size: 14px; line-height: 1.55; color: #c9c9d0; margin-top: 16px; max-width: 640px; }\n\n\t.btn { display: flex; align-items: center; justify-content: center; padding: 11px 20px; border-radius: 12px; border: none; font-family: var(--font-display); font-size: 14px; font-weight: 700; cursor: pointer; text-decoration: none; white-space: nowrap; }\n\t.btn-v { background: var(--color-violet); color: #fff; }\n\t.btn-v:hover { background: var(--color-violet-dark); }\n\t.btn-ghost { background: var(--color-surface); color: var(--color-text); border: 1px solid var(--color-border); }\n\t.btn-ghost:hover { border-color: var(--color-violet-light); }\n\t.btn-ghost.leave { width: 100%; color: var(--color-coral); }\n\t.pending { border: 1px solid var(--color-violet-light); background: var(--color-violet-light); border-radius: 12px; padding: 11px 16px; text-align: center; font-size: 13px; font-weight: 600; color: var(--color-violet); }\n\t.pending.muted { border-color: var(--color-border); background: var(--color-surface); color: var(--color-muted); }\n\t.err { color: var(--color-coral); font-size: 12px; margin-top: 8px; }\n\n\t/* under-bio stats — mobile only (desktop has the 2×2 grid in the sidebar) */\n\t.stat-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin-top: 18px; }\n\t@media (max-width: 560px) { .stat-row { grid-template-columns: repeat(2, 1fr); } }\n\t.stat-row-wars { margin-top: 8px; }\n\t@media (min-width: 900px) { .stat-row-wars { display: none; } }\n\t@media (min-width: 900px) { .stat-row { display: none; } }\n\t.sb-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }\n\t.stat { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: 12px; padding: 11px 8px; text-align: center; }\n\t.stat b { display: flex; align-items: center; justify-content: center; gap: 3px; font-family: var(--font-display); font-size: 16px; font-weight: 800; letter-spacing: -0.02em; }\n\t.stat b.v { color: var(--color-violet); }\n\t.stat b .cap { font-size: 12px; font-weight: 700; color: var(--color-muted); }\n\t.stat span { display: block; font-size: 9px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--color-muted); margin-top: 3px; }\n\t/* wars record card: full width under the tiles, same skin as the member card */\n\t.wars-card { display: block; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: 16px; padding: 14px 16px 16px; text-decoration: none; color: inherit; }\n\t.wars-card:hover { border-color: var(--color-violet-light); }\n\t.wars-head { display: flex; align-items: center; justify-content: space-between; font-size: 11px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--color-muted); }\n\t.wars-go { color: var(--color-muted); }\n\t.wars-card:hover .wars-go { color: var(--color-violet); }\n\t.wars-score { display: flex; align-items: flex-end; gap: 14px; margin-top: 10px; }\n\t.wars-n { display: flex; flex-direction: column; align-items: center; gap: 2px; }\n\t.wars-n b { font-family: var(--font-display); font-size: 30px; font-weight: 800; letter-spacing: -0.04em; line-height: 1; color: var(--color-violet); }\n\t.wars-n b.l { color: var(--color-text); }\n\t.wars-n b.ns { color: var(--color-coral); }\n\t.wars-n small { font-size: 9px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--color-muted); }\n\t.wars-dash { font-family: var(--font-display); font-size: 26px; font-weight: 700; color: var(--color-border); line-height: 1; padding-bottom: 14px; }\n\t.wars-sub { margin-top: 10px; font-size: 12px; color: var(--color-muted); }\n\t/* declare war: same height as the join CTA, quiet surface, reads as the second action */\n\t.btn-war { background: var(--color-surface-2); color: var(--color-text); border: 1px solid var(--color-border); }\n\t.btn-war:hover { background: var(--color-surface); border-color: var(--color-violet); color: var(--color-violet); }\n\t@media (min-width: 900px) { .wars-link { display: none; } }\n\t/* clan wars: the no-show mark, the live-war banner, the raid sheet */\n\t.noshow { display: inline-block; vertical-align: middle; margin-left: 10px; background: #3a1d24; color: var(--color-coral); font-family: var(--font-display); font-size: 11px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; padding: 4px 9px; border-radius: 7px; }\n\t.noshow-sub { font-size: 12px; color: var(--color-muted); margin-top: 4px; }\n\t/* live war banner: neutral surface, both emblems facing off, one action */\n\t.war-banner { margin-top: 16px; border: 1px solid var(--color-border); border-radius: 18px; background: var(--color-surface); padding: 16px 18px; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 18px; }\n\t.war-vs { display: flex; align-items: center; gap: 10px; }\n\t.war-vs-t { font-family: var(--font-display); font-size: 11px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; color: var(--color-muted); }\n\t.war-body { min-width: 0; display: flex; flex-direction: column; gap: 2px; }\n\t.war-lbl { font-size: 11px; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; color: var(--color-violet); }\n\t.war-title { font-family: var(--font-display); font-size: 18px; font-weight: 700; letter-spacing: -0.02em; color: var(--color-text); text-decoration: none; }\n\t.war-title:hover { color: var(--color-violet); }\n\t.war-sub { font-size: 13px; color: var(--color-muted); }\n\t.war-actions { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }\n\t.war-err { grid-column: 1 / -1; margin: 0; }\n\t@media (max-width: 640px) {\n\t\t.war-banner { grid-template-columns: 1fr; gap: 12px; }\n\t\t.war-actions { justify-content: flex-start; }\n\t\t.war-actions .btn { flex: 1; }\n\t}\n\t/* war rows in the feed: the other clan's emblem, plain surface, no tint */\n\t.fsys-war { text-decoration: none; background: var(--color-surface); }\n\t.fsys-war:hover { border-color: var(--color-violet-light); }\n\t.fsys-em { flex-shrink: 0; display: flex; }\n\t.fsys-war-t { flex: 1; min-width: 0; color: var(--color-text); }\n\t.fsys-go { margin-left: 8px; font-size: 11px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--color-muted); }\n\t.fsys-war:hover .fsys-go { color: var(--color-violet); }\n\t.rp-overlay { position: fixed; inset: 0; z-index: 120; display: flex; align-items: flex-end; justify-content: center; }\n\t.rp-scrim { position: absolute; inset: 0; background: rgba(0, 0, 0, 0.7); backdrop-filter: blur(4px); border: none; cursor: pointer; }\n\t.rp-sheet { position: relative; width: 100%; max-width: 440px; background: var(--color-bg); border: 1px solid var(--color-border); border-radius: 24px 24px 0 0; padding: 12px 18px 24px; display: flex; flex-direction: column; gap: 14px; }\n\t.rp-grip { width: 40px; height: 4px; border-radius: 999px; background: var(--color-muted); opacity: 0.3; align-self: center; }\n\t.rp-head { text-align: center; }\n\t.rp-title { font-family: var(--font-display); font-weight: 700; font-size: 17px; color: var(--color-text); }\n\t.rp-sub { margin-top: 2px; font-size: 12.5px; color: var(--color-muted); }\n\t.rp-note { font-size: 12px; color: var(--color-muted); text-align: center; margin: 0; }\n\t.stake-lbl { font-size: 10px; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; color: var(--color-muted); }\n\t.stake-row { display: grid; grid-template-columns: repeat(5, 1fr); gap: 8px; }\n\t.stake { padding: 12px 0; border-radius: 12px; border: 1px solid var(--color-border); background: var(--color-surface); color: var(--color-text); font-family: var(--font-display); font-weight: 700; font-size: 14px; cursor: pointer; }\n\t.stake.on { background: var(--color-violet); border-color: var(--color-violet); color: #fff; }\n\t@media (min-width: 640px) { .rp-overlay { align-items: center; } .rp-sheet { border-radius: 24px; margin: 0 16px; } }\n\t.coinwrap { display: inline-flex; align-items: center; gap: 3px; }\n\n\t.cols { margin-top: 26px; display: grid; grid-template-columns: 1fr; gap: 28px; align-items: start; }\n\t.feed-col { min-width: 0; display: flex; flex-direction: column; gap: 18px; }\n\t.timeline { display: flex; flex-direction: column; gap: 18px; }\n\t.feedpane { display: flex; flex-direction: column; gap: 18px; }\n\t.mob-only { display: flex; flex-direction: column; gap: 16px; }\n\t.side { display: none; flex-direction: column; gap: 16px; }\n\t/* mobile tabs */\n\t.mtabs { display: flex; gap: 4px; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: 12px; padding: 4px; }\n\t.mtabs button { flex: 1; border: none; background: none; color: var(--color-muted); font-family: inherit; font-size: 12px; font-weight: 700; border-radius: 9px; padding: 9px 0; cursor: pointer; }\n\t.mtabs button.on { background: var(--color-violet); color: #fff; }\n\t@media (max-width: 899px) {\n\t\t.hide-m { display: none; }\n\t}\n\t@media (min-width: 900px) {\n\t\t.cols { grid-template-columns: minmax(0, 1fr) 320px; gap: 32px; }\n\t\t.side { display: flex; position: sticky; top: 20px; }\n\t\t.mtabs, .mob-only, .mobile-treasury { display: none; }\n\t}\n\n\t.vault { background: linear-gradient(150deg, #19161f, var(--color-surface)); border: 1px solid #2e2742; border-radius: 16px; padding: 16px; }\n\t.vault-lbl { font-size: 10px; font-weight: 800; letter-spacing: 0.16em; text-transform: uppercase; color: var(--color-muted); }\n\t.vault-bal { display: flex; align-items: center; gap: 8px; margin-top: 8px; font-family: var(--font-display); font-size: 30px; font-weight: 900; letter-spacing: -0.03em; }\n\t.donate-row { display: flex; gap: 7px; margin-top: 14px; }\n\t.donate-row form { flex: 1; }\n\t.donate-btn { width: 100%; display: flex; align-items: center; justify-content: center; gap: 4px; border: none; cursor: pointer; border-radius: 8px; padding: 8px 0; font-family: var(--font-display); font-size: 13px; font-weight: 800; background: var(--color-violet-light); color: var(--color-violet); }\n\t.donate-btn:hover { filter: brightness(1.25); }\n\t.vault-note { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; margin-top: 12px; font-size: 11px; color: var(--color-muted); }\n\n\t.panel { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: 16px; padding: 14px 16px; }\n\t.panel-lbl { font-size: 10px; font-weight: 800; letter-spacing: 0.16em; text-transform: uppercase; color: color-mix(in srgb, var(--color-muted) 70%, transparent); }\n\t.rgrp { font-size: 9px; font-weight: 800; letter-spacing: 0.16em; text-transform: uppercase; color: color-mix(in srgb, var(--color-muted) 50%, transparent); margin: 14px 0 2px; }\n\t.mrow { display: flex; align-items: center; gap: 10px; padding: 7px 0; }\n\t.mrow .nm { font-size: 13.5px; font-weight: 700; color: var(--color-text); }\n\t.mtitle { margin-left: 6px; display: inline-flex; align-items: center; gap: 4px; vertical-align: 1px; border-radius: 6px; background: var(--color-violet-light); padding: 1px 7px; font-size: 10.5px; font-weight: 700; color: var(--color-violet); }\n\t.mtitle-x-form { display: inline-flex; }\n\t.mtitle-x { border: none; background: none; cursor: pointer; padding: 0 1px; font-size: 12px; line-height: 1; color: color-mix(in srgb, var(--color-violet) 60%, transparent); }\n\t.mtitle-x:hover { color: var(--color-violet); }\n\t.mrow .sub { font-size: 11px; color: var(--color-muted); }\n\t.mrow .xpc { margin-left: auto; font-size: 12px; font-weight: 800; color: var(--color-violet); }\n\t.mrow .xpc small { color: var(--color-muted); font-weight: 600; }\n\t.rank { font-size: 12px; font-weight: 900; color: var(--color-muted); width: 16px; text-align: center; flex-shrink: 0; }\n\n\t/* skeleton + invite (open member slots) */\n\t.skel-row { display: flex; align-items: center; gap: 10px; padding: 7px 0; }\n\t.skel-row.dim { opacity: 0.5; }\n\t.skel-dot { width: 30px; height: 30px; border-radius: 50%; background: var(--color-surface-2); flex-shrink: 0; }\n\t.skel-ll { flex: 1; display: flex; flex-direction: column; gap: 5px; }\n\t.skel-line { height: 8px; border-radius: 5px; background: var(--color-surface-2); }\n\t.invite-btn { width: 100%; margin-top: 10px; border: 1px solid var(--color-violet-light); background: var(--color-violet-light); color: var(--color-violet); border-radius: 10px; padding: 9px; font-size: 12px; font-weight: 700; cursor: pointer; }\n\t.invite-btn:hover { filter: brightness(1.2); }\n\t.empty-mini { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 16px 8px 6px; text-align: center; }\n\t.empty-mini p { font-size: 12px; color: var(--color-muted); line-height: 1.4; max-width: 220px; }\n\n\t.fsys { display: flex; align-items: center; gap: 10px; padding: 12px 16px; border: 1px solid var(--color-border); border-radius: 16px; background: rgba(124, 92, 255, 0.045); font-size: 13px; color: var(--color-muted); }\n\t.fsys-ic { width: 28px; height: 28px; border-radius: 50%; background: var(--color-violet-light); color: var(--color-violet); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }\n\t.fsys-ic svg { width: 15px; height: 15px; }\n\t.fsys b { color: var(--color-text); font-weight: 700; }\n\t.fsys-t { margin-left: auto; font-size: 11px; color: color-mix(in srgb, var(--color-muted) 70%, transparent); }\n\n\t.empty-feed, .locked { border: 1px dashed var(--color-border); border-radius: 16px; background: color-mix(in srgb, var(--color-surface) 50%, transparent); padding: 28px; text-align: center; }\n\t.empty-ic { display: inline-flex; width: 40px; height: 40px; border-radius: 50%; background: var(--color-violet-light); color: var(--color-violet); align-items: center; justify-content: center; }\n\t.empty-title { font-family: var(--font-display); font-size: 14px; font-weight: 800; margin-top: 12px; }\n\t.empty-sub { font-size: 12px; color: var(--color-muted); margin-top: 4px; line-height: 1.45; max-width: 280px; margin-left: auto; margin-right: auto; }\n\n\t.chip-v { background: var(--color-violet); color: #fff; font-size: 10px; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; padding: 3px 7px; border-radius: 6px; }\n</style>\n"],"version":3}