.party-root { min-width: 0; }
.party-error:empty { display: none; }
.party-error { color: var(--weave-color-danger); }
.party-layout { display: grid; grid-template-columns: 224px minmax(0, 1fr); gap: var(--weave-space-6); }
.party-list, .party-stack, .party-detail { min-width: 0; }
.party-list h3 { font-size: var(--weave-text-md); margin-block: var(--weave-space-6) var(--weave-space-2); }
.party-person { width: 100%; display: flex; align-items: baseline; flex-wrap: wrap; gap: var(--weave-space-2); border: 0; border-bottom: 1px solid var(--weave-color-rule); background: transparent; text-align: left; padding: var(--weave-space-3); color: var(--weave-color-ink); font: inherit; }
.party-person strong { font-size: var(--weave-text-sm); }
.party-person > span { color: var(--weave-color-secondary); font-size: var(--weave-text-xs); }
.party-person[aria-pressed=true] { background: var(--weave-color-selected); border-radius: var(--weave-radius-sm); }
.party-detail > h2 { margin: 0 0 var(--weave-space-4); font-family: var(--weave-font-display); }
.party-columns { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(240px, 1fr); gap: var(--weave-space-4); }
.party-card { min-width: 0; padding: var(--weave-space-4); border: 1px solid var(--weave-color-rule); border-radius: var(--weave-radius-md); background: var(--weave-color-paper); }
.party-card h3 { margin: 0 0 var(--weave-space-3); font-family: var(--weave-font-display); color: var(--weave-color-action); font-size: var(--weave-text-md); }
.party-stack { display: flex; flex-direction: column; gap: var(--weave-space-4); }
.party-messages { display: flex; flex-direction: column; min-height: 580px; }
.party-history { flex: 1; display: flex; flex-direction: column; align-items: flex-start; gap: var(--weave-space-3); justify-content: flex-end; overflow-y: auto; max-height: 52vh; padding-block: var(--weave-space-3); }
.party-message { max-width: 90%; padding: var(--weave-space-3); border-radius: var(--weave-radius-sm); background: var(--weave-color-hover); overflow-wrap: anywhere; }
.party-message p { white-space: pre-wrap; margin: 0 0 var(--weave-space-2); }
.party-message small { color: var(--weave-color-secondary); font-size: var(--weave-text-2xs); }
.party-message button { margin-left: var(--weave-space-2); font-size: var(--weave-text-xs); }
.party-outgoing { align-self: flex-end; background: var(--weave-color-selected); }
.party-secret { background: var(--weave-color-warning-surface); border: 1px dashed var(--weave-color-warning); }
.party-composer { border-top: 1px solid var(--weave-color-rule); padding-top: var(--weave-space-3); display: flex; flex-direction: column; gap: var(--weave-space-2); }
.party-compose-line { display: flex; align-items: center; gap: var(--weave-space-3); }
.party-compose-line textarea { flex: 1; min-width: 0; }
.party-composer select { max-width: 100%; align-self: flex-start; }
.party-help { color: var(--weave-color-secondary); font-size: var(--weave-text-xs); margin: 0; }
.party-to { display: flex; flex-wrap: wrap; align-items: center; gap: var(--weave-space-2); font-size: var(--weave-text-xs); }
.party-chip { padding: var(--weave-space-1) var(--weave-space-2); border: 1px solid var(--weave-color-rule); border-radius: var(--weave-radius-full); background: var(--weave-color-hover); color: var(--weave-color-secondary); font: inherit; }
.party-chip[aria-pressed=true] { background: var(--weave-color-selected); }
.party-task { display: block; width: 100%; border: 0; background: transparent; text-align: left; font: inherit; font-size: var(--weave-text-sm); padding: var(--weave-space-2) 0; color: var(--weave-color-ink); overflow-wrap: anywhere; }
.party-task[aria-pressed=true] { text-decoration: line-through; color: var(--weave-color-secondary); }
.party-status { display: flex; justify-content: space-between; gap: var(--weave-space-3); font-size: var(--weave-text-sm); margin: var(--weave-space-2) 0; }
.party-status span:last-child, .party-status small { color: var(--weave-color-secondary); }
.party-behind { border-color: var(--weave-color-warning); }
.party-behind .party-status span:last-child { color: var(--weave-color-warning); }
.party-timeline { display: flex; flex-wrap: wrap; gap: 2px; margin-bottom: var(--weave-space-3); }
.party-span, .party-flag { min-width: 0; flex-basis: 60px; padding: var(--weave-space-2); background: var(--weave-color-selected); font-size: var(--weave-text-xs); border-radius: var(--weave-radius-sm); overflow-wrap: anywhere; }
.party-flag { background: var(--weave-color-warning-surface); }
.party-add { display: flex; flex-wrap: wrap; gap: var(--weave-space-2); margin-top: var(--weave-space-2); }
.party-add input { min-width: 0; width: 100%; }
.party-editor[open] { display: block; padding: var(--weave-space-6); width: min(780px, 100%); max-width: 100%; }
#playerDmInbox { margin-block: var(--weave-space-6); display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: var(--weave-space-4); }
#playerDmInbox[hidden] { display: none; }
#playerDmInbox .party-messages { min-height: 300px; }
@media (max-width: 1100px) { .party-layout { grid-template-columns: 180px minmax(0, 1fr); } .party-columns { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 640px) { .party-layout, #playerDmInbox { grid-template-columns: minmax(0, 1fr); } .party-list { max-height: 220px; overflow-y: auto; } .party-messages { min-height: 380px; } .party-card { padding: var(--weave-space-3); } }

.party-schedule { display: flex; flex-wrap: wrap; gap: var(--weave-space-3); margin-top: var(--weave-space-3); }
.party-schedule label { display: flex; flex: 1 1 120px; flex-direction: column; gap: var(--weave-space-1); font-size: var(--weave-text-sm); min-width: 0; }
.party-schedule label:last-of-type { flex-basis: 100%; }
.party-schedule input { width: 100%; min-width: 0; box-sizing: border-box; }
.party-schedule button { min-height: 44px; padding-inline: var(--weave-space-2); }
