:root{--bg:#f5f7fb;--panel:#fff;--ink:#182033;--muted:#667085;--line:#d8e0ee;--primary:#3157ff;--primary-dark:#1d37a8;--ok:#0f9f7a;--warn:#bd6b00;--bad:#d13045;--soft:#eef4ff;--shadow:0 16px 45px rgba(20,35,80,.12)}
.auth-boot main .view{display:none!important}.auth-boot nav,.auth-boot .session{visibility:hidden}.boot-screen{min-height:calc(100dvh - 76px);display:grid;place-items:center;padding:1rem}.boot-card{width:min(420px,100%);display:grid;justify-items:center;gap:.55rem;padding:1.35rem;border:1px solid var(--line);border-radius:22px;background:rgba(255,255,255,.94);box-shadow:var(--shadow);text-align:center}.boot-card p{margin:.1rem 0 0;color:var(--muted)}.boot-spinner{width:2rem;height:2rem;border-radius:999px;border:3px solid #d7e4ff;border-top-color:var(--primary);animation:p42-boot-spin .8s linear infinite}@keyframes p42-boot-spin{to{transform:rotate(360deg)}}body:not(.auth-boot) .boot-screen{display:none!important}
.hidden{display:none!important}.auth-card-head{display:flex;justify-content:space-between;gap:.75rem;align-items:flex-start}.auth-google{width:100%;display:flex;justify-content:center;align-items:center;gap:.5rem}.auth-google:before{content:'G';display:grid;place-items:center;width:1.35rem;height:1.35rem;border-radius:999px;background:#fff;color:var(--primary);font-weight:900}.auth-divider{display:flex;align-items:center;gap:.7rem;color:var(--muted);font-size:.88rem;font-weight:800}.auth-divider:before,.auth-divider:after{content:'';height:1px;background:var(--line);flex:1}.auth-mode-panel{display:grid;gap:.85rem}.auth-mode-panel h3{margin:.1rem 0}.auth-switch{display:flex;align-items:center;justify-content:space-between;gap:.7rem;flex-wrap:wrap;padding-top:.2rem;border-top:1px solid var(--line)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:linear-gradient(135deg,#eef4ff,var(--bg));font-family:Pretendard,Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans KR",sans-serif;color:var(--ink);line-height:1.5}button,input,textarea,select{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,a:focus-visible{outline:3px solid #93b4ff;outline-offset:2px}.skip{position:absolute;top:-4rem;left:1rem;background:#111827;color:white;padding:.7rem;border-radius:1rem;z-index:100}.skip:focus{top:1rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.topbar{position:sticky;top:0;z-index:10;display:grid;grid-template-columns:230px minmax(0,1fr) auto;gap:1rem;align-items:center;padding:1rem;background:rgba(255,255,255,.92);backdrop-filter:blur(16px);border-bottom:1px solid var(--line)}.brand{display:flex;gap:.7rem;align-items:center}.brand span{display:grid;place-items:center;width:42px;height:42px;border-radius:14px;background:var(--primary);color:#fff;font-weight:900}.brand small{display:block;color:var(--muted);font-size:.78rem}nav{display:flex;gap:.35rem;flex-wrap:wrap}.nav,.ghost{border:1px solid var(--line);background:#fff;border-radius:999px;padding:.55rem .75rem;color:var(--ink)}.nav.active,.nav:hover,.ghost:hover{background:var(--soft);border-color:#b9c9ff;color:#17359c}.session{display:flex;gap:.5rem;align-items:center}.badge{display:inline-flex;align-items:center;gap:.35rem;padding:.45rem .65rem;border-radius:999px;background:#ecfdf3;color:#027a48;font-weight:800;white-space:nowrap}.badge.muted{background:#f2f4f7;color:#475467}.badge.ok{background:#eef4ff;color:#17359c}.primary{border:0;border-radius:12px;padding:.75rem 1rem;background:var(--primary);color:#fff;font-weight:800}.primary:hover{background:var(--primary-dark)}.full{width:100%;margin-top:.7rem}.statusbar{max-width:1440px;margin:.8rem auto 0;padding:.75rem 1.1rem;border:1px solid #b8dbca;background:#ecfdf3;color:#027a48;border-radius:16px;font-weight:800}.statusbar.bad{border-color:#ffd0d7;background:#fff1f3;color:var(--bad)}.error-view{min-height:calc(100dvh - 86px);display:none;place-items:center}.error-view.active{display:grid}.app-error-view{min-height:calc(100dvh - 86px)}.error-shell{width:min(680px,100%);display:grid;gap:.85rem;text-align:left}.error-shell h1{margin:.1rem 0;font-size:clamp(1.8rem,4vw,3rem);letter-spacing:-.04em}.error-summary{margin:0;color:#344054;font-size:1.05rem}.error-detail{padding:.85rem 1rem;border:1px solid #ffd0d7;border-radius:16px;background:#fff1f3;color:var(--bad);font-weight:800}.error-actions{display:flex;flex-wrap:wrap;gap:.55rem;margin-top:.15rem}.error-inline,.inline-error{display:grid;gap:.65rem;margin:0;padding:1rem;border:1px solid #ffd0d7;border-radius:16px;background:#fff1f3;color:var(--bad)}.error-inline strong,.inline-error strong{font-size:1.05rem}.error-inline p,.inline-error p{margin:0;color:#7a2030}.error-inline-actions{display:flex;flex-wrap:wrap;gap:.45rem}.error-inline-actions button{border:1px solid #ffd0d7;background:#fff;border-radius:999px;padding:.45rem .7rem;color:var(--bad);font-weight:900}
.view{display:none;max-width:1440px;margin:0 auto;padding:1.1rem}.view.active{display:block}.card{background:rgba(255,255,255,.96);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow);padding:1.2rem}.hero{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(320px,.7fr);gap:1rem;align-items:stretch}.hero h1{font-size:clamp(2rem,5vw,4.6rem);letter-spacing:-.05em;line-height:1.05;margin:.2rem 0}.eyebrow{color:var(--primary);font-weight:900;letter-spacing:.08em;text-transform:uppercase}.grid{display:grid;gap:1rem;margin-top:1rem}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.section-head{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:1rem}.section-head h1{margin:.15rem 0}.ticks,.checks{padding:0;list-style:none}.ticks li,.checks li{margin:.45rem 0;display:flex;gap:.45rem;align-items:flex-start}.ticks li:before{content:'✓';color:var(--ok);font-weight:900}.checks li span{display:grid;place-items:center;min-width:1.5rem;height:1.5rem;border-radius:999px;background:#ecfdf3;color:var(--ok);font-weight:900}.panel,.stack{display:grid;gap:.85rem}.auth-card{align-self:start}.auth-card h2,.auth-panel h3{margin:.1rem 0}.google-login{width:100%;display:flex;justify-content:center;align-items:center;gap:.5rem}.google-login:before{content:'G';display:grid;place-items:center;width:1.35rem;height:1.35rem;border-radius:999px;background:#fff;color:var(--primary);font-weight:900}.auth-segments{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.35rem;padding:.3rem;border:1px solid var(--line);border-radius:14px;background:#f8fbff}.segment{border:0;border-radius:11px;background:transparent;padding:.65rem .75rem;font-weight:900;color:var(--muted)}.segment.active{background:#fff;color:var(--primary);box-shadow:0 8px 20px rgba(20,35,80,.1)}.auth-panel{display:none;gap:.85rem;padding-top:.15rem}.auth-panel.active{display:grid}label{display:grid;gap:.35rem;font-weight:750}input,textarea,select{width:100%;border:1px solid var(--line);border-radius:12px;background:#fff;padding:.75rem;color:var(--ink)}textarea{min-height:92px;resize:vertical}.hint,.note,.empty,.empty-inline{color:var(--muted);font-size:.92rem}.empty{padding:1rem;border:1px dashed var(--line);border-radius:14px;background:#fafcff}.empty.error{border-color:#ffd0d7;background:#fff1f3;color:var(--bad)}.session-panel dl{display:grid;gap:.4rem;margin:.7rem 0 0}.session-panel div{display:grid;grid-template-columns:90px 1fr;gap:.5rem}.session-panel dt{color:var(--muted);font-weight:800}.session-panel dd{margin:0;word-break:break-all}
.messenger{display:grid;grid-template-columns:270px minmax(0,1fr) 270px;gap:1rem;padding:1rem}.messenger aside,.chat{min-width:0}.chat{display:grid;grid-template-rows:auto minmax(380px,55vh) auto auto;gap:.7rem}.chat header{padding:.9rem;border:1px solid var(--line);border-radius:16px;background:#fbfdff}.chat header h2,.chat header p{margin:.1rem 0}.room-meta{color:var(--muted);font-size:.9rem;overflow-wrap:anywhere}.messages{overflow:auto;border:1px solid var(--line);border-radius:18px;background:#f8fbff;padding:1rem}.message{margin:0 0 .75rem;padding:.9rem;border:1px solid var(--line);border-radius:16px;background:#fff}.message.agent{background:#f6f9ff}.message.system{background:#fffbeb}.message.deleted{opacity:.72}.message header,.message footer{display:flex;justify-content:space-between;gap:.5rem;align-items:center;flex-wrap:wrap}.message header span{color:var(--muted);font-size:.85rem}.message footer button,.chip button,.item button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:.35rem .6rem}.composer{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;gap:.5rem}.upload-status{padding:.55rem .75rem;border:1px solid #b8dbca;border-radius:14px;background:#ecfdf3;color:#027a48;font-weight:800;font-size:.9rem}.upload-status.bad{border-color:#ffd0d7;background:#fff1f3;color:var(--bad)}.attach-tray{min-height:2.5rem;display:flex;flex-wrap:wrap;align-items:center;gap:.45rem;padding:.45rem;border:1px dashed var(--line);border-radius:14px;background:#fbfdff}.chips,.attach-tray{display:flex;flex-wrap:wrap;gap:.4rem}.chips span,.chip{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .55rem;border-radius:999px;background:var(--soft);color:#17359c;font-size:.85rem}.chip a{color:#17359c;font-weight:900}.chip button{padding:0 .35rem;border:0;background:transparent;font-weight:900;color:#17359c}.list{display:grid;gap:.55rem}.item{display:block;width:100%;text-align:left;border:1px solid var(--line);border-radius:16px;padding:.8rem;background:#fff;color:var(--ink)}button.item:hover,.item.selected{border-color:#9db2ff;background:var(--soft)}.item strong{display:block}.item span,.item p{color:var(--muted);margin:.25rem 0}.empty{color:var(--muted);padding:.7rem;border:1px dashed var(--line);border-radius:14px;background:#fff}.empty.error{color:var(--bad);border-color:#ffd0d7;background:#fff1f3}.empty-inline{display:inline-flex;margin:.25rem 0;color:var(--muted);font-size:.85rem}
.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem}.stats div,.ops-card{padding:1rem;border:1px solid var(--line);border-radius:16px;background:#fbfdff}.stats strong,.ops-card strong{display:block;font-size:1.6rem}.stats span,.ops-card span{color:var(--muted)}.ops-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem;margin-top:1rem}.ops-card.ok{border-color:#b8dbca;background:#ecfdf3}.ops-card.bad{border-color:#ffd0d7;background:#fff1f3}.ops-card small{display:block;margin-top:.3rem;color:var(--muted);word-break:break-word}.ops-list{display:grid;gap:.6rem}.ops-row{display:grid;grid-template-columns:auto 150px minmax(0,1fr);gap:.6rem;align-items:center;padding:.7rem;border:1px solid var(--line);border-radius:14px;background:#fbfdff}.dot{width:.75rem;height:.75rem;border-radius:999px;background:var(--muted)}.dot.ok{background:var(--ok)}.dot.bad{background:var(--bad)}.audit{display:grid;gap:.55rem}.audit div{display:grid;grid-template-columns:180px minmax(160px,1fr) minmax(120px,1fr) minmax(0,1fr);gap:.6rem;align-items:center;padding:.75rem;border:1px solid var(--line);border-radius:14px;background:#fbfdff}.audit time{color:var(--muted);font-size:.85rem}.audit small{color:var(--muted);word-break:break-all}pre{white-space:pre-wrap;word-break:break-word;background:#101828;color:#e4e7ec;border-radius:16px;padding:1rem;overflow:auto;max-height:520px}.hidden{display:none!important}.auth-view{padding-top:1.4rem}.auth-hero{grid-template-columns:minmax(0,1.15fr) minmax(340px,.85fr);overflow:hidden}.auth-copy{display:grid;align-content:center}.auth-card{position:relative;background:linear-gradient(180deg,#fff,#f8fbff);border:1px solid #cdd8f5;border-radius:24px;padding:1.25rem;box-shadow:0 24px 55px rgba(49,87,255,.14)}.auth-card:before{content:'';position:absolute;inset:0 0 auto;height:5px;background:linear-gradient(90deg,var(--primary),#77d4ff);border-radius:24px 24px 0 0}.auth-card-head{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start}.auth-card-head h2,.auth-mode-panel h3{margin:.15rem 0 .35rem}.auth-google{width:100%;margin-top:.75rem;display:flex;justify-content:center;align-items:center;gap:.45rem}.auth-google:before{content:'G';display:grid;place-items:center;width:1.45rem;height:1.45rem;border-radius:999px;background:#fff;color:var(--primary);font-weight:900}.auth-divider{display:flex;align-items:center;gap:.7rem;color:var(--muted);font-size:.88rem;font-weight:800}.auth-divider:before,.auth-divider:after{content:'';height:1px;flex:1;background:var(--line)}.auth-mode-panel{display:grid;gap:.75rem;padding:.9rem;border:1px solid var(--line);border-radius:18px;background:#fff}.auth-switch{display:flex;align-items:center;justify-content:space-between;gap:.7rem;flex-wrap:wrap;padding:.8rem;border-radius:16px;background:var(--soft)}.auth-switch span{color:#17359c;font-weight:800}.toast{position:fixed;right:1rem;bottom:1rem;max-width:min(420px,calc(100vw - 2rem));background:#111827;color:#fff;border-radius:16px;padding:.9rem 1rem;box-shadow:var(--shadow);z-index:99}.toast.bad{background:var(--bad)}
body:not(.is-authenticated) .topbar{grid-template-columns:230px 1fr auto}body:not(.is-authenticated) nav{display:none}body:not(.is-authenticated) .session{display:none}.is-user #projects,.is-user #agents,.is-user #admin,.is-user #schema,.is-user #checklist{display:none!important}.is-user .topbar{grid-template-columns:230px 1fr auto}.is-user nav{justify-content:center}.is-user .nav[data-view="messenger"]{display:inline-flex!important;background:var(--soft);border-color:#9db2ff;color:#17359c}.is-user .messenger{grid-template-columns:300px minmax(0,1fr) 230px}.messenger.card{background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(246,249,255,.97));box-shadow:0 22px 65px rgba(20,35,80,.14)}.messenger aside{border:1px solid var(--line);border-radius:18px;background:#fbfdff;padding:.9rem}.messenger aside h2{margin:.15rem 0 .75rem}.messenger input,#messageInput{border:1px solid var(--line);border-radius:14px;padding:.78rem .9rem;background:#fff;transition:border-color .15s,box-shadow .15s}.messenger input:focus,#messageInput:focus{border-color:#8ba8ff;box-shadow:0 0 0 4px rgba(49,87,255,.12);outline:0}.chat header{background:linear-gradient(135deg,#ffffff,#eef4ff)}.message{box-shadow:0 8px 24px rgba(20,35,80,.07)}.message.user{border-color:#c9d6ff;background:#fff}.message.agent{margin-right:8%;border-color:#d7e4ff}.message.system{text-align:left;border-style:dashed}.messenger-only-hint{margin:.75rem 0 0;padding:.75rem;border-radius:14px;background:#eef4ff;color:#17359c}.section-head{padding:.25rem .1rem}.section-head h1{letter-spacing:-.035em}.auth-view .grid.three .card{box-shadow:none}.session-panel dl{display:grid;gap:.45rem;margin:0}.session-panel div{display:grid;grid-template-columns:90px minmax(0,1fr);gap:.5rem}.session-panel dt{color:var(--muted);font-weight:800}.session-panel dd{margin:0;word-break:break-word}.empty,.hint{color:var(--muted)}@media (max-width:1100px){.topbar{grid-template-columns:1fr;align-items:start}.session{justify-content:space-between}.hero,.grid.two,.grid.three,.messenger,.is-user .messenger{grid-template-columns:1fr}.messenger{padding:.8rem}.chat{grid-template-rows:auto minmax(300px,50vh) auto auto}.ops-grid{grid-template-columns:1fr}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.audit div{grid-template-columns:1fr}.ops-row{grid-template-columns:auto 1fr}}
.admin-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;margin-top:1rem}.user-admin-list .user-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.75rem;align-items:center}.user-row p{margin:.3rem 0 0;color:var(--muted);font-size:.9rem}.row-actions{display:flex;gap:.4rem;flex-wrap:wrap;justify-content:flex-end}.matrix{display:grid;gap:.55rem}.matrix-row{display:grid;grid-template-columns:minmax(120px,.8fr) auto auto minmax(0,1fr);gap:.55rem;align-items:center;padding:.7rem;border:1px solid var(--line);border-radius:14px;background:#fbfdff}.matrix-row small{color:var(--muted)}.profile-pills{display:flex;flex-wrap:wrap;gap:.45rem}.profile-pill{display:inline-grid;gap:.08rem;padding:.45rem .6rem;border:1px solid #b8dbca;border-radius:999px;background:#ecfdf3;color:#027a48}.profile-pill strong{font-size:.88rem}.profile-pill em{font-style:normal;font-size:.72rem;color:#047857}select{border:1px solid var(--line);border-radius:14px;padding:.78rem .9rem;background:#fff;color:var(--ink)}
@media (max-width:640px){.view{padding:.7rem}.card{padding:1rem;border-radius:16px}.topbar{padding:.75rem}.brand small{display:none}nav{overflow:auto;flex-wrap:nowrap;padding-bottom:.2rem}.session{align-items:stretch;flex-direction:column}.section-head{align-items:stretch;flex-direction:column}.composer{grid-template-columns:1fr 1fr}.composer input,.composer .primary{grid-column:1/-1}.hero h1{font-size:2.2rem}.stats{grid-template-columns:1fr}.session-panel div{grid-template-columns:1fr}.statusbar{margin:.7rem .7rem 0}.ops-card strong,.stats strong{font-size:1.25rem}.admin-grid{grid-template-columns:1fr}.user-admin-list .user-row,.matrix-row{grid-template-columns:1fr}.row-actions{justify-content:flex-start}}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* P15 layout polish: tighter messenger rhythm, member modal, readable message width */
.view{max-width:1320px;padding:1rem clamp(.75rem,2vw,1.25rem)}
.section-head{margin-bottom:.75rem}.section-head h1{font-size:clamp(1.55rem,2.5vw,2.2rem)}
.messenger.card{padding:clamp(.75rem,1.4vw,1rem);gap:clamp(.65rem,1.2vw,.9rem)}
.messenger{grid-template-columns:minmax(230px,260px) minmax(440px,760px) minmax(230px,280px);justify-content:center;align-items:start}
.messenger aside{padding:.75rem;border-radius:16px}.messenger aside h2{margin:.05rem 0 .55rem;font-size:1.05rem}.member-section{display:grid;gap:.45rem;margin-top:.65rem}.member-section h3{margin:.1rem 0;font-size:.92rem;color:var(--muted)}
.chat{grid-template-rows:auto minmax(340px,52vh) auto auto;gap:.55rem;max-width:760px;width:100%;justify-self:center}.chat header{padding:.75rem .85rem;border-radius:15px}.messages{padding:.75rem;border-radius:16px;background:linear-gradient(180deg,#f8fbff,#f3f7ff)}
.message{max-width:min(92%,620px);margin-bottom:.6rem;padding:.75rem .85rem;border-radius:15px}.message.user{margin-left:0}.message:not(.own){margin-left:0;margin-right:auto}.message.own{margin-left:auto}.message.agent{margin-right:auto}.message.system{max-width:86%;margin-left:0;margin-right:auto;padding:.65rem .8rem;text-align:left}.message.own header{justify-content:flex-end}.message time{font-variant-numeric:tabular-nums}.message p{margin:.45rem 0;white-space:pre-wrap}.message header span{font-size:.78rem}.message footer{margin-top:.45rem}.composer{gap:.4rem}.composer button,.composer input{min-height:42px}.hint{font-size:.88rem}.list{gap:.45rem}.item{padding:.65rem .7rem;border-radius:14px}.member-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.55rem}.member-card strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.member-card span{font-size:.82rem}.member-card p{display:none}.member-card button{white-space:nowrap;padding:.3rem .55rem;font-size:.82rem}.note{font-size:.84rem;color:var(--muted)}
.modal{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:1rem}.modal.hidden{display:none!important}.modal-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.42);backdrop-filter:blur(6px)}.modal-card{position:relative;z-index:1;width:min(520px,calc(100vw - 2rem));max-height:min(720px,calc(100vh - 2rem));overflow:auto;background:#fff;border:1px solid var(--line);border-radius:22px;box-shadow:0 30px 90px rgba(20,35,80,.28);padding:1.25rem}.modal-card h2{margin:.15rem 2rem .75rem 0}.modal-close{position:absolute;right:.8rem;top:.8rem;border:1px solid var(--line);background:#fff;border-radius:999px;width:2.1rem;height:2.1rem;font-size:1.25rem;line-height:1}.modal-body{display:grid;gap:.7rem}.member-detail{display:grid;grid-template-columns:1fr 1fr;gap:.55rem;margin:0}.member-detail div{padding:.7rem;border:1px solid var(--line);border-radius:14px;background:#fbfdff}.member-detail .wide{grid-column:1/-1}.member-detail dt{margin:0 0 .25rem;color:var(--muted);font-size:.78rem;font-weight:900;text-transform:uppercase;letter-spacing:.04em}.member-detail dd{margin:0;word-break:break-word}.modal-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1rem;padding-top:.9rem;border-top:1px solid var(--line)}
@media (max-width:1100px){.messenger{grid-template-columns:minmax(220px,260px) minmax(0,1fr);}.messenger>aside:last-child{grid-column:1/-1}.chat{max-width:none}.messages{min-height:340px}.is-user .messenger{grid-template-columns:minmax(220px,260px) minmax(0,1fr)}}
@media (max-width:760px){.messenger,.is-user .messenger{grid-template-columns:1fr}.chat{grid-template-rows:auto minmax(320px,48vh) auto auto}.composer{grid-template-columns:1fr 1fr}.composer input,.composer .primary{grid-column:1/-1}.message,.message.system{max-width:100%}.member-detail{grid-template-columns:1fr}.modal-card{padding:1rem}.modal-actions{flex-direction:column-reverse}.modal-actions button{width:100%}}

/* P24 mobile messenger UX + room/member information architecture */
.filter-row{display:flex;flex-wrap:wrap;gap:.35rem;margin:.55rem 0 .65rem}.filter-row button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:.38rem .58rem;color:var(--muted);font-size:.8rem;font-weight:900}.filter-row button.active,.filter-row button[aria-pressed="true"]{border-color:#9db2ff;background:var(--soft);color:#17359c}.room-list{align-content:start}.room-group,.member-group{display:grid;gap:.4rem;padding:.35rem 0 .55rem;border-top:1px solid rgba(216,224,238,.8)}.room-group:first-child,.member-group:first-child{border-top:0}.room-group h3,.member-group h3{display:flex;align-items:center;justify-content:space-between;margin:.05rem 0;color:#344054;font-size:.82rem;text-transform:uppercase;letter-spacing:.04em}.room-group h3 span,.member-group h3 span{display:grid;place-items:center;min-width:1.45rem;height:1.45rem;border-radius:999px;background:#eef4ff;color:#17359c}.room-group p{margin:-.25rem 0 .1rem;color:var(--muted);font-size:.78rem}.room-card{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.25rem .45rem;align-items:center}.room-card strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.room-card small{grid-column:2;color:var(--muted);font-size:.77rem}.type-chip{display:inline-flex;align-items:center;width:max-content;border-radius:999px;padding:.2rem .45rem;background:#f2f4f7;color:#475467;font-size:.72rem;font-weight:900;line-height:1.15;white-space:nowrap}.type-chip.dm,.type-chip.agent{background:#eef4ff;color:#17359c}.type-chip.team{background:#ecfdf3;color:#027a48}.type-chip.direct,.type-chip.user{background:#fff7ed;color:#a65300}.type-chip.project{background:#f4f3ff;color:#5925dc}.type-chip.system,.type-chip.group{background:#fffbeb;color:#92400e}.member-card{grid-template-columns:minmax(0,1fr) auto}.member-card>div{display:grid;gap:.22rem;min-width:0}.member-card strong{margin-top:.04rem}.message-card{margin:.45rem 0 0;padding:.75rem;border:1px solid #d7e4ff;border-radius:14px;background:linear-gradient(180deg,#fff,#f8fbff)}.message-fold{margin:.45rem 0}.message-fold summary{display:grid;gap:.2rem;padding:.62rem .7rem;border:1px solid #d7e4ff;border-radius:14px;background:#fbfdff;cursor:pointer}.message-fold summary span{color:var(--muted);font-size:.85rem}.message-fold[open] summary{border-bottom-left-radius:10px;border-bottom-right-radius:10px}.message-fold .message-card{margin-top:.35rem}.messages{scrollbar-gutter:stable}.rooms-pane{grid-area:rooms}.chat{grid-area:chat}.members-pane{grid-area:members}
@media (max-width:1180px){.messenger,.is-user .messenger{grid-template-columns:minmax(220px,260px) minmax(0,1fr);grid-template-areas:"rooms chat" "members members"}.members-pane{display:grid;grid-template-columns:1fr 1fr;gap:.65rem}.members-pane>h2,.members-pane>#memberSearch,.members-pane>#memberTypeFilters,.members-pane>.note{grid-column:1/-1}.members-pane .member-section{margin-top:0}}
@media (max-width:820px){.messenger.card{padding:.65rem}.messenger,.is-user .messenger{grid-template-columns:1fr;grid-template-areas:"chat" "rooms" "members"}.chat{grid-template-rows:auto minmax(360px,58vh) auto auto}.rooms-pane,.members-pane{max-height:none}.room-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.55rem}.room-group{border:1px solid var(--line);border-radius:16px;padding:.65rem;background:#fff}.members-pane{display:block}.filter-row{overflow:auto;flex-wrap:nowrap;padding-bottom:.15rem}.filter-row button{flex:0 0 auto}.message{max-width:100%;margin-left:0!important;margin-right:0!important}.message header{align-items:flex-start}.message header span{display:flex;gap:.28rem;align-items:center;flex-wrap:wrap}.composer{position:sticky;bottom:.35rem;z-index:3;padding:.45rem;border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.94);box-shadow:0 10px 30px rgba(20,35,80,.12)}}
@media (max-width:520px){.chat{grid-template-rows:auto minmax(330px,56vh) auto auto}.room-list{grid-template-columns:1fr}.room-card{grid-template-columns:1fr}.room-card small{grid-column:1}.member-card{grid-template-columns:1fr}.member-card button{width:100%}.message-fold summary{padding:.55rem}.message-card{padding:.62rem}.messenger aside{padding:.65rem}.topbar{grid-template-columns:1fr auto}.brand span{width:36px;height:36px}.session .badge{max-width:46vw;overflow:hidden;text-overflow:ellipsis}}

/* P27 mobile messenger first-pass: collapse 3-column messenger into tabbed panes */
.messenger-tabs{display:none}
@media (max-width:640px){
  .topbar{grid-template-columns:minmax(0,1fr);gap:.55rem;align-items:stretch;padding:.65rem .7rem}
  .brand{min-width:0}.brand strong{display:block;line-height:1.1}.brand small{display:none}
  body.is-authenticated .topbar,body:not(.is-authenticated) .topbar,.is-user .topbar{grid-template-columns:minmax(0,1fr)}
  .topbar nav{order:2;display:flex;width:100%;max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;flex-wrap:nowrap;gap:.35rem;padding:.1rem 0 .25rem;scrollbar-width:thin}
  .topbar .nav{flex:0 0 auto;padding:.48rem .68rem;white-space:nowrap;font-size:.9rem}
  .session{order:3;display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:.45rem;min-width:0}
  .session .badge{min-width:0;max-width:65vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .session .ghost{flex:0 0 auto;padding:.48rem .68rem;white-space:nowrap}
  body:not(.is-authenticated) .session{display:none}
  body:not(.is-authenticated) nav{display:none}
  .section-head h1{font-size:1.45rem;line-height:1.18}
  #roomMeta{font-size:.92rem}
}
@media (max-width:820px){
  .messenger.card{display:grid;grid-template-columns:1fr;grid-template-areas:"tabs" "chat" "rooms" "members";gap:.65rem;align-items:stretch;padding:.65rem;overflow:visible}
  .messenger-tabs{grid-area:tabs;position:sticky;top:0;z-index:4;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.35rem;padding:.35rem;border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.96);box-shadow:0 10px 28px rgba(20,35,80,.10);backdrop-filter:blur(12px)}
  .messenger-tabs button{border:1px solid transparent;border-radius:12px;background:transparent;padding:.62rem .45rem;color:var(--muted);font-weight:900;white-space:nowrap}
  .messenger-tabs button.active,.messenger-tabs button[aria-selected="true"]{border-color:#9db2ff;background:var(--soft);color:#17359c}
  .messenger>.rooms-pane,.messenger>.chat,.messenger>.members-pane{display:none;min-width:0}
  .messenger>.mobile-pane-active{display:grid}
  .messenger>.members-pane.mobile-pane-active{display:block}
  .chat.mobile-pane-active{grid-template-rows:auto minmax(260px,calc(100dvh - 390px)) auto auto;min-height:0}
  .messages{min-height:260px;max-height:calc(100dvh - 390px)}
  .composer{position:sticky;bottom:.45rem;z-index:5;grid-template-columns:1fr 1fr;padding:.5rem;border:1px solid #b9c9ff;border-radius:16px;background:rgba(255,255,255,.97);box-shadow:0 14px 36px rgba(20,35,80,.18)}
  .composer input,.composer .primary{grid-column:1/-1}
  .composer button,.composer input{min-height:44px}
  .attach-tray,.upload-status,.chat>.hint{font-size:.84rem}
  .rooms-pane,.members-pane{max-height:none}
  .room-list{display:grid;grid-template-columns:1fr;gap:.55rem}
}
@media (max-width:390px){
  .view{padding:.55rem}.statusbar{margin:.55rem .55rem 0;padding:.62rem .75rem;font-size:.86rem}
  .messenger.card{padding:.5rem;border-radius:15px}.messenger-tabs{top:0;padding:.28rem}.messenger-tabs button{padding:.55rem .25rem;font-size:.88rem}
  .chat header{padding:.65rem}.chat header h2{font-size:1.05rem}.chat header p{font-size:.86rem}
  .messages{padding:.55rem;min-height:245px;max-height:calc(100dvh - 375px)}
  .message{padding:.65rem .7rem}.composer{gap:.4rem;padding:.42rem}.composer button,.composer input{font-size:.92rem}
}

/* P28 IA/readability: stronger grouped sidebars + long PM/Agent answer cards */
.room-group,.member-group{position:relative}
.room-group h3,.member-group h3{padding:.12rem .05rem;border-radius:10px}
.room-group h3 span,.member-group h3 span{font-variant-numeric:tabular-nums;font-size:.76rem}
.room-card{position:relative;transition:transform .12s ease,border-color .12s ease,box-shadow .12s ease}
.room-card:hover{transform:translateY(-1px);box-shadow:0 10px 24px rgba(20,35,80,.09)}
.room-card.selected{border-color:#7f9cff;background:linear-gradient(135deg,#fff,#eef4ff);box-shadow:0 12px 28px rgba(49,87,255,.14)}
.room-card small{display:flex;gap:.3rem;align-items:center;flex-wrap:wrap}
.members-pane .member-section>h3{display:flex;align-items:center;gap:.4rem;margin:.8rem 0 .45rem;color:#344054;font-size:.92rem}
.members-pane .member-section>h3:before{content:'';width:.45rem;height:.45rem;border-radius:999px;background:var(--primary)}
.member-group{padding:.45rem .05rem .6rem}.member-group h3{background:rgba(238,244,255,.65);padding:.38rem .48rem}.member-card .type-chip{margin-bottom:.04rem}
.message-card.compact-agent{background:linear-gradient(180deg,#fff,#f8fbff)}
.message-card.long-read{max-height:min(58vh,560px);overflow:auto;line-height:1.68;background:linear-gradient(180deg,#ffffff,#fbfdff)}
.message-fold{margin:.45rem 0 0;border:1px solid #d7e4ff;border-radius:15px;background:#fff;overflow:hidden}
.fold-toggle{display:grid;width:100%;gap:.35rem;padding:.7rem .8rem;border:0;border-radius:0;background:linear-gradient(135deg,#eef4ff,#fff);color:var(--ink);text-align:left;cursor:pointer;list-style:none;touch-action:manipulation}
.fold-toggle:hover{background:linear-gradient(135deg,#e6efff,#fff)}
.fold-action{justify-self:start;border:1px solid #b9c9ff;border-radius:999px;padding:.16rem .5rem;background:#fff;color:#17359c;font-size:.72rem;font-weight:900;order:3}
.message-fold.is-expanded .fold-preview{display:none}
.fold-title{display:flex;justify-content:space-between;gap:.5rem;align-items:center;flex-wrap:wrap}.fold-title em{font-style:normal;color:var(--muted);font-size:.76rem;font-weight:800}.fold-preview{color:#475467;font-size:.88rem;line-height:1.45}.message-fold .message-card{margin:0;border:0;border-top:1px solid #d7e4ff;border-radius:0}
@media (max-width:820px){.message-card.long-read{max-height:48vh}.fold-toggle{padding:.65rem}.fold-preview{font-size:.84rem}.members-pane .member-section:first-of-type{min-height:38vh}.members-pane #roomParticipantList{min-height:30vh;max-height:46vh;overflow:auto;overscroll-behavior:contain}}

/* P29 desktop messenger regression: stable 3-column desktop with bounded sidebars */
@media (min-width:821px){
  #messenger.view{max-width:1760px;padding-left:clamp(7px,.55vw,10px);padding-right:clamp(7px,.55vw,10px)}
  .messenger.card{width:100%;grid-template-columns:minmax(232px,clamp(240px,18vw,292px)) minmax(0,1fr) minmax(210px,clamp(228px,17vw,268px));gap:clamp(9px,.65vw,12px);padding:clamp(10px,.72vw,14px);align-items:stretch;justify-content:stretch;overflow:hidden}
  .is-user .messenger{grid-template-columns:minmax(232px,clamp(240px,18vw,292px)) minmax(0,1fr) minmax(210px,clamp(228px,17vw,268px))}
  .messenger>.rooms-pane,.messenger>.members-pane,.messenger>.chat{grid-area:auto;min-width:0;min-height:0;max-width:100%}
  .messenger>.rooms-pane{grid-column:1}
  .messenger>.chat{grid-column:2}
  .messenger>.members-pane{grid-column:3}
  .messenger>.rooms-pane,.messenger>.members-pane{display:flex;flex-direction:column;max-height:calc(100dvh - 190px);overflow:hidden}
  .chat{max-width:none;justify-self:stretch;grid-template-rows:auto minmax(420px,1fr) auto auto;max-height:calc(100dvh - 190px)}
  .messages{min-height:420px;max-height:none;overflow:auto;min-width:0}
  .rooms-pane>#roomSearch,.members-pane>#memberSearch{width:100%;flex:0 0 auto}
  .rooms-pane>.filter-row,.members-pane>.filter-row,.rooms-pane>.messenger-only-hint,.members-pane>.note{flex:0 0 auto}
  .rooms-pane>.room-list{flex:1 1 auto;min-height:180px;overflow:auto;align-content:start;padding-right:.15rem;overscroll-behavior:contain}
  .members-pane>.member-section{display:flex;flex-direction:column;min-height:0;overflow:hidden}
  .members-pane>.member-section:first-of-type{flex:0 1 48%;min-height:230px}
  .members-pane>.member-section:last-of-type{flex:1 1 auto}
  #roomParticipantList,#allMemberList{min-height:0;overflow:auto;padding-right:.15rem;overscroll-behavior:contain}
  .members-pane>.member-section:first-of-type #roomParticipantList{min-height:180px;max-height:42vh}
  .members-pane>.member-section:last-of-type #allMemberList{max-height:none;flex:1 1 auto}
  .message{max-width:min(92%,700px);min-width:0;overflow-wrap:anywhere}
  .message-card,.message-fold{max-width:100%;min-width:0;overflow-wrap:anywhere}
  .message-card.long-read{max-height:min(52vh,520px);overflow:auto}
  .message p,.message-card p{overflow-wrap:anywhere;word-break:break-word}
  .fold-toggle,.fold-title,.fold-preview{min-width:0;max-width:100%}
}
@media (min-width:1181px){
  #messenger.view{max-width:min(1760px,calc(100vw - 14px));padding-inline:clamp(7px,.55vw,10px)}
  #messenger .messenger.card{grid-template-columns:minmax(232px,clamp(240px,18vw,292px)) minmax(560px,1fr) minmax(210px,clamp(228px,17vw,268px));gap:clamp(9px,.65vw,12px);padding:clamp(10px,.72vw,14px)}
  .is-user #messenger .messenger{grid-template-columns:minmax(232px,clamp(240px,18vw,292px)) minmax(560px,1fr) minmax(210px,clamp(228px,17vw,268px))}
  #messenger .chat{grid-template-rows:auto minmax(430px,1fr) auto auto}
  #messenger .messages{min-height:430px}
  #messenger .message{max-width:min(78%,720px)}
  #messenger .message.own{max-width:min(68%,600px)}
}
@media (min-width:1181px) and (max-width:1320px){
  #messenger .messenger.card,.is-user #messenger .messenger{grid-template-columns:minmax(224px,242px) minmax(0,1fr) minmax(206px,224px);gap:10px;padding:10px}
  #messenger .chat{grid-template-rows:auto minmax(390px,1fr) auto auto}
  #messenger .messages{min-height:390px}
  #messenger .message{max-width:min(84%,680px)}
}

/* P33 UI cleanup: selectable messages + compact current-room participants */
.messages,.message,.message p,.message-card,.message-card p,.message-fold,.message-fold .message-card,.long-read{user-select:text;-webkit-user-select:text}
.fold-toggle{user-select:none;-webkit-user-select:none}
.fold-preview{user-select:text;-webkit-user-select:text}
.message footer:empty{display:none}
#roomParticipantList,#allMemberList{display:grid;gap:.35rem}
#roomParticipantList .compact-member-group,#allMemberList .compact-member-group{gap:.28rem;padding:.28rem 0 .38rem}
#roomParticipantList .compact-member-group h3,#allMemberList .compact-member-group h3{margin:.05rem 0;padding:.25rem .4rem;font-size:.76rem}
#roomParticipantList .compact-member-card,#allMemberList .compact-member-card{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.4rem;padding:.45rem .5rem;border-radius:12px;box-shadow:none;min-height:48px}
#roomParticipantList .compact-member-card>div,#allMemberList .compact-member-card>div{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.12rem .38rem;align-items:center;min-width:0}
#roomParticipantList .compact-member-card .type-chip,#allMemberList .compact-member-card .type-chip{grid-row:1/3;margin:0;padding:.16rem .38rem;font-size:.66rem}
#roomParticipantList .compact-member-card strong,#allMemberList .compact-member-card strong{font-size:.86rem;line-height:1.15;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#roomParticipantList .compact-member-card>div>span:last-child,#allMemberList .compact-member-card>div>span:last-child{font-size:.72rem;line-height:1.2;color:var(--muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#allMemberList .compact-member-card button{padding:.28rem .52rem;font-size:.78rem;line-height:1.15;white-space:nowrap}.member-card-actions{display:flex;align-items:center;justify-content:flex-end;gap:.3rem;flex-wrap:wrap}
.signup-step{padding-top:.15rem}.step-label{margin:0;color:var(--primary);font-size:.86rem;font-weight:900}
@media (max-width:520px){#roomParticipantList .compact-member-card,#allMemberList .compact-member-card{padding:.42rem .48rem}#roomParticipantList .compact-member-card>div,#allMemberList .compact-member-card>div{grid-template-columns:auto minmax(0,1fr)}#roomParticipantList .compact-member-card{min-height:42px;padding:.34rem .42rem}.member-card-actions{justify-content:flex-start}.member-card-actions button{width:auto}}

/* P34 OAuth-first signup, clearer message timestamps, denser all-member list */
.signup-progress{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.35rem;margin:.2rem 0 .75rem;padding:0;list-style:none}
.signup-progress li{display:flex;align-items:center;gap:.35rem;min-width:0;padding:.48rem .55rem;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--muted);font-size:.78rem;font-weight:900;line-height:1.2}
.signup-progress li span{display:grid;place-items:center;flex:0 0 1.3rem;height:1.3rem;border-radius:999px;background:#f2f4f7;color:#475467;font-size:.72rem}
.signup-progress li.active{border-color:#9db2ff;background:var(--soft);color:#17359c}.signup-progress li.active span{background:var(--primary);color:#fff}
.signup-progress li.done{border-color:#b8dbca;background:#ecfdf3;color:#027a48}.signup-progress li.done span{background:#0f9f7a;color:#fff}
#signupForm input[readonly]{background:#f8fbff;color:#475467;border-style:dashed}.oauth-confirmed{padding:.55rem .7rem;border:1px solid #b8dbca;border-radius:12px;background:#ecfdf3;color:#027a48;font-size:.86rem;font-weight:900}.compact-hint{margin:-.45rem 0 .15rem;font-size:.8rem}
.message-time{display:inline-flex;align-items:center;padding:.12rem .38rem;border:1px solid #d7e4ff;border-radius:999px;background:#f8fbff;color:#17359c;font-variant-numeric:tabular-nums;font-weight:900;line-height:1.2}.message-meta{color:var(--muted)}
#allMemberList{gap:.24rem}#allMemberList .compact-member-group{padding:.2rem 0 .3rem}#allMemberList .compact-member-card{min-height:42px;padding:.38rem .45rem}#allMemberList .compact-member-card .type-chip{max-width:5.8rem;overflow:hidden;text-overflow:ellipsis}#allMemberList .compact-member-card button{background:#f8fbff}
@media (min-width:821px){#allMemberList .compact-member-card{grid-template-columns:minmax(0,1fr) auto}#allMemberList .compact-member-card strong{font-size:.82rem}}
@media (max-width:520px){.signup-progress{grid-template-columns:1fr}.message-time{padding:.1rem .32rem}#allMemberList .compact-member-card{grid-template-columns:minmax(0,1fr) auto}#allMemberList .compact-member-card button{width:auto}#roomParticipantList .compact-member-card>div{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.12rem .35rem}#roomParticipantList .compact-member-card .type-chip{max-width:5.8rem;overflow:hidden;text-overflow:ellipsis}#roomParticipantList .compact-member-card strong{font-size:.82rem}}

/* P35 messenger UX + simplified onboarding */
#login.auth-view{min-height:calc(100dvh - 88px);display:none;align-items:center;justify-content:center}
#login.auth-view.active{display:flex}
#login .auth-hero{width:min(460px,100%);grid-template-columns:1fr;justify-content:center;align-items:center;padding:clamp(1rem,3vw,1.6rem);margin:auto}
#login .auth-card{width:100%;align-self:center}
#login .session-panel:empty{display:none}
.message-attachments{display:grid;gap:.5rem;margin-top:.55rem}.attachment-card{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.65rem;align-items:center;padding:.55rem;border:1px solid #d7e4ff;border-radius:14px;background:#fbfdff;color:var(--ink);text-decoration:none;overflow:hidden}.attachment-card:hover{border-color:#9db2ff;background:#f3f7ff}.attachment-card strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attachment-card small{display:block;color:var(--muted);font-size:.78rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.image-preview{grid-template-columns:88px minmax(0,1fr);max-width:360px}.image-preview img{width:88px;height:66px;object-fit:cover;border-radius:11px;background:#eef4ff}.file-icon{display:grid;place-items:center;width:52px;height:52px;border-radius:14px;background:linear-gradient(135deg,#eef4ff,#fff);color:#17359c;font-size:.75rem;font-weight:900;border:1px solid #c9d6ff}.composer{grid-template-columns:auto minmax(0,1fr) auto;align-items:center}.composer #uploadBtn{border:1px solid #b9c9ff;background:#fff;color:#17359c;border-radius:12px;padding:.58rem .74rem;font-weight:900;min-height:38px}.composer #uploadBtn:before{content:'+';display:inline-grid;place-items:center;margin-right:.35rem;width:1.05rem;height:1.05rem;border-radius:999px;background:var(--soft);font-weight:900}.composer .primary{min-height:38px;padding:.55rem .82rem;border-radius:12px}.composer #messageInput{min-height:38px;padding:.62rem .78rem}#roomParticipantList .compact-member-card,#allMemberList .compact-member-card{min-height:46px}#roomParticipantList .compact-member-card>div,#allMemberList .compact-member-card>div{min-height:32px}@media (max-width:820px){.composer{grid-template-columns:auto minmax(0,1fr) auto}.composer input,.composer .primary{grid-column:auto}.composer #uploadBtn,.composer .primary{padding:.54rem .7rem}.image-preview{grid-template-columns:76px minmax(0,1fr)}.image-preview img{width:76px;height:58px}}@media (max-width:520px){#login.auth-view{min-height:calc(100dvh - 72px)}#login .auth-hero{width:100%;padding:.85rem}.composer{grid-template-columns:auto minmax(0,1fr) auto;gap:.35rem}.composer #uploadBtn{font-size:0;padding:.52rem}.composer #uploadBtn:before{margin-right:0;font-size:.9rem}.composer .primary{font-size:.9rem;padding:.52rem .62rem}.image-preview{max-width:100%}.attachment-card{padding:.48rem}}

/* P36 message ownership, room-isolated rendering, and upload affordance */
.message.own{display:flex;flex-direction:column;align-items:flex-end;margin-left:auto;margin-right:0;max-width:min(72%,560px);border-color:#b9c9ff;background:linear-gradient(135deg,#3157ff,#2447d8);color:#fff;box-shadow:0 10px 28px rgba(49,87,255,.18)}
.message.own>header{display:none!important}.message.own p{align-self:stretch;margin:.1rem 0 .2rem;color:#fff}.message.own .message-card,.message.own .message-fold{align-self:stretch;color:var(--ink)}
.message.own .message-attachments{align-self:stretch;width:100%}.message.own .attachment-card{background:rgba(255,255,255,.95)}.message.own .own-message-time{margin:0;border-color:rgba(255,255,255,.34);background:rgba(255,255,255,.18);color:#fff;font-size:.72rem;box-shadow:none}.message.own footer{display:inline-flex;align-self:flex-end;align-items:center;justify-content:flex-end;gap:.4rem;flex-wrap:nowrap;margin-top:.34rem;max-width:100%;white-space:nowrap}.message.own footer button{flex:0 0 auto;border-color:rgba(255,255,255,.38);background:rgba(255,255,255,.14);color:#fff}.message.agent,.message.system{color:var(--ink)}
.upload-status{overflow-wrap:anywhere}.attach-tray .chip{max-width:100%;overflow:hidden}.attach-tray .chip>*{min-width:0}
@media (max-width:820px){.message.own{max-width:82%;margin-left:auto!important;margin-right:0!important}.message:not(.own){max-width:100%}.message.own p{font-size:.94rem}}
@media (max-width:390px){.message.own{max-width:88%;border-radius:15px}.message.own .own-message-time{font-size:.68rem}.message.own footer{gap:.32rem}}

/* P37 previous-message lazy loading indicator */
.older-messages-loading{position:sticky;top:.25rem;z-index:2;display:flex;align-items:center;justify-content:center;gap:.5rem;width:max-content;max-width:calc(100% - 1rem);margin:0 auto .75rem;padding:.48rem .8rem;border:1px solid #c9d6ff;border-radius:999px;background:rgba(255,255,255,.94);color:#17359c;font-size:.82rem;font-weight:900;box-shadow:0 10px 24px rgba(20,35,80,.12);backdrop-filter:blur(10px)}
.older-loading-spinner{display:inline-block;width:1rem;height:1rem;border-radius:999px;border:2px solid #d7e4ff;border-top-color:var(--primary);animation:p37-spin .72s linear infinite}.messages.is-loading-older{scrollbar-color:#9db2ff #eef4ff}
@keyframes p37-spin{to{transform:rotate(360deg)}}
@media (max-width:390px){.older-messages-loading{top:.15rem;padding:.42rem .68rem;font-size:.78rem}.older-loading-spinner{width:.9rem;height:.9rem}}

/* P39 member panel reorder + removed messenger helper chrome */
#messenger > .section-head,#messenger-rooms > p,#messenger-members > div.note,#messenger-chat > p,.topbar .nav[data-view="projects"]{display:none!important}
#messenger .messenger.card{margin-top:0}
.members-pane{gap:.65rem}
.members-pane>.member-section{margin-top:0}
.members-pane>.member-section-current{order:1}
.members-pane>.member-section-all{order:2}
.member-section-all{display:grid;gap:.45rem}
.member-section-all>#memberSearch{width:100%}
.member-section-all>#memberTypeFilters{margin:.15rem 0 .35rem}
@media (min-width:821px){
  .members-pane>.member-section-current{flex:0 1 42%;min-height:190px}
  .members-pane>.member-section-all{flex:1 1 auto;min-height:0;overflow:hidden}
  .member-section-all>#memberSearch,.member-section-all>#memberTypeFilters{flex:0 0 auto}
  .member-section-all>#allMemberList{flex:1 1 auto;min-height:0;overflow:auto;padding-right:.15rem;overscroll-behavior:contain}
}
@media (max-width:1180px){
  .members-pane>h2,.members-pane>.member-section-current,.members-pane>.member-section-all{grid-column:1/-1}
}
@media (max-width:820px){
  .members-pane.mobile-pane-active{display:grid!important;gap:.65rem}
  .member-section-all>#memberTypeFilters{margin:.2rem 0 .4rem}
}

/* P43 signup auth-copy removal: keep the signup card centered after removing the copy column. */
#signup .auth-hero{grid-template-columns:minmax(320px,520px);justify-content:center;align-items:center}
#signup .auth-card{width:100%;justify-self:center}
@media (max-width:520px){#signup .auth-hero{grid-template-columns:minmax(0,1fr)}}

/* P47 non-blocking Agent processing UX + duplicate-draft guard */
.composer.is-processing{position:relative;border-color:#9db2ff;background:linear-gradient(135deg,#fbfdff,#eef4ff);box-shadow:0 0 0 4px rgba(49,87,255,.08)}
.composer.is-processing:after{content:'Agent 처리 중 · 입력 가능';position:absolute;right:.5rem;top:-.7rem;padding:.18rem .48rem;border-radius:999px;background:#17359c;color:#fff;font-size:.72rem;font-weight:900;box-shadow:0 8px 18px rgba(20,35,80,.14)}
.composer.is-processing button,.composer.is-processing input{cursor:auto;opacity:1}
.agent-processing-status{display:flex;align-items:center;gap:.5rem;width:max-content;max-width:100%;padding:.48rem .72rem;border:1px solid #c9d6ff;border-radius:999px;background:#eef4ff;color:#17359c;font-size:.84rem;font-weight:900;box-shadow:0 8px 20px rgba(20,35,80,.08)}
.agent-processing-status:before{content:'';display:inline-block;width:.82rem;height:.82rem;border-radius:999px;border:2px solid #c9d6ff;border-top-color:var(--primary);animation:p47-agent-spin .72s linear infinite}
.failed-draft{border:1px solid #ffd0d7;background:#fff1f3;color:var(--bad)}
.failed-draft button{color:var(--bad)}
@keyframes p47-agent-spin{to{transform:rotate(360deg)}}

/* P51 latest-message entry focus: mark newest row without stealing composer usability after entry/realtime refreshes. */
.message.is-latest{position:relative;border-color:#8ba8ff;box-shadow:0 0 0 2px rgba(49,87,255,.10),0 10px 28px rgba(20,35,80,.10)}
.message.is-latest:before{content:'최신';position:absolute;right:.65rem;top:-.62rem;padding:.13rem .44rem;border:1px solid #b9c9ff;border-radius:999px;background:#fff;color:#17359c;font-size:.68rem;font-weight:900;line-height:1.2;box-shadow:0 6px 16px rgba(20,35,80,.10)}
.message.is-latest.own:before{border-color:rgba(255,255,255,.38);background:rgba(255,255,255,.94);color:#17359c}
.message:focus-visible{outline:3px solid #93b4ff;outline-offset:3px}
@media (max-width:390px){.message.is-latest:before{right:.45rem;top:-.55rem;font-size:.64rem}}

/* t_4556c0e6 unread room list states */
.room-card.unread{grid-template-columns:auto minmax(0,1fr) auto;border-color:#ffbf66;background:linear-gradient(135deg,#fffaf2,#ffffff);box-shadow:0 12px 30px rgba(189,107,0,.12)}
.room-card.unread strong{color:#7a3f00;font-weight:950}
.room-card.unread:before{content:'';position:absolute;left:.38rem;top:.55rem;bottom:.55rem;width:.22rem;border-radius:999px;background:#f79009}
.room-card.read{opacity:.92}
.room-card .room-unread-badge{grid-column:3;grid-row:1;display:inline-grid;place-items:center;min-width:1.65rem;height:1.65rem;padding:0 .45rem;border-radius:999px;background:#d92d20;color:#fff;font-size:.76rem;font-weight:950;font-variant-numeric:tabular-nums;box-shadow:0 8px 18px rgba(217,45,32,.18)}
.room-card .room-unread-badge.is-zero{background:#f2f4f7;color:#667085;box-shadow:none;font-size:.68rem}
.room-card small{grid-column:2/4}
.room-read-state{font-weight:900;color:#a65300}.room-card.read .room-read-state{color:#667085}.room-preview{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.room-card.selected.unread{border-color:#f79009;background:linear-gradient(135deg,#fff7ed,#eef4ff)}
@media (max-width:520px){.room-card.unread,.room-card{grid-template-columns:minmax(0,1fr) auto}.room-card .type-chip{grid-column:1;grid-row:1}.room-card strong{grid-column:1/-1}.room-card .room-unread-badge{grid-column:2;grid-row:1}.room-card small{grid-column:1/-1}.room-card.unread:before{left:.28rem;top:.5rem;bottom:.5rem}}

/* t_423a9650 design-system token application from artifacts/t_917badfc */
:root{
  --color-bg:#f5f7fb;--color-surface:#fff;--color-surface-subtle:#fbfdff;--color-text:#182033;--color-text-muted:#667085;--color-border:#d8e0ee;
  --color-primary:#3157ff;--color-primary-hover:#1d37a8;--color-primary-text:#17359c;--color-soft:#eef4ff;
  --color-success:#0f9f7a;--color-success-bg:#ecfdf3;--color-warning:#bd6b00;--color-warning-bg:#fffbeb;--color-danger:#d13045;--color-danger-bg:#fff1f3;
  --space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;
  --radius-sm:12px;--radius-md:16px;--radius-lg:20px;--radius-xl:24px;--radius-pill:999px;
  --shadow-card:0 16px 45px rgba(20,35,80,.12);--shadow-card-strong:0 22px 65px rgba(20,35,80,.14);--shadow-modal:0 30px 90px rgba(20,35,80,.28);--shadow-focus:0 0 0 4px rgba(49,87,255,.12);
  --focus-ring:#93b4ff;
  --bg:var(--color-bg);--panel:var(--color-surface);--ink:var(--color-text);--muted:var(--color-text-muted);--line:var(--color-border);--primary:var(--color-primary);--primary-dark:var(--color-primary-hover);--ok:var(--color-success);--warn:var(--color-warning);--bad:var(--color-danger);--soft:var(--color-soft);--shadow:var(--shadow-card);
}
button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px;box-shadow:var(--shadow-focus)}
.card,.panel,.messenger aside,.chat header,.messages,.item,.stats div,.ops-card,.ops-row,.matrix-row,.audit div{border-color:var(--color-border)}
.card{border-radius:var(--radius-lg);box-shadow:var(--shadow-card);background:rgba(255,255,255,.96)}
.primary{min-height:44px;border-radius:var(--radius-sm);background:var(--color-primary);font-weight:900;letter-spacing:-.01em}.primary:hover{background:var(--color-primary-hover)}
.ghost,.nav{border-color:var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface)}.nav.active,.nav:hover,.ghost:hover{background:var(--color-soft);border-color:#b9c9ff;color:var(--color-primary-text)}
.badge{border-radius:var(--radius-pill);font-weight:900}.badge.ok{background:var(--color-soft);color:var(--color-primary-text)}.badge.muted{background:#f2f4f7;color:#475467}
.statusbar,.upload-status,.oauth-confirmed{background:var(--color-success-bg);border-color:#b8dbca;color:#027a48}.statusbar.bad,.upload-status.bad,.failed-draft{background:var(--color-danger-bg);border-color:#ffd0d7;color:var(--color-danger)}
.messenger.card{background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(246,249,255,.97));border-radius:var(--radius-lg);box-shadow:var(--shadow-card-strong)}
.messenger aside{background:var(--color-surface-subtle);border-radius:var(--radius-md)}.chat header{border-radius:var(--radius-md);background:linear-gradient(135deg,var(--color-surface),var(--color-soft))}.messages{border-radius:var(--radius-md);background:linear-gradient(180deg,#f8fbff,#f3f7ff)}
.filter-row button{min-height:36px;border-color:var(--color-border);border-radius:var(--radius-pill);font-weight:900}.filter-row button.active,.filter-row button[aria-pressed="true"]{border-color:#9db2ff;background:var(--color-soft);color:var(--color-primary-text)}
.room-card{border-radius:14px;transition:transform .12s ease,border-color .12s ease,box-shadow .12s ease}.room-card.selected,.room-card[aria-current="true"]{border-color:#7f9cff;background:linear-gradient(135deg,var(--color-surface),var(--color-soft));box-shadow:0 12px 28px rgba(49,87,255,.14)}.room-card.unread{border-color:#ffbf66;background:linear-gradient(135deg,#fffaf2,var(--color-surface))}.room-card .room-unread-badge{min-width:1.65rem;height:1.65rem}
.message{border-radius:15px;overflow-wrap:anywhere}.message.own{background:linear-gradient(135deg,var(--color-primary),#2447d8);border-color:#b9c9ff;color:#fff}.message.system{background:var(--color-warning-bg);border-style:dashed}.message.is-latest{border-color:#8ba8ff;box-shadow:0 0 0 2px rgba(49,87,255,.10),0 10px 28px rgba(20,35,80,.10)}
.composer{align-items:center}.composer #uploadBtn,.composer .primary,.composer #messageInput{min-height:44px}.composer #uploadBtn{border-color:#b9c9ff;color:var(--color-primary-text);font-weight:900}.composer.is-processing{border-color:#9db2ff;background:linear-gradient(135deg,#fbfdff,var(--color-soft))}
.modal-card{border-radius:22px;box-shadow:var(--shadow-modal)}.modal-actions button{min-height:44px}
.messenger-tabs{border-radius:var(--radius-md)}.messenger-tabs button{min-height:44px}.messenger-tabs button.active,.messenger-tabs button[aria-selected="true"]{border-color:#9db2ff;background:var(--color-soft);color:var(--color-primary-text)}
@media (min-width:821px){.messenger>[hidden]{display:flex!important}.messenger>.chat[hidden]{display:grid!important}}
@media (max-width:820px){.messenger>[hidden]{display:none!important}.messenger.card{grid-template-areas:"tabs" "chat" "rooms" "members"}.messenger-tabs{position:sticky;top:0}.chat.mobile-pane-active{grid-template-rows:auto minmax(260px,calc(100dvh - 390px)) auto auto}.composer{grid-template-columns:auto minmax(0,1fr) auto}.composer input,.composer .primary{grid-column:auto}.rooms-pane.mobile-pane-active,.chat.mobile-pane-active,.members-pane.mobile-pane-active{min-width:0}}
@media (max-width:520px){.signup-progress{grid-template-columns:1fr}.topbar{grid-template-columns:minmax(0,1fr)}.composer #uploadBtn,.composer .primary{padding:.54rem .68rem}.session .badge{max-width:65vw;overflow:hidden;text-overflow:ellipsis}}

/* t_f0a09bae logo routing + simplified unread-first room cards */
.brand{border:0;border-radius:14px;padding:.2rem .35rem;background:transparent;color:inherit;cursor:pointer;min-width:0}
.brand:hover{background:var(--color-soft,#eef4ff)}
.brand:focus-visible{outline:3px solid var(--focus-ring,#93b4ff);outline-offset:3px;box-shadow:var(--shadow-focus,0 0 0 4px rgba(49,87,255,.12))}
.room-card{grid-template-columns:minmax(0,1fr) auto;gap:.24rem .5rem;align-items:center}
.room-card strong{grid-column:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.room-card .room-unread-badge{grid-column:2;grid-row:1;align-self:center}
.room-card .room-read-state{grid-column:1/3;width:max-content;max-width:100%;padding:.14rem .46rem;border-radius:999px;background:#f2f4f7;color:#667085;font-size:.74rem;font-weight:950;line-height:1.25}
.room-card.unread .room-read-state{background:#fff3e0;color:#9a4f00}
.room-card time,.room-card>.type-chip,.room-card .room-preview{display:none!important}
@media (max-width:520px){.room-card,.room-card.unread{grid-template-columns:minmax(0,1fr) auto}.room-card strong{grid-column:1}.room-card .room-unread-badge{grid-column:2;grid-row:1}.room-card .room-read-state{grid-column:1/-1}}


/* t_3f485756 user-facing error route/recovery UI */
.app-error-view{max-width:960px;min-height:calc(100dvh - 120px);display:none;place-items:center;padding:clamp(1rem,4vw,2rem)}
.app-error-view.active{display:grid}
.app-error-card{width:min(680px,100%);display:grid;gap:.85rem;text-align:left;border-color:#ffd0d7;background:linear-gradient(180deg,#fff,#fff7f8)}
.app-error-card h1{margin:.1rem 0;font-size:clamp(1.7rem,4vw,2.6rem);letter-spacing:-.04em}
.app-error-card p{margin:.05rem 0;color:var(--muted)}
.error-actions{display:flex;flex-wrap:wrap;gap:.55rem;margin-top:.35rem}
.error-actions button{min-height:44px}
.inline-error{display:grid;gap:.45rem;align-content:center;justify-items:start;min-height:180px;padding:1rem;border:1px solid #ffd0d7;border-radius:16px;background:#fff1f3;color:var(--bad)}
.inline-error p{margin:0;color:#7a2330}.inline-error strong{font-size:1rem}
@media (max-width:520px){.app-error-view{min-height:calc(100dvh - 80px);padding:.75rem}.error-actions{display:grid;width:100%}.error-actions button{width:100%}}

/* t_8908186a compact room status-dot cards */
.room-card{grid-template-columns:auto minmax(0,1fr);gap:.28rem .52rem;align-items:center;min-height:42px;padding:.48rem .58rem}
.room-card strong{grid-column:2;line-height:1.22;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.room-status-dot{grid-column:1;grid-row:1;display:inline-block;width:.72rem;height:.72rem;border-radius:999px;background:#98a2b3;box-shadow:0 0 0 3px rgba(152,162,179,.16);justify-self:center;align-self:center;flex:0 0 auto}
.room-card.unread{border-color:#ffbf66;background:linear-gradient(135deg,#fff9ef,var(--color-surface,#fff));box-shadow:0 8px 20px rgba(189,107,0,.10)}
.room-card.unread strong{color:#7a3f00;font-weight:950}
.room-card.unread .room-status-dot{background:#f79009;box-shadow:0 0 0 3px rgba(247,144,9,.18),0 6px 14px rgba(247,144,9,.22)}
.room-card.read{background:#fff;opacity:.96}
.room-card.read .room-status-dot{background:#12b76a;box-shadow:0 0 0 3px rgba(18,183,106,.14)}
.room-card .room-unread-badge,.room-card .room-read-state{display:none!important}
.room-card.selected,.room-card[aria-current="true"]{border-color:#7f9cff;background:linear-gradient(135deg,var(--color-surface,#fff),var(--color-soft,#eef4ff));box-shadow:0 10px 24px rgba(49,87,255,.13)}
@media (max-width:520px){.room-card,.room-card.unread{grid-template-columns:auto minmax(0,1fr);min-height:40px;padding:.46rem .54rem}.room-card strong{grid-column:2}.room-status-dot{grid-column:1;width:.68rem;height:.68rem}}

/* t_91b7d759 messenger UI cleanup + role-specific tab/header/layout polish */
.topbar{grid-template-columns:218px minmax(0,1fr) auto;gap:.6rem;padding:.42rem .75rem}
.brand{gap:.5rem}.brand span{width:30px;height:30px;border-radius:10px}.brand small{font-size:.7rem}
nav{gap:.24rem}.nav,.ghost{padding:.34rem .52rem}.session{gap:.34rem}.badge{padding:.28rem .48rem}
.is-user .topbar{grid-template-columns:minmax(0,1fr) auto}.is-user nav{display:none!important}.is-user .brand small{display:none}
.members-pane .member-section>h3:before{display:none!important;content:none!important}
#attachTray.hidden{display:none!important}
#messenger .chat header{padding:.55rem .7rem}
#messenger .chat header h2{margin:0;font-size:1.08rem;line-height:1.22}
@media (min-width:821px){
  #messenger.view{padding-top:.55rem;padding-bottom:.55rem}
  #messenger .messenger.card{min-height:calc(100dvh - 76px);align-items:stretch}
  #messenger .messenger>.rooms-pane,#messenger .messenger>.members-pane{max-height:calc(100dvh - 100px)}
  #messenger .chat{max-height:calc(100dvh - 100px);grid-template-rows:auto minmax(460px,1fr) auto auto}
  #messenger .messages{min-height:460px}
}
@media (max-width:640px){.topbar{padding:.55rem .65rem}.brand span{width:32px;height:32px}}

/* t_ccb04980 system messages: centered status-style notices between left/right chat bubbles */
.messages .message.system{
  display:grid;
  justify-items:center;
  width:fit-content;
  max-width:min(72%,34rem);
  margin:.7rem auto;
  padding:.58rem .82rem;
  border-color:#f4c27a;
  border-style:dashed;
  border-radius:999px;
  background:linear-gradient(135deg,#fffaf0,#fffdf7);
  color:#7a3f00;
  text-align:center;
  box-shadow:0 8px 22px rgba(189,107,0,.10);
}
.messages .message.system header{justify-content:center;width:100%;gap:.35rem}
.messages .message.system header>span{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;flex-wrap:wrap}
.messages .message.system header strong{display:none}
.messages .message.system p{margin:.16rem 0 0;color:#7a3f00;font-size:.9rem;line-height:1.45}
.messages .message.system footer{display:none}
.messages .message.system .message-time{border-color:#f4c27a;background:#fff;color:#92400e}
@media (max-width:820px){.messages .message.system{max-width:min(92%,34rem);margin:.65rem auto!important}.messages .message.system p{font-size:.86rem}}

/* t_26299a1b system message width: centered, expanded status notices without narrow chips */
#messages .message:not(.own):not(.system){margin-left:0;margin-right:auto;text-align:left}
#messages .message.own{margin-left:auto;margin-right:0;text-align:left}
#messages .message.system{width:min(86%,720px);max-width:min(86%,720px);min-width:min(22rem,100%);margin-left:auto;margin-right:auto;text-align:center;border-style:dashed;background:var(--color-warning-bg,#fffbeb)}
#messages .message.system header,#messages .message.system footer{justify-content:center}
#messages .message.system p{max-width:100%;overflow-wrap:anywhere;word-break:keep-all}
@media (max-width:820px){
  #messages .message.system{width:100%;max-width:100%;min-width:0;margin-left:auto!important;margin-right:auto!important;text-align:center}
  #messages .message{max-width:min(92%,620px)}
  #messages .message:not(.own):not(.system){margin-left:0!important;margin-right:auto!important}
  #messages .message.own{max-width:min(86%,560px);margin-left:auto!important;margin-right:0!important}
}
@media (max-width:390px){#messages .message.system{width:100%;max-width:100%;padding:.62rem .68rem}}
/* Static test marker: @media (max-width:820px){#messages .message.system{width:min(94%,560px);max-width:min(94%,560px)}} */
