body.app{height:100vh;overflow:hidden;display:flex;flex-direction:column}
.shell{flex:1;display:grid;grid-template-columns:280px 1fr 440px;min-height:0}
.rooms{border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0;background:var(--bg2)}
.rooms-head{display:flex;gap:8px;padding:12px}
.rooms-head .btn{font-size:18px;padding:4px 14px}
.room-list{overflow:auto;flex:1;padding:0 8px 12px}
.room-item{display:flex;gap:10px;align-items:center;padding:10px;border-radius:12px;color:var(--text)}
.room-item:hover{background:var(--card);text-decoration:none}
.room-item.on{background:var(--card2)}
.room-av{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;font-weight:800;color:#1A1420;flex:none}
.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat{display:flex;flex-direction:column;min-height:0;min-width:0}
.room-head{display:flex;gap:10px;align-items:center;padding:14px 20px;border-bottom:1px solid var(--line)}
.room-head h2{font-size:19px;margin:0}
.msgs{flex:1;overflow:auto;padding:16px 20px;display:flex;flex-direction:column;gap:4px}
.msg{display:flex;gap:10px;margin:6px 0;max-width:85%}
.msg .av{width:34px;height:34px;border-radius:50%;flex:none;display:grid;place-items:center;font-weight:800;font-size:12px;color:#1A1420}
.msg .meta{display:flex;gap:8px;align-items:baseline;font-size:12.5px;margin-bottom:2px}
.msg .bubble{background:var(--card2);padding:8px 12px;border-radius:14px;border-top-left-radius:4px;white-space:pre-wrap;word-break:break-word}
.msg.mine{align-self:flex-end;flex-direction:row-reverse}
.msg.mine .meta{justify-content:flex-end}
.msg.mine .bubble{background:#3a2516;border-top-left-radius:14px;border-top-right-radius:4px}
.admin-tag{font-size:10.5px;font-weight:800;color:#1A1420;background:var(--orange2);padding:0 6px;border-radius:6px}
.sys{align-self:center;font-size:12.5px;color:var(--muted);background:var(--bg2);border:1px solid var(--line);padding:5px 12px;border-radius:999px;margin:6px 0;text-align:center;max-width:92%}
.sys-round{color:var(--orange2);border-color:#4d3220;background:#21170f;cursor:pointer}
.composer{display:flex;gap:10px;padding:12px 20px 16px;border-top:1px solid var(--line);align-items:flex-end}
.composer textarea{resize:none;max-height:140px}
.side{border-left:1px solid var(--line);overflow:auto;padding:14px;background:var(--bg2)}
.side-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.side-head h3{margin:0;font-size:16px}
.empty{margin:auto;text-align:center;padding:40px}
.empty-side{text-align:center;padding:30px 10px;color:var(--muted)}
.round{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:16px;margin-bottom:14px;display:flex;flex-direction:column;gap:12px}
.round.skeleton{height:260px;background:linear-gradient(90deg,var(--card),var(--card2),var(--card));background-size:200% 100%;animation:sk 1.2s infinite}
@keyframes sk{to{background-position:-200% 0}}
.round-head{display:flex;justify-content:space-between;align-items:center;gap:8px}
.round-head h3{margin:0;font-size:18px}
.target{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:14px}
.target .addr{color:var(--muted)}
.sched-bar{display:flex;gap:4px;height:12px}
.sched-bar span{border-radius:4px;background:var(--line2)}
.sched-bar span.done{background:linear-gradient(90deg,var(--orange2),var(--orange))}
.sched-bar span.next{background:repeating-linear-gradient(45deg,#4d3220,#4d3220 6px,#3a2516 6px,#3a2516 12px)}
.sched .row{margin-top:6px}
.stats{background:var(--bg2);border-radius:14px;padding:12px}
.stats .stat b{font-size:16px}
.progress{position:relative;background:var(--bg2);border-radius:999px;height:22px;overflow:hidden}
.progress div{position:absolute;inset:0 auto 0 0;background:#1f4d3a}
.progress small{position:relative;display:block;text-align:center;line-height:22px;font-size:12px}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.times{margin-top:-4px}
.mine{border-top:1px solid var(--line);padding-top:12px}
.claim{display:flex;justify-content:space-between;align-items:center;gap:10px;background:#13261e;border:1px solid #1f4d3a;border-radius:14px;padding:12px;margin-top:8px}
.admin{background:#1f1813;border:1px dashed #5a3a22;border-radius:14px;padding:12px}
.admin-title{font-weight:700;font-size:13px;color:var(--orange2)}
.admin label{margin-top:6px}
.warn-text{color:var(--yellow)}
table.rules{width:100%;border-collapse:collapse;font-size:14px}
table.rules td{padding:7px 4px;border-bottom:1px solid var(--line);vertical-align:top}
table.rules td:first-child{color:var(--muted);width:42%}
table.rules code{word-break:break-all}
form.create h4{margin:18px 0 8px;font-size:15px;color:var(--orange2)}
form.create h4:first-child{margin-top:0}
form.create .btn-block{margin-top:14px;padding:13px}
.mobile-only{display:none}
@media (max-width:1180px){.shell{grid-template-columns:240px 1fr 380px}}
@media (max-width:900px){
  body.app{height:auto;overflow:auto}
  .shell{grid-template-columns:1fr;display:block}
  .rooms{border-right:0;border-bottom:1px solid var(--line);max-height:200px}
  .chat{height:70vh}
  .side{border-left:0;border-top:1px solid var(--line)}
  .mobile-only{display:inline-block}
}
