.room-text-control{position:relative;flex-shrink:0}.room-text-popover{position:absolute;right:0;top:calc(100% + 10px);z-index:65;width:232px;padding:16px;border-radius:14px;border:1px solid #ffffffb0;background:linear-gradient(135deg,#eff3f9b5,#e3e9f28c);backdrop-filter:blur(22px);box-shadow:0 12px 35px #21345025;color:var(--room-ink);box-sizing:border-box}.room-text-popover[hidden]{display:none}.room-text-popover header,.room-text-popover footer{display:flex;align-items:center;justify-content:space-between;gap:10px}.room-text-popover b{font-size:calc(12px * var(--pg-ts,1));font-weight:600}.room-text-popover output{font-size:calc(11px * var(--pg-ts,1));color:var(--room-blue);font-variant-numeric:tabular-nums}.room-text-popover label{display:flex;align-items:center;gap:11px;margin:17px 0}.room-text-popover label span{font-size:calc(11px * var(--pg-ts,1))}.room-text-popover label span:last-child{font-size:calc(19px * var(--pg-ts,1))}.room-text-popover input{width:100%;min-width:0;accent-color:#6579bc;cursor:pointer;height:18px}.room-text-popover footer small{font-size:calc(9px * var(--pg-ts,1));color:var(--room-muted)}.room-text-popover footer button{padding:3px 0;color:var(--room-blue);font-size:calc(10px * var(--pg-ts,1))}
:is(#party-preview,.party-preview).party-room .room-message p{font-size:var(--room-message-size,12px)}:is(#party-preview,.party-preview).party-room .room-composer textarea{font-size:var(--room-message-size,12px);height:calc(var(--room-message-size,12px)*4.0833);max-height:150px}.dark .room-text-popover{background:linear-gradient(135deg,#2e3b51ce,#1d2a3caa);border-color:#c4d8f02a}

/* 2026-10-03 Claude: my own messages sit on the right as bubbles with only the time below (no name or avatar), like a messenger. */
:is(#party-preview,.party-preview).party-room .room-message.is-mine{justify-content:flex-end;margin-bottom:14px}
:is(#party-preview,.party-preview).party-room .room-message.is-mine .room-message-copy{display:flex;flex-direction:column;align-items:flex-end;flex:0 1 auto;min-width:0;max-width:min(78%,560px)}
:is(#party-preview,.party-preview).party-room .room-message.is-mine .room-message-meta{order:2;display:flex;justify-content:flex-end;margin:4px 4px 0;min-height:0}
:is(#party-preview,.party-preview).party-room .room-message.is-mine .room-message-meta b{display:none}
:is(#party-preview,.party-preview).party-room .room-message.is-mine p{padding:8px 13px;border-radius:18px 18px 4px 18px;background:#4f63e6;color:#fff;white-space:pre-wrap;text-align:left}
:is(#party-preview,.party-preview).party-room .room-message.is-mine p a{color:#fff;text-decoration:underline}
:is(#party-preview,.party-preview).party-room .room-message.is-cont{margin-top:-16px}
:is(#party-preview,.party-preview).party-room .room-message.is-cont:not(.is-mine) .room-message-avatar{visibility:hidden;height:0}
:is(#party-preview,.party-preview).party-room .room-message.is-cont:not(.is-mine) .room-message-meta b{visibility:hidden}
:is(#party-preview,.party-preview).party-room .room-message.is-mine.is-cont{margin-top:-8px}
/* Other people: left-hand white bubbles, name above and time below. AI replies: a tinted card (service icon and model tag kept) so they read differently. */
:is(#party-preview,.party-preview).party-room .room-message:is(.is-other,.is-ai) .room-message-copy{display:flex;flex-direction:column;align-items:flex-start;flex:0 1 auto;min-width:0}
:is(#party-preview,.party-preview).party-room .room-message.is-other .room-message-copy{max-width:min(78%,560px)}
:is(#party-preview,.party-preview).party-room .room-message.is-ai .room-message-copy{max-width:min(92%,720px)}
:is(#party-preview,.party-preview).party-room .room-message:is(.is-other,.is-ai) .room-message-meta{display:contents}
:is(#party-preview,.party-preview).party-room .room-message:is(.is-other,.is-ai) .room-message-meta b{order:0;margin:0 0 4px 2px}
:is(#party-preview,.party-preview).party-room .room-message:is(.is-other,.is-ai) p{order:1}
:is(#party-preview,.party-preview).party-room .room-message:is(.is-other,.is-ai) .room-message-meta time{order:2;margin:4px 0 0 4px}
:is(#party-preview,.party-preview).party-room .room-message.is-other p{padding:8px 13px;border:1px solid #e1e7f0;border-radius:4px 18px 18px 18px;background:#fff;white-space:pre-wrap}
:is(#party-preview,.party-preview).party-room .room-message.is-ai p{padding:10px 14px;border:1px solid #e4defc;border-radius:14px;background:#f5f3ff;white-space:pre-wrap}
:is(#party-preview,.party-preview).party-room .room-message:is(.is-other,.is-ai){margin-bottom:16px}
:is(#party-preview,.party-preview).party-room .room-message.is-cont:is(.is-other,.is-ai) .room-message-meta b{display:none}
:is(#party-preview,.party-preview).party-room .room-message.is-cont:is(.is-other,.is-ai){margin-top:-10px}
body.dark :is(#party-preview,.party-preview).party-room .room-message.is-other p{background:#26324a;border-color:#33425c;color:#e4e9f2}
body.dark :is(#party-preview,.party-preview).party-room .room-message.is-ai p{background:#2b2a45;border-color:#3d3a63;color:#e4e9f2}
/* My own AI's replies sit on the right too (its service icon on the far right); other members' AIs stay on the left. */
:is(#party-preview,.party-preview).party-room .room-message.is-ai.is-mine-ai .room-message-meta b{margin:0 2px 4px 0}
:is(#party-preview,.party-preview).party-room .room-message.is-ai.is-mine-ai .room-message-meta time{margin:4px 2px 0 0}
:is(#party-preview,.party-preview).party-room .room-message.is-ai.is-mine-ai p{border-radius:14px 4px 14px 14px}
:is(#party-preview,.party-preview).party-room .room-message.is-ai.is-mine-ai{justify-content:flex-end}
:is(#party-preview,.party-preview).party-room .room-message.is-ai.is-mine-ai .room-message-copy{align-items:flex-end;margin-left:auto;max-width:min(80%,600px)}
:is(#party-preview,.party-preview).party-room .room-message.is-ai.is-mine-ai .room-message-meta b{display:inline-flex;align-items:center;gap:5px}
:is(#party-preview,.party-preview).party-room .room-message .room-name-icon{width:16px;height:16px;flex:none}
:is(#party-preview,.party-preview).party-room .room-message p a{color:#3550d8;text-decoration:underline;text-underline-offset:2px;overflow-wrap:anywhere;word-break:break-all}
:is(#party-preview,.party-preview).party-room .room-message.is-mine p a{color:#fff}
body.dark :is(#party-preview,.party-preview).party-room .room-message:not(.is-mine) p a{color:#9db0ff}
/* 2026-10-03 Claude: the party tabs draw their keyboard focus ring inside the button (outside it was cut off by the tab bar), and touch screens
   draw none (iPhone Safari showed it on the first tab after the window opened and focused it). */
[role=tab][data-room-section]:focus-visible{outline-offset:-3px}
@media (hover:none) and (pointer:coarse){[role=tab][data-room-section]:focus{outline:none!important}}
/* 2026-10-03 Claude: pictures in party chat bubbles (sized before they load), the full-screen picture viewer, and the composer's photo button. */
:is(#party-preview,.party-preview).party-room .room-message-image{display:block;position:relative;max-width:100%;height:auto;padding:0;margin:0 0 4px;border:1px solid #dfe5ef;border-radius:14px;overflow:hidden;background:#eef1f7;flex:none;font:inherit;color:inherit}
:is(#party-preview,.party-preview).party-room button.room-message-image{cursor:zoom-in}
:is(#party-preview,.party-preview).party-room .room-message-image img{display:block;width:100%;height:100%;object-fit:contain}
:is(#party-preview,.party-preview).party-room .room-message.is-mine .room-message-image{border-radius:14px 14px 4px 14px;align-self:flex-end}
:is(#party-preview,.party-preview).party-room .room-message.is-mine-ai .room-message-image{align-self:flex-end}
:is(#party-preview,.party-preview).party-room .room-message:is(.is-other,.is-ai) .room-message-image{order:1}
:is(#party-preview,.party-preview).party-room .room-message.has-image:is(.is-other,.is-ai) .room-message-image+p{order:1}
:is(#party-preview,.party-preview).party-room .room-message-image:focus-visible{outline:2px solid #4f63e6;outline-offset:2px}
body.dark :is(#party-preview,.party-preview).party-room .room-message-image{background:#1d2638;border-color:#33425c}
:is(#party-preview,.party-preview).party-room .room-compose-actions{gap:8px}
:is(#party-preview,.party-preview).party-room .room-compose-actions>span{flex:1;min-width:0}
/* The photo button matches the file-link button beside it (external-files.css): same size, frame and colour, in light and dark. */
:is(#party-preview,.party-preview).party-room .room-compose-actions .room-attach{display:grid;place-items:center;width:38px;height:38px;flex:none;padding:0;border:1px solid #cad5e5;border-radius:10px;background:#fff;color:var(--pg-accent);cursor:pointer}
:is(#party-preview,.party-preview).party-room .room-compose-actions .room-attach svg{width:20px;height:20px;display:block}
:is(#party-preview,.party-preview).party-room .room-compose-actions .room-attach:hover{background:#f3f5ff}
body.dark :is(#party-preview,.party-preview).party-room .room-compose-actions :is(.room-attach,.pg-room-attach){background:#ffffff10!important;border-color:#ffffff30!important;color:var(--pg-accent)!important}
html body :is(#party-preview,.party-preview).party-window.phone-screen .room-compose-actions :is(.room-attach,.pg-room-attach){width:40px!important;height:40px!important;min-width:40px;min-height:40px}
:is(#party-preview,.party-preview).party-room .room-composer.is-drop{outline:2px dashed #4f63e6;outline-offset:-4px}
.room-image-viewer{position:fixed;inset:0;width:100vw;height:100vh;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:#0a0e18eb;color:#fff;flex-direction:column;z-index:2147483000}
.room-image-viewer[open]{display:flex}
.room-image-viewer::backdrop{background:#0a0e1899}
.room-image-viewer header{display:flex;align-items:center;gap:10px;padding:max(12px,env(safe-area-inset-top)) 16px 12px}
.room-image-viewer-title{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.room-image-viewer-title b{font-size:calc(14px * var(--pg-ts,1));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.room-image-viewer-title small{font-size:calc(12px * var(--pg-ts,1));opacity:.7}
.room-image-viewer footer{display:flex;align-items:flex-end;gap:12px;padding:10px 16px max(14px,env(safe-area-inset-bottom))}
.room-image-viewer-download{flex:none;margin-left:auto;color:#fff;border:1px solid #ffffff59;border-radius:999px;padding:9px 16px;font-size:calc(13px * var(--pg-ts,1));line-height:1.2;text-decoration:none;white-space:nowrap}
.room-image-viewer-download:hover{background:#ffffff1a}
.room-image-viewer-close{flex:none;width:40px;height:40px;padding:0;border-radius:50%;border:0;background:#ffffff1f;color:#fff;font-size:calc(24px * var(--pg-ts,1));line-height:1;cursor:pointer}
.room-image-viewer img{flex:1;min-height:0;width:100%;object-fit:contain;padding:0 16px;box-sizing:border-box;cursor:zoom-out}
.room-image-viewer-caption{flex:1;min-width:0;margin:0;font-size:calc(14px * var(--pg-ts,1));line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere;max-height:30vh;overflow:auto}
.room-image-viewer-caption a{color:#9db0ff}
/* The picture viewer stays a dark photo screen over the app's glass dialog look (desktop) and the phone-screen look (phones: no side
   margins on its parts, the shared top bar in white on dark). */
html body:is(.dark,:not(.dark)) dialog#room-image-viewer.room-image-viewer{background:#0a0e18f2!important;background-image:none!important;color:#fff!important;border:0!important;border-radius:0!important;box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
html body:is(.dark,:not(.dark)) dialog#room-image-viewer.room-image-viewer>:is(img,footer,header){margin-left:0!important;margin-right:0!important}
html body:is(.dark,:not(.dark)) dialog#room-image-viewer.room-image-viewer :is(header,footer,b,.room-image-viewer-caption){color:#fff!important}
html body:is(.dark,:not(.dark)) dialog#room-image-viewer.room-image-viewer small{color:#ffffffb3!important}
html body:is(.dark,:not(.dark)) dialog#room-image-viewer.room-image-viewer>.phone-screen-bar{background:transparent!important;color:#fff!important;border-bottom-color:#ffffff1f!important}
html body:is(.dark,:not(.dark)) dialog#room-image-viewer.room-image-viewer>.phone-screen-bar :is(button,h2){color:#fff!important}
html body:is(.dark,:not(.dark)) dialog#room-image-viewer.room-image-viewer>:is(img,header,footer){background:transparent!important;box-shadow:none!important;border-radius:0!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
/* 2026-10-03 Claude: party materials download. In Party info it is one more section like 'Token contribution' and 'Project completion' (same rule
   line, heading and buttons, also on phones); above the leave buttons it is a tinted box with a filled button (red-tinted for the last member,
   whose leaving ends the party). */
.room-materials{border-top:1px solid #e1e4eb;padding-top:18px;margin-top:22px;display:grid;gap:8px;text-align:left}
.room-materials h3{margin:0;font-size:calc(16px * var(--pg-ts,1))}
.room-materials p{margin:0;font-size:calc(13px * var(--pg-ts,1));line-height:1.55}
.room-materials .room-materials-download{justify-self:start}
.dark .room-materials{border-color:#414650}
html body .phone-menu-screen .room-details .room-materials{padding-top:22px;border-top:1px solid var(--surface-border,#cbd5e1);margin-top:24px}
html body .phone-menu-screen .room-details .room-materials button{min-height:44px;padding:10px 14px;border:1px solid var(--surface-border,#cbd5e1);border-radius:12px}
.leave-materials{margin:12px 0;padding:12px 14px;border:1px solid #d9def7;border-radius:12px;background:#f3f5ff;display:grid;gap:8px;text-align:left}
.leave-materials.is-last{border-color:#f0c4b8;background:#fff4f0}
.leave-materials p{margin:0;font-size:calc(12.5px * var(--pg-ts,1));line-height:1.55;color:var(--surface-ink,#1f2a44)}
.leave-materials-download{justify-self:start;min-height:36px;padding:8px 16px;border:0;border-radius:999px;background:#4f63e6;color:#fff;font:inherit;font-size:calc(13px * var(--pg-ts,1));font-weight:600;cursor:pointer}
:is(.room-materials-download,.leave-materials-download):disabled{opacity:.6;cursor:progress}
:is(.room-materials,.leave-materials) .materials-status{font-size:calc(12px * var(--pg-ts,1));line-height:1.45;color:var(--surface-muted,#5b6880);overflow-wrap:anywhere}
:is(.room-materials,.leave-materials) .materials-status:empty{display:none}
body.dark .leave-materials{background:#4f63e61f;border-color:#4f63e655}
body.dark .leave-materials.is-last{background:#e0603a1f;border-color:#e0603a59}
body.dark .leave-materials p{color:#e4e9f2}
html body .phone-screen .leave-materials p{font-size:calc(14px * var(--pg-ts,1))}
html body .phone-screen .leave-materials-download{min-height:44px;font-size:calc(14px * var(--pg-ts,1))}
/* 2026-10-03 Claude: shared Project completion in Party info (party-completion.js): the same section look as before, a taller box for drafts,
   the result as a quote, and the action row. */
section.completion.pc-live textarea{height:120px}
section.completion.pc-live .pc-label{display:block;font-size:calc(13px * var(--pg-ts,1))}
section.completion.pc-live .pc-result{margin:10px 0 6px;padding:10px 12px;border-left:3px solid #4f63e6;border-radius:8px;background:#f3f5ff;white-space:pre-wrap;overflow-wrap:anywhere;font-size:calc(13px * var(--pg-ts,1));line-height:1.6}
section.completion.pc-live .pc-result a{color:#3550d8;text-decoration:underline}
section.completion.pc-live :is(.pc-meta,.pc-note,.pc-status){margin:6px 0 0;font-size:calc(12px * var(--pg-ts,1));line-height:1.5;color:var(--surface-muted,#5b6880)}
section.completion.pc-live .pc-note{color:#b5502d}
section.completion.pc-live .pc-status:empty{display:none}
section.completion.pc-live .pc-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
section.completion.pc-live .pc-ask-ai{border-color:#c9cff5;color:#3a4bd1}
section.completion.pc-live .vote-list{display:grid;gap:6px;margin:10px 0}
section.completion.pc-live .vote-list>div{display:flex;justify-content:space-between;gap:12px;font-size:calc(13px * var(--pg-ts,1))}
.dark section.completion.pc-live .pc-result{background:#4f63e61f;color:#e4e9f2}
.dark section.completion.pc-live .pc-result a{color:#9db0ff}
.dark section.completion.pc-live .pc-note{color:#f0a487}
html body .phone-menu-screen .room-details section.completion.pc-live .pc-result{font-size:calc(15px * var(--pg-ts,1))}
html body .phone-menu-screen .room-details section.completion.pc-live :is(.pc-meta,.pc-note,.pc-status){font-size:calc(13px * var(--pg-ts,1))}
html body .phone-menu-screen .room-details section.completion.pc-live .vote-list>div{font-size:calc(15px * var(--pg-ts,1))}
/* 2026-10-03 Claude: files uploaded from devices — a card in the bubble (type badge, name, size, download arrow) with a progress bar while
   uploading; the clip dialog's 'Upload from this device' choice. */
:is(#party-preview,.party-preview).party-room .room-file-card{position:relative;display:flex;align-items:center;gap:10px;width:min(300px,100%);max-width:100%;margin:0 0 4px;padding:10px 12px;border:1px solid #dfe5ef;border-radius:14px;background:#fff;color:var(--room-ink,#1f2a44);text-decoration:none;overflow:hidden;box-sizing:border-box;flex:none}
:is(#party-preview,.party-preview).party-room a.room-file-card{cursor:pointer}
:is(#party-preview,.party-preview).party-room .room-message.is-mine .room-file-card{align-self:flex-end;border-radius:14px 14px 4px 14px}
:is(#party-preview,.party-preview).party-room .room-message.is-mine-ai .room-file-card{align-self:flex-end}
:is(#party-preview,.party-preview).party-room .room-message:is(.is-other,.is-ai) .room-file-card{order:1}
:is(#party-preview,.party-preview).party-room .room-message.has-file:is(.is-other,.is-ai) .room-file-card+p{order:1}
:is(#party-preview,.party-preview).party-room .room-file-badge{flex:none;display:grid;place-items:center;width:38px;height:44px;border-radius:8px;background:#64748b;color:#fff;font:700 calc(10px * var(--pg-ts,1))/1 Arial,"PG Hangul",sans-serif;letter-spacing:.02em}
:is(#party-preview,.party-preview).party-room .kind-pdf .room-file-badge{background:#e5484d}
:is(#party-preview,.party-preview).party-room .kind-doc .room-file-badge{background:#3b6fe0}
:is(#party-preview,.party-preview).party-room .kind-sheet .room-file-badge{background:#1f9d55}
:is(#party-preview,.party-preview).party-room .kind-slides .room-file-badge{background:#e8772e}
:is(#party-preview,.party-preview).party-room .kind-archive .room-file-badge{background:#6b7280}
:is(#party-preview,.party-preview).party-room .kind-video .room-file-badge{background:#7c4ddb}
:is(#party-preview,.party-preview).party-room .kind-audio .room-file-badge{background:#d6409f}
:is(#party-preview,.party-preview).party-room .kind-image .room-file-badge{background:#0f9fae}
:is(#party-preview,.party-preview).party-room .kind-code .room-file-badge{background:#334155}
:is(#party-preview,.party-preview).party-room .room-file-info{min-width:0;flex:1;display:grid;gap:2px;text-align:left}
:is(#party-preview,.party-preview).party-room .room-file-info b{font-size:calc(13px * var(--pg-ts,1));font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
:is(#party-preview,.party-preview).party-room .room-file-info small{font-size:calc(11.5px * var(--pg-ts,1));color:var(--room-muted,#64748b)}
:is(#party-preview,.party-preview).party-room .room-file-get{flex:none;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#eef1fb;color:#4054df;font-weight:700}
:is(#party-preview,.party-preview).party-room a.room-file-card:hover .room-file-get{background:var(--pg-btn-bg-hover);color:var(--pg-btn-fg)}
:is(#party-preview,.party-preview).party-room .room-file-progress{position:absolute;left:0;bottom:0;height:3px;width:var(--p,0%);background:#4f63e6;transition:width .2s}
body.dark :is(#party-preview,.party-preview).party-room .room-file-card{background:#26324a;border-color:#33425c;color:#e4e9f2}
body.dark :is(#party-preview,.party-preview).party-room .room-file-info small{color:#a9b4c8}
body.dark :is(#party-preview,.party-preview).party-room .room-file-get{background:#ffffff14;color:var(--pg-accent)}
html body :is(#party-preview,.party-preview).party-window.phone-screen .room-file-card{width:min(320px,100%);padding:12px 14px}
html body :is(#party-preview,.party-preview).party-window.phone-screen .room-file-info b{font-size:calc(15px * var(--pg-ts,1))}
html body :is(#party-preview,.party-preview).party-window.phone-screen .room-file-info small{font-size:calc(13px * var(--pg-ts,1))}
html body :is(#party-preview,.party-preview).party-window.phone-screen .room-file-get{width:36px;height:36px}
.pg-file-choice.pg-file-device{border-color:#c9cff5}
/* 2026-10-03 Claude: direct (P2P) transfer card — status line under the name and a Receive button (or Save again) on the right. */
:is(#party-preview,.party-preview).party-room .room-p2p-card .room-p2p-status{display:block;font-size:calc(11.5px * var(--pg-ts,1));line-height:1.4;color:var(--room-muted,#64748b);white-space:normal}
:is(#party-preview,.party-preview).party-room .room-p2p-card .room-p2p-action{flex:none}
:is(#party-preview,.party-preview).party-room .room-p2p-card :is(.room-p2p-get,.room-p2p-save){display:inline-block;padding:6px 12px;border:0;border-radius:999px;background:var(--pg-btn-bg);color:var(--pg-btn-fg);font:inherit;font-size:calc(12px * var(--pg-ts,1));font-weight:600;text-decoration:none;cursor:pointer;white-space:nowrap}
:is(#party-preview,.party-preview).party-room .room-p2p-card .room-p2p-save{background:#eef1fb;color:#4054df}
:is(#party-preview,.party-preview).party-room .room-p2p-card .room-file-badge::after{content:'⇄';position:absolute;transform:translate(14px,-16px);font-size:calc(11px * var(--pg-ts,1));background:#fff;color:#4054df;border-radius:50%;width:16px;height:16px;display:grid;place-items:center;box-shadow:0 0 0 1px #c9cff5}
:is(#party-preview,.party-preview).party-room .room-p2p-card .room-file-badge{position:relative}
html body :is(#party-preview,.party-preview).party-window.phone-screen .room-p2p-card .room-p2p-status{font-size:calc(13px * var(--pg-ts,1))}
html body :is(#party-preview,.party-preview).party-window.phone-screen .room-p2p-card :is(.room-p2p-get,.room-p2p-save){min-height:40px;padding:10px 14px;font-size:calc(14px * var(--pg-ts,1))}
body.dark :is(#party-preview,.party-preview).party-room .room-p2p-card .room-p2p-save{background:#ffffff14;color:var(--pg-accent)}
.pg-file-choice.pg-file-p2p{border-color:#c9cff5}
/* 2026-10-03 Claude: delete a shared task (author or host) — a small × at the row's end; the first tap turns it into 'Delete?'. */
:is(#party-preview,.party-preview) .room-task-item{position:relative}
:is(#party-preview,.party-preview) .room-task-item .room-task-delete{flex:none;margin-left:8px;min-width:28px;height:28px;padding:0 8px;border:1px solid #dfe5ef;border-radius:999px;background:transparent;color:#8a94a8;font:inherit;font-size:calc(14px * var(--pg-ts,1));line-height:1;cursor:pointer}
:is(#party-preview,.party-preview) .room-task-item .room-task-delete:hover{color:#c2410c;border-color:#f0c4b8}
:is(#party-preview,.party-preview) .room-task-item .room-task-delete.is-asking{background:#c2410c;border-color:#c2410c;color:#fff;font-size:calc(12px * var(--pg-ts,1));font-weight:600}
html body :is(#party-preview,.party-preview).party-window.phone-screen .room-task-item .room-task-delete{min-width:40px;height:40px}
body.dark :is(#party-preview,.party-preview) .room-task-item .room-task-delete{border-color:#ffffff24;color:#a9b4c8}
/* 2026-10-03 Claude: the task form's Add button keeps its own height and lines up with the assignee picker (on phones it stretched to the
   height of the row and looked far too long). */
:is(#party-preview,.party-preview).party-room .room-task-form{align-items:center}
html body :is(#party-preview,.party-preview).party-window.phone-screen .room-task-form{align-items:center}
html body :is(#party-preview,.party-preview).party-window.phone-screen .room-task-form>button[type=submit]{align-self:center;height:44px;min-height:44px;padding:0 20px;border-radius:12px}
/* 2026-10-03 Claude: a file shared from a member's computer — same card, a small ↗ mark and an Open button. */
:is(#party-preview,.party-preview).party-room .room-share-card .room-file-badge{position:relative}
:is(#party-preview,.party-preview).party-room .room-share-card .room-file-badge::after{content:'↗';position:absolute;transform:translate(14px,-16px);font-size:calc(11px * var(--pg-ts,1));background:#fff;color:#1f9d55;border-radius:50%;width:16px;height:16px;display:grid;place-items:center;box-shadow:0 0 0 1px #b7e4c7}
:is(#party-preview,.party-preview).party-room .room-share-card .room-p2p-status{display:block;font-size:calc(11.5px * var(--pg-ts,1));line-height:1.4;color:var(--room-muted,#64748b);white-space:normal}
:is(#party-preview,.party-preview).party-room .room-share-card .room-share-open{display:inline-block;padding:6px 12px;border-radius:999px;background:#1f9d55;color:#fff;font-size:calc(12px * var(--pg-ts,1));font-weight:600;text-decoration:none;white-space:nowrap}
:is(#party-preview,.party-preview).party-room .room-message.is-mine-ai .room-share-card{align-self:flex-end}
html body :is(#party-preview,.party-preview).party-window.phone-screen .room-share-card .room-share-open{min-height:40px;padding:10px 14px;font-size:calc(14px * var(--pg-ts,1));display:inline-grid;place-items:center}
/* 2026-10-03 Claude: the AI card's model line — where the label comes from, and the owner's correction box. */
.room-ai-info .room-ai-model-source{display:block;margin-top:2px;color:#b45309;font-size:calc(11.5px * var(--pg-ts,1))}
.room-ai-info .room-ai-model-source.is-owner{color:#1f9d55}
.room-ai-info .room-ai-model-fix{display:inline-block;margin-top:6px;padding:4px 10px;border:1px solid #cad5e5;border-radius:999px;background:transparent;color:var(--pg-accent);font:inherit;font-size:calc(12px * var(--pg-ts,1));cursor:pointer}
.room-ai-info .room-ai-model-edit{display:grid;gap:4px;font-size:calc(12px * var(--pg-ts,1))}
.room-ai-info .room-ai-model-edit input{font:inherit;font-size:calc(14px * var(--pg-ts,1));padding:7px 9px;border:1px solid #cad5e5;border-radius:8px;min-width:0}
.room-ai-info .room-ai-model-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.room-ai-info .room-ai-model-actions button{padding:5px 12px;border-radius:999px;border:1px solid #cad5e5;background:#fff;font:inherit;font-size:calc(12px * var(--pg-ts,1));cursor:pointer}
.room-ai-info .room-ai-model-actions [data-model-save]{background:var(--pg-btn-bg);border-color:var(--pg-btn-bg);color:var(--pg-btn-fg)}
.room-ai-info .room-ai-model-status{display:block;color:#b91c1c;font-size:calc(12px * var(--pg-ts,1))}
.room-ai-info .room-ai-model-status:empty{display:none}
body.dark .room-ai-info .room-ai-model-source{color:#f6ad55}
body.dark .room-ai-info .room-ai-model-source.is-owner{color:#68d391}
/* 2026-10-03 Claude: the composer's single '+' and its short list (external-files-home.js) — one entry for photos, files, direct send and links. */
:is(#party-preview,.party-preview).party-room form.room-composer{position:relative}
:is(#party-preview,.party-preview).party-room .room-compose-actions .pg-room-attach{display:grid!important;place-items:center;padding:0!important;font-size:0!important}
:is(#party-preview,.party-preview).party-room .room-compose-actions .pg-room-attach svg{width:22px;height:22px;display:block;transition:transform .15s ease}
:is(#party-preview,.party-preview).party-room .room-compose-actions .pg-room-attach[aria-expanded="true"]{background:#eef2ff!important}
:is(#party-preview,.party-preview).party-room .room-compose-actions .pg-room-attach[aria-expanded="true"] svg{transform:rotate(45deg)}
:is(#party-preview,.party-preview).party-room .room-add-menu{position:absolute;left:8px;bottom:calc(100% + 8px);z-index:60;box-sizing:border-box;width:min(280px,calc(100% - 16px));display:flex;flex-direction:column;gap:2px;margin:0;padding:6px;background:#fff;color:#1f2a44;border:1px solid #dbe3ef;border-radius:14px;box-shadow:0 14px 34px rgba(18,32,58,.18)}
:is(#party-preview,.party-preview).party-room .room-add-menu [data-add]{display:flex;align-items:center;gap:12px;box-sizing:border-box;width:100%;min-height:48px;margin:0;padding:7px 10px;border:0;border-radius:10px;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}
:is(#party-preview,.party-preview).party-room .room-add-menu [data-add]:hover,:is(#party-preview,.party-preview).party-room .room-add-menu [data-add]:focus-visible{background:#f1f5fb;outline:none}
:is(#party-preview,.party-preview).party-room .room-add-menu .room-add-icon{flex:none;display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:#eef2ff;color:var(--pg-accent)}
:is(#party-preview,.party-preview).party-room .room-add-menu .room-add-icon svg{width:20px;height:20px;display:block}
:is(#party-preview,.party-preview).party-room .room-add-menu .room-add-text{display:flex;flex-direction:column;min-width:0}
:is(#party-preview,.party-preview).party-room .room-add-menu .room-add-text b{font-size:calc(14px * var(--pg-ts,1));font-weight:600;line-height:1.3}
:is(#party-preview,.party-preview).party-room .room-add-menu .room-add-text small{font-size:calc(12px * var(--pg-ts,1));line-height:1.3;color:#5b6880;margin-top:1px}
body.dark :is(#party-preview,.party-preview).party-room .room-add-menu{background:#1d2738;color:#e3eaf6;border-color:#33425e;box-shadow:0 14px 34px rgba(0,0,0,.45)}
body.dark :is(#party-preview,.party-preview).party-room .room-add-menu [data-add]:hover,body.dark :is(#party-preview,.party-preview).party-room .room-add-menu [data-add]:focus-visible{background:#26324a}
body.dark :is(#party-preview,.party-preview).party-room .room-add-menu .room-add-icon{background:#2c3a55;color:var(--pg-accent)}
body.dark :is(#party-preview,.party-preview).party-room .room-add-menu .room-add-text small{color:#aab8d0}
body.dark :is(#party-preview,.party-preview).party-room .room-compose-actions .pg-room-attach[aria-expanded="true"]{background:#2c3a55!important}
/* 2026-10-03 Claude: '@' list, 'my AI only' mode and mention marks (party-mentions.js). */
:is(#party-preview,.party-preview).party-room .room-mention-list{position:absolute;left:8px;bottom:calc(100% + 8px);z-index:61;box-sizing:border-box;width:min(320px,calc(100% - 16px));max-height:min(340px,50vh);overflow:auto;display:flex;flex-direction:column;gap:2px;padding:6px;background:#fff;color:#1f2a44;border:1px solid #dbe3ef;border-radius:14px;box-shadow:0 14px 34px rgba(18,32,58,.18)}
:is(#party-preview,.party-preview).party-room .room-mention-list [role=option]{display:flex;align-items:center;gap:10px;box-sizing:border-box;width:100%;min-height:44px;margin:0;padding:6px 8px;border:0;border-radius:10px;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}
:is(#party-preview,.party-preview).party-room .room-mention-list [role=option][aria-selected="true"],:is(#party-preview,.party-preview).party-room .room-mention-list [role=option]:hover{background:#f1f5fb}
:is(#party-preview,.party-preview).party-room .room-mention-face{flex:none;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#eef2ff;color:#4054df;font-size:calc(13px * var(--pg-ts,1));font-weight:700;overflow:hidden}
:is(#party-preview,.party-preview).party-room .room-mention-face img{width:100%;height:100%;object-fit:cover;image-rendering:pixelated}
:is(#party-preview,.party-preview).party-room .room-mention-list [data-kind="private"] .room-mention-face{background:#1f2a44;color:#fff}
:is(#party-preview,.party-preview).party-room .room-mention-text{display:flex;flex-direction:column;min-width:0}
:is(#party-preview,.party-preview).party-room .room-mention-text b{font-size:calc(14px * var(--pg-ts,1));font-weight:600;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
:is(#party-preview,.party-preview).party-room .room-mention-text small{font-size:calc(12px * var(--pg-ts,1));line-height:1.3;color:#5b6880}
:is(#party-preview,.party-preview).party-room form.room-composer .room-private-chip{display:flex;align-items:center;gap:8px;margin:0 0 8px;padding:6px 6px 6px 10px;border-radius:10px;background:#1f2a44;color:#fff;font-size:calc(12px * var(--pg-ts,1));line-height:1.35}
:is(#party-preview,.party-preview).party-room form.room-composer .room-private-chip span{flex:1;min-width:0}
:is(#party-preview,.party-preview).party-room form.room-composer .room-private-chip .room-private-off{flex:none;width:28px;height:28px;min-width:28px;padding:0;border:0;border-radius:50%;background:#ffffff1f;color:#fff;font-size:calc(16px * var(--pg-ts,1));line-height:1;cursor:pointer}
:is(#party-preview,.party-preview).party-room form.room-composer.is-private{border-color:#1f2a44!important;box-shadow:0 0 0 1px #1f2a44 inset}
:is(#party-preview,.party-preview).party-room form.room-composer.is-private [type=submit]{background:#1f2a44!important;color:#fff!important}
:is(#party-preview,.party-preview).party-room .room-message.is-private .room-message-copy>p,:is(#party-preview,.party-preview).party-room .room-message.is-private .room-message-copy{outline:1px dashed #8a97ad;outline-offset:2px;border-radius:12px}
:is(#party-preview,.party-preview).party-room .room-private-tag{display:inline-flex;align-items:center;gap:4px;margin-left:6px;font-size:calc(11px * var(--pg-ts,1));font-weight:600;color:#5b6880}
:is(#party-preview,.party-preview).party-room .room-private-tag::before{content:"🔒";font-size:calc(10px * var(--pg-ts,1))}
:is(#party-preview,.party-preview).party-room .room-mention{font-weight:700;color:#3348d6}
:is(#party-preview,.party-preview).party-room .room-message.is-mine .room-mention{color:inherit;text-decoration:underline;text-underline-offset:2px}
:is(#party-preview,.party-preview).party-room .room-message.is-mention-me .room-message-copy>p{box-shadow:0 0 0 2px #ffcf4a;border-radius:12px}
.party-mention-badge{position:absolute;top:10px;right:10px;z-index:3;min-width:22px;height:22px;padding:0 6px;box-sizing:border-box;border-radius:11px;background:#ff5a5f;color:#fff;font:700 calc(12px * var(--pg-ts,1))/22px -apple-system,BlinkMacSystemFont,"PG Hangul","Apple SD Gothic Neo",Arial,sans-serif;text-align:center;box-shadow:0 2px 6px rgba(0,0,0,.18)}
.party[data-id]{position:relative}
.pg-mention-toast{position:fixed;left:50%;top:14px;z-index:2147483000;transform:translate(-50%,-12px);opacity:0;transition:opacity .18s,transform .18s;display:flex;align-items:center;gap:4px;max-width:min(420px,calc(100vw - 24px));padding:6px;background:#fff;color:#1f2a44;border:1px solid #dbe3ef;border-radius:14px;box-shadow:0 14px 34px rgba(18,32,58,.22)}
.pg-mention-toast.is-visible{opacity:1;transform:translate(-50%,0)}
.pg-mention-toast .pg-mention-open{display:flex;align-items:center;gap:10px;min-width:0;padding:6px 8px;border:0;border-radius:10px;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}
.pg-mention-toast .pg-mention-at{flex:none;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#ff5a5f;color:#fff;font-weight:700}
.pg-mention-toast .pg-mention-copy{display:flex;flex-direction:column;min-width:0}
.pg-mention-toast .pg-mention-copy b{font-size:calc(14px * var(--pg-ts,1))}
.pg-mention-toast .pg-mention-copy small{font-size:calc(12px * var(--pg-ts,1));color:#5b6880;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pg-mention-toast .pg-mention-close{flex:none;width:32px;height:32px;padding:0;border:0;border-radius:50%;background:transparent;color:#5b6880;font-size:calc(18px * var(--pg-ts,1));cursor:pointer}
body.dark :is(#party-preview,.party-preview).party-room .room-mention-list,body.dark .pg-mention-toast{background:#1d2738;color:#e3eaf6;border-color:#33425e}
body.dark :is(#party-preview,.party-preview).party-room .room-mention-list [role=option][aria-selected="true"],body.dark :is(#party-preview,.party-preview).party-room .room-mention-list [role=option]:hover{background:#26324a}
body.dark :is(#party-preview,.party-preview).party-room .room-mention-text small,body.dark .pg-mention-toast .pg-mention-copy small,body.dark :is(#party-preview,.party-preview).party-room .room-private-tag{color:#aab8d0}
body.dark :is(#party-preview,.party-preview).party-room .room-mention{color:#9db0ff}
