#room-friend-invites:has(#room-ai-tab[aria-selected=true]){width:460px;max-height:calc(100dvh - 48px);overflow-y:auto;}
#room-ai-panel .ai-invite-lead{font-size:calc(14px * var(--pg-ts,1));line-height:1.65;margin:8px 0 20px;color:inherit;}
.ai-invite-apps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;}
#room-ai-panel .ai-invite-apps button{min-height:48px;padding:10px 8px;border:1px solid var(--pg-glass-line,#bbc8d8);border-radius:10px;font-size:calc(13px * var(--pg-ts,1));color:inherit;background:var(--pg-glass-field,rgba(255,255,255,.4));}
#room-ai-panel .ai-invite-apps button[aria-pressed=true]{border-color:#566bd6;background:#5268d51a;box-shadow:inset 0 0 0 1px #566bd6;}
#room-ai-panel .ai-invite-consent{display:flex;align-items:flex-start;gap:10px;margin:20px 0;font-size:calc(13px * var(--pg-ts,1));line-height:1.7;}
#room-ai-panel input[type=checkbox]{width:18px;height:18px;flex:none;margin:3px 0 0;accent-color:#4054df;}
#room-ai-panel .ai-invite-primary{width:100%;min-height:50px;padding:13px 18px;background:var(--pg-btn-bg);color:var(--pg-btn-fg);border:0;border-radius:12px;font-size:calc(15px * var(--pg-ts,1));font-weight:650;}
#room-ai-panel button:disabled{opacity:.55;cursor:not-allowed;}
#room-ai-panel h4{margin:20px 0 10px;font-size:calc(20px * var(--pg-ts,1));}
#room-ai-panel [data-connection-status]{display:inline-block;font-size:calc(13px * var(--pg-ts,1));border-radius:20px;padding:6px 12px;background:#7888a41a;color:inherit;}
#room-ai-panel [data-state=connected]{background:#34836a20;color:#23735b;}
body.dark #room-ai-panel [data-state=connected]{color:#8ad4b7;}
.ai-invitation-code{margin:16px 0;}.ai-invitation-code summary,.ai-invite-permissions summary{min-height:44px;display:flex;align-items:center;font-size:calc(13px * var(--pg-ts,1));cursor:pointer;}
#room-ai-panel textarea{box-sizing:border-box;width:100%;min-height:180px;max-height:240px;resize:vertical;padding:14px;border:1px solid var(--pg-glass-line,#bbc8d8);border-radius:10px;background:var(--pg-glass-field,#fff);color:inherit;font:calc(12px * var(--pg-ts,1))/1.6 ui-monospace,monospace;}
#room-ai-panel .ai-invite-note,#room-ai-panel .ai-invite-feedback{font-size:calc(12px * var(--pg-ts,1));line-height:1.7;margin:14px 0;min-height:0;color:inherit;}
.ai-invite-controls{display:flex;flex-wrap:wrap;gap:8px;}.ai-invite-controls button,.ai-invite-existing button,.ai-invite-back{min-height:44px;padding:9px 10px;font-size:calc(13px * var(--pg-ts,1));color:inherit;border:1px solid var(--pg-glass-line,#bbc8d8);border-radius:8px;}
.ai-invite-existing{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;}.ai-invite-permissions{margin-top:16px;}.ai-invite-permissions label{display:flex;justify-content:space-between;align-items:center;min-height:44px;font-size:calc(13px * var(--pg-ts,1));}.ai-invite-permissions p{font-size:calc(12px * var(--pg-ts,1));line-height:1.7;}
.room-live-ai{display:flex;gap:7px;flex-wrap:wrap;}.room-live-ai button{display:flex;align-items:center;gap:6px;min-height:36px;padding:6px 10px;border:1px solid var(--pg-glass-line,#b6c4d8);border-radius:10px;color:inherit;background:transparent;font-size:calc(12px * var(--pg-ts,1));}.room-live-ai small{font-size:calc(10px * var(--pg-ts,1));}.room-ai-sync-status{font-size:calc(12px * var(--pg-ts,1));line-height:1.6;color:#a64232;margin:6px 0;}.room-message-avatar.live-ai-avatar{display:grid;place-items:center;color:#4054df;background:#5368d514;font-size:calc(20px * var(--pg-ts,1));}
@media(max-width:760px){#room-friend-invites:has(#room-ai-tab[aria-selected=true]){width:100vw;max-height:100dvh;}#room-ai-panel textarea{font-size:calc(16px * var(--pg-ts,1));}#room-ai-panel .ai-invite-apps button{font-size:calc(14px * var(--pg-ts,1));}}

.ai-invite-list-head{display:flex;align-items:center;justify-content:space-between;margin-top:22px;gap:12px}.ai-invite-list-head h4{margin:0!important;font-size:calc(16px * var(--pg-ts,1))!important}.ai-invite-existing{display:grid;grid-template-columns:1fr;width:100%}.ai-invite-existing button{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;text-align:start}.ai-invite-existing b{overflow-wrap:anywhere}.ai-invite-existing span{flex:none;font-size:calc(12px * var(--pg-ts,1))}.ai-invite-existing>p{font-size:calc(13px * var(--pg-ts,1));color:inherit}.ai-invite-consent span{overflow-wrap:anywhere}

/* 2026-10-03 Claude: AI icons on the right of the people row (status dot), and the small AI card (bottom sheet on phones). */
.room-people>:is(.room-live-ai,.room-peer-ai){margin-left:auto;display:flex;gap:6px;align-items:center;flex-wrap:nowrap}.room-people>.room-live-ai+.room-peer-ai,.room-people>.room-peer-ai+.room-live-ai{margin-left:0}
:is(.room-live-ai,.room-peer-ai) .room-ai-chip{position:relative;width:34px;height:34px;min-height:34px;padding:0;border-radius:50%;border:1px solid var(--pg-glass-line,#c9d4e4);background:#fff;display:grid;place-items:center;cursor:pointer;font-size:0}
:is(.room-live-ai,.room-peer-ai) .room-ai-chip .ai-service-icon{width:20px;height:20px}
.room-ai-dot{position:absolute;right:-2px;bottom:-2px;width:11px;height:11px;border-radius:50%;border:2px solid #fff;background:#9aa6b8}
.room-ai-chip.is-connected .room-ai-dot{background:#2fb36b}.room-ai-chip.is-paused .room-ai-dot{background:#e0a92e}
body.dark :is(.room-live-ai,.room-peer-ai) .room-ai-chip{background:#26324a;border-color:#3a4a66}body.dark .room-ai-dot{border-color:#26324a}
.room-ai-model{margin-left:4px;padding:1px 6px;border-radius:8px;background:#eef1f8;color:#55627a;font-size:calc(11px * var(--pg-ts,1));font-weight:600;vertical-align:1px}
body.dark .room-ai-model{background:#2c3a51;color:#c3cde0}
.room-ai-info-back{position:fixed;inset:0;z-index:2147483000;background:transparent}
.room-ai-info{position:fixed;z-index:2147483001;width:min(320px,calc(100vw - 24px));padding:16px 18px 14px;border:1px solid #dfe5ef;border-radius:16px;background:#fff;color:#243147;box-shadow:0 16px 48px #14223d33;font-size:calc(13px * var(--pg-ts,1));box-sizing:border-box}
.room-ai-info header{display:flex;align-items:center;gap:10px;margin-bottom:10px}.room-ai-info header h3{flex:1;margin:0;font-size:calc(15px * var(--pg-ts,1));line-height:1.3}
.room-ai-info header .ai-service-icon{width:26px;height:26px}
.room-ai-info .room-ai-info-close{width:32px;height:32px;border:0;background:none;font-size:calc(20px * var(--pg-ts,1));line-height:1;cursor:pointer;color:inherit}
.room-ai-info dl{display:grid;grid-template-columns:auto 1fr;gap:6px 12px;margin:0}.room-ai-info dt{color:#65748b}.room-ai-info dd{margin:0;overflow-wrap:anywhere}
.room-ai-info small{color:#7a879b;font-size:calc(11px * var(--pg-ts,1))}
.room-ai-info footer{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
.room-ai-info footer button{min-height:40px;padding:8px 14px;border-radius:10px;border:1px solid #cfd8e6;background:#fff;color:inherit;cursor:pointer}
.room-ai-info footer .room-ai-info-manage{background:var(--pg-btn-bg);border-color:var(--pg-btn-bg);color:var(--pg-btn-fg)}
body.dark .room-ai-info{background:#1f2a3d;color:#e4e9f2;border-color:#33425c}body.dark .room-ai-info footer button{background:#26324a;border-color:#3a4a66}
@media (max-width:700px),(hover:none) and (pointer:coarse) and (max-height:500px){.room-ai-info{left:12px!important;right:12px;top:auto!important;bottom:calc(12px + env(safe-area-inset-bottom));width:auto;border-radius:18px}.room-ai-info-back{background:#14223d33}}
/* The model is a small pill next to the AI's name, not a full line. */
.room-message-meta .room-ai-model,.room-ai-model{display:inline-block!important;width:auto!important;max-width:none;flex:none;align-self:center;margin-left:6px;line-height:1.5}
/* 2026-10-03 Claude: an AI that keeps checking the party is green, one that stopped is orange ('asleep'), one never seen is grey; while one is asleep
   a line above the message box offers 'Wake' (its owner) or 'Ask to wake' (everyone else). */
.room-ai-chip.is-asleep .room-ai-dot{background:#f08a24}.room-ai-chip.is-unknown .room-ai-dot{background:#a3adbd}
.room-ai-wake{display:flex;align-items:center;gap:8px;margin:0 0 8px;padding:8px 8px 8px 12px;border:1px solid #f6c89f;border-radius:12px;background:#fff6ec;color:#6b3d12;font-size:calc(13px * var(--pg-ts,1));line-height:1.35}
.room-ai-wake p{flex:1;min-width:0;margin:0;overflow-wrap:anywhere}
.room-ai-wake-dot{flex:none;width:8px;height:8px;border-radius:50%;background:#f08a24}
:is(#party-preview,.party-preview,.party-window) .room-ai-wake .room-ai-wake-go{flex:none;min-height:34px;padding:6px 14px;border:0;border-radius:999px;background:var(--pg-btn-bg);color:var(--pg-btn-fg);font-weight:600;white-space:nowrap;cursor:pointer}
:is(#party-preview,.party-preview,.party-window) .room-ai-wake .room-ai-wake-x{flex:none;width:32px;height:32px;padding:0;border:0;border-radius:50%;background:transparent;color:inherit;font-size:calc(18px * var(--pg-ts,1));line-height:1;cursor:pointer}
.room-ai-info footer .room-ai-info-wake{background:#e8761a;border-color:#e8761a;color:#fff}
.room-ai-wake-copied{margin:0 0 6px;font-weight:600}
.room-ai-wake-steps{margin:0 0 8px;padding-left:20px;line-height:1.45}.room-ai-wake-steps li+li{margin-top:4px}
.room-ai-wake-text{display:block;width:100%;box-sizing:border-box;margin:0;padding:8px 10px;border:1px solid #dfe5ef;border-radius:10px;background:#f7f9fc;color:inherit;font-family:inherit;font-size:calc(12px * var(--pg-ts,1));line-height:1.45;resize:none}
.room-ai-info footer .room-ai-wake-open{display:inline-flex;align-items:center;min-height:40px;padding:8px 14px;border-radius:10px;background:var(--pg-btn-bg);color:var(--pg-btn-fg);text-decoration:none;font-weight:600}
body.dark .room-ai-wake{background:#3a2a1c;border-color:#6b4a2a;color:#f6d8bb}body.dark .room-ai-wake-text{background:#26324a;border-color:#3a4a66}
.room-ai-info footer{flex-wrap:wrap}.room-ai-info footer :is(button,a){white-space:nowrap}
@media (max-width:700px),(hover:none) and (pointer:coarse) and (max-height:500px){.room-ai-wake{margin:0 0 6px;font-size:calc(12.5px * var(--pg-ts,1))}}
/* 2026-10-03 Claude: install line for the Playground channel (above the message box) and its guide card. */
.room-channel-tip{display:flex;align-items:center;gap:8px;margin:0 0 8px;padding:8px 8px 8px 12px;border:1px solid #d6dcfb;border-radius:12px;background:#f2f4ff;color:#2f3d78;font-size:calc(13px * var(--pg-ts,1));line-height:1.35}
.room-channel-tip p{flex:1;min-width:0;margin:0;overflow-wrap:anywhere}.room-channel-tip-icon{flex:none;color:#5868e8}
:is(#party-preview,.party-preview,.party-window) .room-channel-tip .room-channel-tip-go{flex:none;min-height:34px;padding:6px 14px;border:0;border-radius:999px;background:var(--pg-btn-bg);color:var(--pg-btn-fg);font-weight:600;white-space:nowrap;cursor:pointer}
:is(#party-preview,.party-preview,.party-window) .room-channel-tip .room-channel-tip-x{flex:none;width:32px;height:32px;padding:0;border:0;border-radius:50%;background:transparent;color:var(--pg-accent);font-size:calc(18px * var(--pg-ts,1));line-height:1;cursor:pointer}
.room-ai-info.is-guide{width:min(440px,calc(100vw - 24px))}
.room-channel-intro{margin:0 0 10px;line-height:1.5}.room-channel-note{margin:10px 0 0;color:#65748b;font-size:calc(12px * var(--pg-ts,1));line-height:1.45}
.room-channel-steps{margin:0;padding-left:20px;line-height:1.45}.room-channel-steps li+li{margin-top:8px}
.room-channel-cmd{display:flex;align-items:flex-start;gap:6px;margin-top:4px}
.room-channel-cmd code{flex:1;min-width:0;padding:6px 8px;border-radius:8px;background:#f1f4f9;font-size:calc(11.5px * var(--pg-ts,1));line-height:1.45;overflow-wrap:anywhere;word-break:break-all;white-space:pre-wrap}
.room-channel-cmd button{flex:none;min-height:30px;padding:4px 10px;border:1px solid #cfd8e6;border-radius:8px;background:#fff;color:inherit;font-size:calc(12px * var(--pg-ts,1));cursor:pointer}
.room-ai-info footer .room-channel-invite{background:var(--pg-btn-bg);border-color:var(--pg-btn-bg);color:var(--pg-btn-fg)}
body.dark .room-channel-tip{background:#232c4a;border-color:#3a4772;color:#d8def8}body.dark .room-channel-cmd code{background:#26324a}body.dark .room-channel-cmd button{background:#26324a;border-color:#3a4a66}
/* 2026-10-03 Claude: 'Who can instruct it' on my AI's card (party-ai-live.js). */
.room-ai-info .room-ai-instructors-fix{margin-left:6px;padding:2px 10px;border:1px solid #cad5e5;border-radius:999px;background:#fff;color:#4054df;font-size:calc(12px * var(--pg-ts,1));cursor:pointer}
.room-ai-info .room-ai-instructors-note{margin:2px 0 8px;font-size:calc(12px * var(--pg-ts,1));line-height:1.45;color:#5b6880}
.room-ai-info .room-ai-instructors-list{display:flex;flex-direction:column;gap:2px;max-height:200px;overflow:auto;margin-bottom:8px}
.room-ai-info .room-ai-instructors-list label{display:flex;align-items:center;gap:8px;min-height:36px;padding:2px 4px;border-radius:8px;cursor:pointer}
.room-ai-info .room-ai-instructors-list label:hover{background:#f1f5fb}
.room-ai-info .room-ai-instructors-list input{width:18px;height:18px;margin:0;flex:none}
body.dark .room-ai-info .room-ai-instructors-fix{background:#ffffff10;border-color:#ffffff30;color:#9db0ff}
body.dark .room-ai-info .room-ai-instructors-note{color:#aab8d0}
body.dark .room-ai-info .room-ai-instructors-list label:hover{background:#26324a}

/* 2026-10-04 Claude: a message's author name (and an AI's icon) opens that person's or AI's profile, like the faces in the people row. */
.room-message .room-name-open{cursor:pointer;border-radius:6px}
.room-message b.room-name-open:hover{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.room-message b.room-name-open:focus-visible{outline:2px solid #5b6fd6;outline-offset:2px}
/* 2026-10-04 Claude: the buttons under the main invite button keep a gap (감독 '이건 왜 붙어있냐?' — 'Stop inviting new AIs' touched it). */
#room-ai-panel .ai-invite-primary+.ai-invite-controls,#room-ai-panel .ai-invitation-code+.ai-invite-controls{margin-top:12px}
/* 2026-10-04 Claude: 'AI is working' above the message box (감독 '우리 Claude 세션 방처럼 로딩 느낌') — a turning ✻, the AI's name
   and three moving dots in Claude's warm orange; gone when the AI answers. */
.room-ai-working{display:flex;flex-direction:column;gap:2px;margin:0 0 6px;padding:2px 14px 0}
.room-ai-working-row{display:flex;align-items:center;gap:7px;margin:0;min-height:24px;font:600 calc(12.5px * var(--pg-ts,1))/1.3 Arial,"PG Hangul","Apple SD Gothic Neo",sans-serif;color:#c4613a}
.room-ai-spark{display:inline-block;font-size:calc(15px * var(--pg-ts,1));line-height:1;animation:pg-ai-spark 1.6s linear infinite;transform-origin:50% 54%}
.room-ai-working-icon{width:16px;height:16px;object-fit:contain;border-radius:4px}
.room-ai-working-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:linear-gradient(90deg,#c4613a 0%,#c4613a 40%,#f0a37f 50%,#c4613a 60%,#c4613a 100%);background-size:220% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:pg-ai-shimmer 2.2s linear infinite}
.room-ai-dots{display:inline-flex;gap:3px;margin-left:1px}
.room-ai-dots i{width:4px;height:4px;border-radius:50%;background:#c4613a;opacity:.35;animation:pg-ai-dot 1.2s ease-in-out infinite}
.room-ai-dots i:nth-child(2){animation-delay:.18s}.room-ai-dots i:nth-child(3){animation-delay:.36s}
@keyframes pg-ai-spark{0%{transform:rotate(0) scale(1)}50%{transform:rotate(180deg) scale(.82)}100%{transform:rotate(360deg) scale(1)}}
@keyframes pg-ai-shimmer{from{background-position:110% 0}to{background-position:-110% 0}}
@keyframes pg-ai-dot{0%,80%,100%{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}
@media (prefers-reduced-motion:reduce){.room-ai-spark,.room-ai-working-text,.room-ai-dots i{animation:none}.room-ai-working-text{-webkit-text-fill-color:#c4613a}}
body.dark .room-ai-working-row{color:#f0a37f}body.dark .room-ai-dots i{background:#f0a37f}
body.dark .room-ai-working-text{background:linear-gradient(90deg,#f0a37f 0%,#f0a37f 40%,#ffd9c4 50%,#f0a37f 60%,#f0a37f 100%);background-size:220% 100%;-webkit-background-clip:text;background-clip:text}
/* 2026-10-05 Claude (감독 '플러그인 설치 탭 따로 만들어'): the plugin tab makes the party's code with the AI tab's consent, button and notes — same look */
#room-plugin-panel .ai-invite-consent{display:flex;align-items:flex-start;gap:10px;margin:8px 0 12px;font-size:calc(13px * var(--pg-ts,1));line-height:1.7;text-align:start}
#room-plugin-panel input[type=checkbox]{width:18px;height:18px;flex:none;margin:3px 0 0;accent-color:#4054df}
#room-plugin-panel .ai-invite-primary{width:100%;min-height:50px;padding:13px 18px;background:var(--pg-btn-bg);color:var(--pg-btn-fg);border:0;border-radius:12px;font-size:calc(15px * var(--pg-ts,1));font-weight:650}
#room-plugin-panel button:disabled{opacity:.55;cursor:not-allowed}
#room-plugin-panel .ai-invite-note,#room-plugin-panel .ai-invite-feedback{font-size:calc(12px * var(--pg-ts,1));line-height:1.7;margin:8px 0;min-height:0;color:inherit}
#room-plugin-panel .ai-service-profile{margin:16px 0}
@media(max-width:760px){}
/* 2026-10-05 Claude (감독 '모든 에이아이서비스 범용 플러그인으로 만들어'): which AI to connect — one row of small pills above the steps */
#room-plugin-panel .plugin-apps{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0 4px}
#room-plugin-panel .plugin-apps button{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:6px 11px;border:1px solid var(--pg-glass-line,#cbd5e1);border-radius:999px;background:var(--pg-glass-field,#fff);color:inherit;font-size:calc(13px * var(--pg-ts,1));font-weight:600;cursor:pointer}
#room-plugin-panel .plugin-apps button img{width:16px;height:16px;flex:none}
#room-plugin-panel .plugin-apps button[aria-pressed=true]{border-color:var(--pg-ink,#1d2433);box-shadow:inset 0 0 0 1px var(--pg-ink,#1d2433)}
body.dark #room-plugin-panel .plugin-apps button[aria-pressed=true]{border-color:#e7ecf5;box-shadow:inset 0 0 0 1px #e7ecf5}
#room-plugin-panel .room-channel-cmd code{white-space:pre-wrap}

/* 2026-10-06 Claude (감독 '플러그인 설치 없이 … 초대 기능과 항시 깨어 있기'): the AI tab's two extra blocks under the invitation —
   'Connect by address' (one connector address for Claude, Grok, Perplexity and any MCP app) and 'Always awake' (a Claude routine Playground fires). */
.ai-invite-block{margin:14px 0 0;padding:12px 14px;border:1px solid var(--surface-border,#dce2ef);border-radius:14px;background:var(--surface-2,rgba(255,255,255,.55))}
.ai-invite-block>h4{margin:0 0 4px;font-size:calc(14px * var(--pg-ts,1));font-weight:700}
.ai-invite-block>p{margin:0 0 8px;font-size:calc(12.5px * var(--pg-ts,1));line-height:1.5;color:var(--surface-muted,#69798b)}
.ai-invite-address{display:flex;gap:8px;align-items:center}
.ai-invite-address code{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:calc(12px * var(--pg-ts,1))/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;padding:7px 9px;border-radius:9px;background:var(--surface,#fff);border:1px solid var(--surface-border,#dce2ef)}
#room-ai-panel .ai-invite-mini,.ai-invite-address button,.ai-invite-block .ai-invite-mini{flex:none;min-height:34px;padding:0 12px;border-radius:9px;border:1px solid var(--surface-border,#dce2ef);background:var(--surface,#fff);color:inherit;font:600 calc(12.5px * var(--pg-ts,1))/1 inherit;cursor:pointer}
.ai-invite-block ol{margin:0;padding-left:18px;font-size:calc(12.5px * var(--pg-ts,1));line-height:1.55;color:var(--surface-muted,#69798b)}
.ai-invite-block ol li{margin:2px 0}
.ai-invite-block .ai-invite-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.ai-wake-form{display:grid;gap:6px;margin-top:8px}
.ai-wake-form input{width:100%;min-height:36px;padding:0 10px;border-radius:9px;border:1px solid var(--surface-border,#dce2ef);background:var(--surface,#fff);color:inherit;font:calc(13px * var(--pg-ts,1))/1 inherit}
.ai-wake-form .ai-invite-row{margin-top:2px}
.ai-wake-state{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:calc(12.5px * var(--pg-ts,1));color:var(--surface-muted,#69798b)}
.ai-wake-state b{color:#1d7a52}.ai-wake-state b.is-off{color:#b23d36}
.ai-wake-state a{color:inherit;text-underline-offset:3px}
body.dark .ai-wake-state b{color:#52c48c}body.dark .ai-wake-state b.is-off{color:#ef7a71}

/* 2026-10-07 (피드백 F1-8 '플러그인·MCP가 무슨 일을 하는지 불명확'): which way fits which AI, folded by default */
#room-ai-panel .ai-invite-how{margin:8px 0 12px;border:1px solid var(--pg-glass-line,#dde3ec);border-radius:12px;padding:8px 12px;font-size:calc(12.5px * var(--pg-ts,1))}
#room-ai-panel .ai-invite-how summary{cursor:pointer;font-weight:600}
#room-ai-panel .ai-invite-how dl{margin:8px 0 2px}#room-ai-panel .ai-invite-how dt{font-weight:700;margin-top:8px}#room-ai-panel .ai-invite-how dd{margin:2px 0 0;line-height:1.55;opacity:.85}
/* 2026-10-08 Claude (감독 '모델 자는중 노란 창도 얇게하고 텍스트 사이즈 줄여'): one thin line — smaller text, a small button and ×, the text cut with … */
html body :is(#party-preview,.party-preview,.party-window) .room-ai-wake{gap:6px;margin:0 0 6px;padding:3px 4px 3px 10px;border-radius:10px;font-size:calc(11.5px * var(--pg-ts,1));line-height:1.3}
html body :is(#party-preview,.party-preview,.party-window) .room-ai-wake>p{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;overflow-wrap:normal}
html body :is(#party-preview,.party-preview,.party-window) .room-ai-wake .room-ai-wake-dot{width:6px;height:6px}
html body :is(#party-preview,.party-preview,.party-window) .room-ai-wake .room-ai-wake-go{min-height:24px;padding:3px 10px;font-size:calc(11px * var(--pg-ts,1))}
html body :is(#party-preview,.party-preview,.party-window) .room-ai-wake .room-ai-wake-x{width:24px;height:24px;font-size:calc(14px * var(--pg-ts,1))}
.room-ai-wake{transition:opacity .3s}.room-ai-wake.is-fade{opacity:0}
/* 2026-10-08 Claude (감독 '~의 모델 작업중.. 표시도 텍스트 사이즈 줄여') */
html body :is(#party-preview,.party-preview,.party-window) .room-ai-working-row{min-height:18px;gap:5px;font-size:calc(11px * var(--pg-ts,1))!important}
html body :is(#party-preview,.party-preview,.party-window) .room-ai-working-icon{width:13px;height:13px}
html body :is(#party-preview,.party-preview,.party-window) .room-ai-spark{font-size:calc(11px * var(--pg-ts,1))!important}

/* 2026-10-16 Claude (감독 'AI 카드 화면 가시성 해결해 (다크모드)'): in dark mode the card's labels were the light theme's grey (#65748b on #1f2a3d),
   the pill buttons (model fix, Save, pick) kept white-theme borders/text, a disabled Save faded to nothing, and 'Manage' took the dark
   footer background while keeping the light theme's dark text. Every piece now has a dark value with real contrast, and a disabled button
   stays readable (just quieter). */
body.dark .room-ai-info dt{color:#aab8d0}
body.dark .room-ai-info small{color:#9fb0c8}
body.dark .room-ai-info .room-ai-model-status{color:#f0b26b}
body.dark .room-ai-info .room-ai-model-fix{border-color:#4b5d7c;background:#2a3850;color:#b7c6ff}
body.dark .room-ai-info .room-ai-model-actions button,body.dark .room-ai-info button[data-instructors-save],body.dark .room-ai-info button[data-model-save]{background:#2f3d57;border-color:#4b5d7c;color:#e4e9f2}
body.dark .room-ai-info .room-ai-model-edit input{background:#162033;border-color:#4b5d7c;color:#e4e9f2}
body.dark .room-ai-info footer button{color:#e4e9f2}
body.dark .room-ai-info footer .room-ai-info-manage{background:#e7ebf2;border-color:#e7ebf2;color:#1b2433}
/* disabled: dimmed but still legible in both themes */
.room-ai-info button:disabled{opacity:.6;cursor:not-allowed}
body.dark .room-ai-info button:disabled{opacity:1;background:#232e42;border-color:#3a4a66;color:#8d9bb3}
