:root{--paper: #ffffff;--panel: #ffffff;--panel-2: #f4f4f4;--panel-hover: #f6f6f6;--panel-active: #eef7fb;--ink: #1d1c1d;--muted: #616061;--line: #e2e2e3;--line-strong: #cfcfd1;--green: #007a5a;--green-strong: #148567;--green-press: #005e46;--green-soft: #e8f5f0;--blue: #1264a3;--blue-soft: #e8f2fb;--signal: #d17100;--alert: #e01e5a;--alert-soft: #fdecf1;--focus-ring: rgba(18, 100, 163, .28);--phosphor: var(--green);--phosphor-strong: var(--green-strong);--phosphor-soft: var(--green-soft);--border: var(--line);--text: var(--ink);--sb-bg: #3f0e40;--sb-bg-2: #3a0b3b;--sb-text: #bcabbc;--sb-text-strong: #ffffff;--sb-hover: #350d36;--sb-active: #1164a3;--sb-divider: rgba(255, 255, 255, .12);--mono: ui-monospace, "SF Mono", "JetBrains Mono", "Cascadia Code", Menlo, Consolas, monospace;--sans: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";--radius: 8px;--radius-sm: 4px;--shadow: 0 1px 3px rgba(0, 0, 0, .08), 0 12px 28px rgba(0, 0, 0, .12);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .08);--safe-bottom: env(safe-area-inset-bottom, 0px)}@media(prefers-color-scheme:dark){:root{--paper: #1a1d21;--panel: #1a1d21;--panel-2: #222529;--panel-hover: #232629;--panel-active: #14343f;--ink: #d1d2d3;--muted: #9a9b9d;--line: #35373b;--line-strong: #4a4d51;--green: #2eb67d;--green-strong: #26a06f;--green-press: #1e8b5f;--green-soft: #12342a;--blue: #4ea1e0;--blue-soft: #12303f;--signal: #e8a33d;--alert: #e01e5a;--alert-soft: #3a141f;--focus-ring: rgba(78, 161, 224, .3);--sb-bg: #19171d;--sb-bg-2: #17151b;--sb-text: #b7b8ba;--sb-text-strong: #ffffff;--sb-hover: #26232c;--sb-active: #1164a3;--sb-divider: rgba(255, 255, 255, .1);--shadow: 0 1px 3px rgba(0, 0, 0, .5), 0 16px 34px rgba(0, 0, 0, .44);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .45)}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--sans);font-size:15px;line-height:1.46;background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button{font:inherit;cursor:pointer;touch-action:manipulation}input,textarea,select{font:inherit;color:inherit}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--blue);outline-offset:1px;border-radius:3px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:36px;border:1px solid var(--line-strong);background:var(--panel);color:var(--ink);border-radius:var(--radius-sm);padding:7px 14px;font-weight:700;font-size:14px;line-height:1.2;text-decoration:none;transition:background-color .12s ease,border-color .12s ease,box-shadow .12s ease,color .12s ease}.btn:hover{background:var(--panel-2);border-color:var(--line-strong);text-decoration:none}.btn:active{background:var(--line)}.btn.primary{background:var(--green);border-color:var(--green);color:#fff}.btn.primary:hover{background:var(--green-strong);border-color:var(--green-strong);box-shadow:none}.btn.primary:active{background:var(--green-press);border-color:var(--green-press)}.btn.danger{color:var(--alert);border-color:color-mix(in srgb,var(--alert) 55%,var(--line));background:var(--panel)}.btn.danger:hover{background:var(--alert-soft);border-color:var(--alert)}.btn.small{min-height:30px;padding:5px 12px;font-size:13px}.btn:disabled{opacity:.5;cursor:default;box-shadow:none}.btn.send-btn{min-width:68px}.input{width:100%;border:1px solid var(--line-strong);background:var(--panel);color:var(--ink);border-radius:var(--radius-sm);padding:10px 12px;transition:border-color .12s ease,box-shadow .12s ease,background-color .12s ease}.input::placeholder{color:color-mix(in srgb,var(--muted) 78%,transparent)}.input:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px var(--focus-ring)}.mono{font-family:var(--mono)}.muted{color:var(--muted)}.chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:3px 10px;background:var(--panel);min-height:24px}.chip.on{color:var(--green);border-color:color-mix(in srgb,var(--green) 40%,var(--line));background:var(--green-soft)}.auth-wrap{min-height:100%;display:grid;place-items:center;padding:24px;background:var(--paper)}.auth-card{width:100%;max-width:400px;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:32px 30px}.auth-logo{font-size:26px;font-weight:800;letter-spacing:-.02em;margin:0 0 4px;color:var(--ink)}.auth-logo .hash{color:var(--green)}.auth-logo .cursor{display:inline-block;width:.5em;height:1.05em;background:var(--green);vertical-align:text-bottom;margin-left:2px;border-radius:1px;animation:blink 1.4s steps(1) infinite}@keyframes blink{50%{opacity:0}}.auth-sub{margin:0 0 24px;color:var(--muted);font-size:15px}.auth-card label{display:block;font-size:13px;font-weight:700;color:var(--ink);margin:16px 0 6px}.auth-card label .muted{font-weight:400}.captcha-box{display:flex;align-items:center;gap:8px;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:6px 8px;margin-bottom:6px}.captcha-img{display:block;max-width:100%;height:56px;border-radius:3px}.auth-error{background:var(--alert-soft);color:var(--alert);border:1px solid color-mix(in srgb,var(--alert) 30%,transparent);border-radius:var(--radius-sm);padding:9px 12px;font-size:13px;margin-top:14px}.auth-card .btn.primary{width:100%;min-height:44px;font-size:15px;margin-top:20px}.auth-switch{margin-top:16px;font-size:13px;color:var(--muted);text-align:center}.app{display:grid;grid-template-columns:260px 1fr;height:100%;overflow:hidden;background:var(--paper)}.sidebar{background:var(--sb-bg);color:var(--sb-text);border-right:1px solid rgba(0,0,0,.12);display:flex;flex-direction:column;min-height:0}.side-head{padding:0 12px 0 16px;min-height:49px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--sb-divider);box-shadow:0 1px #00000029}.side-head .brand{font-weight:800;font-size:18px;letter-spacing:-.01em;color:var(--sb-text-strong);display:inline-flex;align-items:center;gap:4px}.side-head .brand .hash{color:#ffffff8c;font-weight:700}.side-head .brand:after{content:"⌄";font-size:13px;color:#ffffffb3;margin-left:2px;transform:translateY(-2px)}.side-actions{display:flex;gap:4px;align-items:center}.icon-btn{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;flex:none;border:1px solid transparent;background:transparent;color:var(--muted);border-radius:var(--radius-sm);padding:0;line-height:1;text-decoration:none;transition:background-color .12s ease,color .12s ease}.icon-btn:hover{background:var(--panel-2);color:var(--ink)}.icon-btn:active{background:var(--line)}.sidebar .icon-btn{color:#ffffffb8}.sidebar .icon-btn:hover{background:var(--sb-hover);color:#fff}.sidebar .icon-btn:active{background:#00000040}.side-scroll{flex:1;overflow-y:auto;padding:8px 0 12px;min-height:0}.side-section{font-size:15px;font-weight:700;color:var(--sb-text);padding:14px 16px 4px;display:flex;justify-content:space-between;align-items:center}.side-section button{font-size:16px}.chan-item{position:relative;display:flex;align-items:center;gap:8px;width:calc(100% - 8px);margin:1px 4px;border:none;background:transparent;color:var(--sb-text);padding:5px 12px 5px 14px;border-radius:6px;font-size:15px;text-align:left;transition:background-color .1s ease,color .1s ease}.chan-item:hover{background:var(--sb-hover);color:var(--sb-text-strong)}.chan-item.active,.chan-item.active:hover{background:var(--sb-active);color:#fff;font-weight:700}.chan-item .glyph{color:#fff9;width:1em;flex:none;font-weight:400}.chan-item:hover .glyph{color:#ffffffd9}.chan-item.active .glyph{color:#fff}.chan-item .name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chan-item .badge{background:var(--alert);color:#fff;font-size:12px;border-radius:999px;min-width:19px;height:19px;display:grid;place-items:center;padding:0 6px;font-weight:700}.chan-item.active .badge{background:#fff;color:var(--sb-active)}.presence-dot{width:9px;height:9px;border-radius:50%;box-shadow:inset 0 0 0 1.5px #ffffff73;background:transparent;flex:none}.presence-dot.on{background:#2eb67d;box-shadow:none}.side-foot{border-top:1px solid var(--sb-divider);background:var(--sb-bg-2);padding:8px 10px calc(8px + var(--safe-bottom));display:flex;align-items:center;gap:8px}.side-foot .me{font-size:14px;font-weight:700;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--sb-text-strong)!important}.side-foot .muted{color:var(--sb-text)}.main{display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--paper)}.chan-head{display:flex;align-items:center;gap:8px;min-height:49px;padding:8px 16px;border-bottom:1px solid var(--line);background:var(--panel)}.chan-head .title{font-weight:800;font-size:18px;letter-spacing:-.01em;color:var(--ink)}.chan-head .title .glyph{color:var(--muted);font-weight:500;margin-right:1px}.chan-head .topic{color:var(--muted);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;padding-left:10px;margin-left:2px;border-left:1px solid var(--line)}.chan-head .spacer{flex:1}.menu-btn{display:none}.msg-scroll{flex:1;overflow-y:auto;padding:18px 0 10px;min-height:0}.day-divider{position:sticky;top:8px;z-index:2;display:flex;align-items:center;justify-content:center;margin:14px 16px;pointer-events:none}.day-divider:before,.day-divider:after{content:"";flex:1;border-top:1px solid var(--line)}.day-divider span{pointer-events:auto;background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:3px 14px;margin:0 8px;font-size:13px;font-weight:700;color:var(--ink);box-shadow:var(--shadow-sm)}.msg-group{position:relative;margin:0;padding:4px 0 2px}.msg-group+.msg-group{margin-top:2px}.mg-head{position:relative;padding:0 20px 1px 56px;display:flex;align-items:baseline;gap:8px;min-height:20px}.mg-head .avatar-btn{position:absolute;left:16px;top:1px;width:36px;height:36px;border:none;background:none;padding:0;cursor:pointer;border-radius:var(--radius)}.mg-head .avatar-btn:hover{filter:brightness(.94)}.mg-head .avatar-btn .avatar,.mg-head .avatar-btn .avatar-fallback{width:36px!important;height:36px!important;border-radius:var(--radius);font-size:15px!important}.mg-head .nick{font-weight:900;font-size:15px;color:var(--ink);letter-spacing:-.01em}.mg-head .nick-btn{-webkit-appearance:none;appearance:none;border:none;background:none;padding:0;margin:0;font-family:inherit;cursor:pointer}.mg-head .nick-btn:hover{text-decoration:underline}.mg-head .nick-btn,.q-nick,.uc-name,.member-row .grow{color:var(--ink)!important}.mg-head .time{color:var(--muted);font-size:12px;font-weight:400;margin-left:0}.msg-row{position:relative;padding:1px 20px 1px 56px;border-radius:0;transition:background-color .08s ease}.msg-row:hover{background:var(--panel-hover)}.msg-row .row-time{position:absolute;top:2px;left:0;width:56px;padding-right:6px;text-align:right;font-size:11px;color:var(--muted);opacity:0;font-variant-numeric:tabular-nums}.msg-row:hover .row-time{opacity:1}.mg-head+.msg-row .row-time{display:none}.msg-row .body{min-width:0;overflow-wrap:anywhere;white-space:pre-wrap;color:var(--ink)}.msg-row .body .mention{font-weight:700;color:var(--blue);background:var(--blue-soft);border-radius:3px;padding:0 2px}.msg-row .edited{font-size:11px;color:var(--muted);margin-left:6px}.seen{font-size:11px;color:var(--muted);text-align:right;padding:0 20px 2px}.msg-tools{position:absolute;top:-16px;right:16px;display:none;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden;z-index:5}.msg-row:hover .msg-tools,.msg-row:focus-within .msg-tools{display:flex}.msg-tools button{border:none;background:transparent;width:32px;height:30px;padding:0;font-size:14px;color:var(--muted);display:grid;place-items:center}.msg-tools button:hover{color:var(--ink);background:var(--panel-hover)}.reactions{display:flex;gap:5px;flex-wrap:wrap;margin-top:5px}.reaction{border:1px solid var(--line);background:var(--panel-2);border-radius:999px;padding:1px 9px;font-size:13px;display:inline-flex;gap:5px;align-items:center;min-height:24px;transition:border-color .12s ease,background-color .12s ease}.reaction .n{font-size:12px;font-weight:700;color:var(--muted)}.reaction.mine{border-color:var(--blue);background:var(--blue-soft)}.reaction.mine .n{color:var(--blue)}.reaction:hover{border-color:var(--line-strong)}.reaction.mine:hover{border-color:var(--blue)}.thread-link{border:1px solid transparent;background:transparent;color:var(--blue);font-size:13px;font-weight:700;padding:3px 8px 3px 4px;margin-top:4px;border-radius:var(--radius-sm)}.thread-link:hover{background:var(--panel);border-color:var(--line);text-decoration:none}.file-card{display:flex;align-items:center;gap:10px;border:1px solid var(--line);background:var(--panel);border-radius:var(--radius);padding:10px 12px;margin-top:6px;max-width:420px;text-decoration:none;color:var(--ink);transition:border-color .12s ease,box-shadow .12s ease}.file-card:hover{border-color:var(--line-strong);box-shadow:var(--shadow-sm);text-decoration:none}.file-card .fname{font-weight:700;font-size:13px;word-break:break-all}.file-card .fsize{color:var(--muted);font-size:12px}.img-preview{display:block;max-width:min(420px,100%);max-height:320px;border-radius:var(--radius);border:1px solid var(--line);margin-top:6px}.typing-row{height:22px;padding:0 20px 2px;font-size:12px;color:var(--muted);font-style:italic}.uc-backdrop{position:fixed;inset:0;z-index:100}.user-card{position:fixed;z-index:101;width:264px;max-width:calc(100vw - 16px);background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);overflow:hidden}.uc-head{display:flex;gap:12px;padding:16px;align-items:center}.uc-head .avatar,.uc-head .avatar-fallback{border-radius:var(--radius)}.uc-id{min-width:0;flex:1}.uc-name{font-weight:900;font-size:17px;letter-spacing:-.01em;display:flex;align-items:center;gap:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.uc-sub{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);margin-top:3px}.uc-sub .presence-dot{box-shadow:inset 0 0 0 1.5px var(--line-strong)}.uc-sub .presence-dot.on{box-shadow:none;background:#2eb67d}.uc-status{font-size:13px;color:var(--ink);margin-top:6px;overflow-wrap:anywhere}.uc-actions{padding:12px 16px;border-top:1px solid var(--line);background:var(--panel-2)}.uc-actions .btn{width:100%}.composer{position:relative;margin:0 16px calc(16px + var(--safe-bottom));border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--panel);box-shadow:var(--shadow-sm);display:flex;align-items:flex-end;gap:6px;padding:6px 8px 6px 10px;transition:border-color .12s ease,box-shadow .12s ease}.composer:focus-within{border-color:var(--line-strong);box-shadow:0 0 0 1px var(--line-strong),var(--shadow-sm)}.composer .prompt{display:none}.composer textarea{flex:1;border:none;background:transparent;resize:none;padding:8px 2px;max-height:180px;min-height:24px;line-height:1.46;color:var(--ink)}.composer textarea:focus{outline:none}.composer .icon-btn{width:34px;height:34px;color:var(--muted)}.composer .icon-btn:hover{background:var(--panel-2);color:var(--ink)}.composer-send{width:34px;height:34px;flex:none;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--muted);display:grid;place-items:center;transition:background-color .12s ease,color .12s ease}.composer-send svg{width:20px;height:20px;display:block}.composer-send.active{background:var(--green);color:#fff}.composer-send.active:hover{background:var(--green-strong)}.composer-send:disabled{cursor:default;color:color-mix(in srgb,var(--muted) 55%,transparent)}.emoji-suggest{position:absolute;bottom:calc(100% + 8px);left:0;display:flex;gap:4px;flex-wrap:wrap;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:6px;z-index:30}.emoji-suggest button{border:none;background:transparent;border-radius:var(--radius-sm);padding:4px 8px;font-size:13px;color:var(--muted);display:inline-flex;align-items:center;gap:6px}.emoji-suggest button .ch{font-size:17px}.emoji-suggest button:hover,.emoji-suggest button[aria-selected=true]{background:var(--blue-soft);color:var(--blue)}.emoji-pop{position:absolute;bottom:calc(100% + 8px);right:0;display:grid;grid-template-columns:repeat(8,1fr);gap:2px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:8px;z-index:30;max-width:320px}.emoji-pop button{border:none;background:transparent;font-size:20px;line-height:1;border-radius:var(--radius-sm);padding:5px}.emoji-pop button:hover{background:var(--panel-hover)}.fx{position:fixed;inset:0;pointer-events:none;z-index:200;overflow:hidden}.fx span{position:absolute;will-change:transform,opacity}.fx .fx-rise{bottom:-70px;animation:fx-rise 3s linear forwards}@keyframes fx-rise{70%{opacity:1}to{transform:translateY(calc(-100vh - 140px)) translate(var(--sway, 0px));opacity:0}}.fx .fx-fall{top:-60px;animation:fx-fall 4s linear forwards}.fx .fx-paper{border-radius:2px;display:inline-block}@keyframes fx-fall{80%{opacity:1}to{transform:translateY(calc(100vh + 120px)) translate(var(--sway, 0px)) rotate(var(--spin, 360deg));opacity:0}}.fx .fx-burst{width:7px;height:7px;border-radius:50%;transform:scale(0);animation:fx-burst 1.1s ease-out forwards}@keyframes fx-burst{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(var(--dx),var(--dy)) scale(.3);opacity:0}}.fx .fx-across{left:-90px;top:var(--y, 60vh);animation:fx-across 1.6s ease-in forwards}@keyframes fx-across{to{transform:translate(calc(100vw + 220px),calc(-1 * var(--y, 60vh) - 20vh))}}.upload-row{margin:0 16px 8px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);padding:8px 12px;display:flex;align-items:center;gap:10px;font-size:13px;box-shadow:var(--shadow-sm)}.upload-bar{flex:1;height:6px;background:var(--line);border-radius:999px;overflow:hidden}.upload-bar>div{height:100%;background:var(--green);transition:width .2s}.overlay-panel{position:fixed;inset:0 0 0 auto;width:min(440px,100vw);background:var(--panel);border-left:1px solid var(--line);box-shadow:var(--shadow);display:flex;flex-direction:column;z-index:40}.overlay-head{display:flex;align-items:center;justify-content:space-between;min-height:49px;padding:10px 16px;border-bottom:1px solid var(--line);font-weight:800;font-size:18px;letter-spacing:-.01em;background:var(--panel)}.overlay-body{flex:1;overflow-y:auto;min-height:0}.modal-back{position:fixed;inset:0;background:#00000080;display:grid;place-items:center;z-index:70;padding:16px}.modal{position:relative;width:100%;max-width:520px;background:var(--panel);border-radius:12px;border:1px solid var(--line);box-shadow:var(--shadow);padding:24px;max-height:90vh;overflow-y:auto}.modal-close{position:absolute;top:12px;right:12px;width:34px;height:34px;display:grid;place-items:center;border:none;background:transparent;color:var(--muted);border-radius:var(--radius-sm);font-size:16px;line-height:1;cursor:pointer;z-index:1}.modal-close:hover{background:var(--panel-2);color:var(--ink)}.modal h3{margin:0 0 4px;font-size:22px;font-weight:800;letter-spacing:-.01em}.modal .sub{color:var(--muted);font-size:14px;margin:0 0 16px}.modal label{display:block;font-size:13px;font-weight:700;color:var(--ink);margin:14px 0 6px}.modal .row{display:flex;gap:8px;justify-content:flex-end;margin-top:20px}.member-row{display:flex;align-items:center;gap:10px;padding:7px 2px;font-size:14px}.member-row .grow{flex:1}.msg-row.flash{animation:flash-bg 2.4s ease-out}@keyframes flash-bg{0%,40%{background:color-mix(in srgb,var(--signal) 18%,transparent);box-shadow:inset 2px 0 0 var(--signal)}to{background:transparent}}.fp-row{display:flex;align-items:center;gap:12px;padding:11px 16px;border-bottom:1px solid var(--line);transition:background-color .12s ease}.fp-row:hover{background:var(--panel-hover)}.fp-thumb{width:42px;height:42px;object-fit:cover;border-radius:var(--radius);border:1px solid var(--line);flex:none}.fp-icon{font-size:26px;width:42px;text-align:center;flex:none}.fp-meta{flex:1;min-width:0;display:grid}.fp-name{font-size:13px;font-weight:700;color:var(--ink);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fp-name:hover{color:var(--blue);text-decoration:underline}.fp-sub{font-size:12px;color:var(--muted)}.search-hit{display:block;width:100%;text-align:left;border:none;border-bottom:1px solid var(--line);background:transparent;padding:11px 16px;color:var(--ink);transition:background-color .12s ease}.search-hit:hover{background:var(--panel-hover)}.search-hit .where{font-size:13px;font-weight:700;color:var(--blue)}.search-hit .snippet{font-size:14px;margin-top:2px;overflow-wrap:anywhere}.search-hit .when{font-size:11px;color:var(--muted)}.admin-wrap{flex:1;overflow-y:auto;padding:24px;min-height:0}.admin-wrap h2{margin:4px 0 18px;font-size:22px;font-weight:800;letter-spacing:-.01em}.admin-tabs{display:flex;gap:6px;margin-bottom:18px;flex-wrap:wrap}.admin-tabs button{border:1px solid var(--line);background:var(--panel);border-radius:999px;padding:6px 14px;font-size:13px;font-weight:700;color:var(--muted);transition:border-color .12s ease,background-color .12s ease,color .12s ease}.admin-tabs button:hover{color:var(--ink);border-color:var(--line-strong)}.admin-tabs button.on{color:#fff;border-color:var(--green);background:var(--green)}.table{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.table th,.table td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);font-size:13.5px}.table th{font-size:11px;letter-spacing:.04em;font-weight:700;color:var(--muted);background:var(--panel-2);text-transform:uppercase}.table td.mono{font-size:12.5px}.table tr:last-child td{border-bottom:none}.pill{font-size:11px;font-weight:700;border-radius:999px;padding:2px 9px}.pill.active{background:var(--green-soft);color:var(--green)}.pill.paused{background:var(--alert-soft);color:var(--alert)}.pill.admin{background:var(--blue-soft);color:var(--blue)}.settings-grid{display:grid;gap:12px;max-width:620px}.setting-row{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;display:flex;align-items:center;gap:14px}.setting-row .info{flex:1}.setting-row .info b{display:block;font-size:14px}.setting-row .info span{font-size:12.5px;color:var(--muted)}.toggle{position:relative;width:42px;height:24px;flex:none}.toggle input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}.toggle .knob{position:absolute;inset:0;background:var(--line-strong);border-radius:999px;transition:background .15s}.toggle .knob:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #00000040;transition:transform .15s}.toggle input:checked+.knob{background:var(--green)}.toggle input:checked+.knob:after{transform:translate(18px)}.toasts{position:fixed;bottom:calc(20px + var(--safe-bottom));left:50%;transform:translate(-50%);z-index:90;display:grid;gap:8px}.toast{background:#1d1c1d;color:#fff;border-radius:var(--radius);padding:11px 16px;font-size:13.5px;box-shadow:var(--shadow)}.toast.error{background:var(--alert);color:#fff}.bot-badge{font-size:9px;font-weight:800;letter-spacing:.04em;color:var(--muted);background:var(--panel-2);border:1px solid var(--line);border-radius:3px;padding:0 4px;vertical-align:middle;text-transform:uppercase}.token-reveal{background:var(--green-soft);border:1px solid color-mix(in srgb,var(--green) 40%,var(--line));border-radius:var(--radius);padding:12px 14px;margin-bottom:16px;font-size:13px}.token-value{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 10px;margin-top:6px;word-break:break-all;font-family:var(--mono);font-size:12.5px}.avatar{border-radius:var(--radius);object-fit:cover;flex:none;display:inline-block;vertical-align:middle}.avatar-fallback{border-radius:var(--radius);color:#fff;display:inline-grid;place-items:center;font-weight:700;flex:none;vertical-align:middle;user-select:none}.ic{font-family:var(--mono);font-size:.85em;background:var(--panel-2);border:1px solid var(--line);border-radius:3px;padding:1px 4px;color:#c2185b}.codeblock{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px;margin:6px 0;overflow-x:auto;font-family:var(--mono);font-size:12.5px;line-height:1.5;max-width:720px}.quote-card{display:block;width:fit-content;max-width:480px;text-align:left;background:transparent;border:none;border-left:4px solid var(--line-strong);border-radius:0;padding:2px 0 2px 12px;margin:4px 0;color:var(--ink);cursor:pointer}.quote-card:hover{border-color:var(--muted)}.quote-card .q-nick{font-size:13px;font-weight:700;display:block}.quote-card .q-text{font-size:13px;color:var(--muted);display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:440px}.pin-note{font-size:11px;font-weight:700;color:var(--signal);margin-bottom:2px}.lp-card{display:block;width:fit-content;max-width:480px;border:1px solid var(--line);border-left:4px solid var(--line-strong);border-radius:var(--radius);background:var(--panel);padding:8px 12px;margin-top:6px;text-decoration:none;color:var(--ink);transition:border-color .12s ease,box-shadow .12s ease}.lp-card:hover{border-color:var(--line-strong);box-shadow:var(--shadow-sm);text-decoration:none}.lp-title{display:block;font-weight:700;font-size:13.5px;color:var(--blue)}.lp-desc{display:block;font-size:12.5px;color:var(--muted);margin-top:2px}.lp-site{display:block;font-size:11px;color:var(--muted);margin-top:4px}.lp-img{display:block;max-width:100%;max-height:240px;border-radius:6px;margin-top:8px;border:1px solid var(--line)}.img-preview.clickable{cursor:zoom-in}.media-embeds{display:flex;flex-direction:column;gap:6px;margin-top:6px}.media-img-link{display:block;width:fit-content;line-height:0;border-radius:var(--radius)}.media-img{display:block;max-width:min(400px,100%);max-height:320px;width:auto;border-radius:var(--radius);border:1px solid var(--line);background:var(--panel-2)}.media-video{display:block;max-width:min(480px,100%);max-height:360px;border-radius:var(--radius);border:1px solid var(--line);background:#000}.yt-embed{position:relative;display:block;width:min(480px,100%);aspect-ratio:16 / 9;border:1px solid var(--line);padding:0;border-radius:var(--radius);overflow:hidden;cursor:pointer;background:#000}.yt-thumb{width:100%;height:100%;object-fit:cover;display:block}.yt-play{position:absolute;inset:0;margin:auto;width:64px;height:44px;display:grid;place-items:center;background:#000000b8;color:#fff;border-radius:10px;font-size:20px;padding-left:3px;transition:background-color .15s ease}.yt-embed:hover .yt-play{background:red}.yt-frame{width:min(480px,100%);aspect-ratio:16 / 9;border-radius:var(--radius);overflow:hidden;background:#000;border:1px solid var(--line)}.yt-frame iframe{width:100%;height:100%;border:0;display:block}.lightbox{position:fixed;inset:0;background:#000000d9;z-index:120;display:grid;place-items:center}.lb-img{max-width:92vw;max-height:84vh;border-radius:var(--radius);object-fit:contain}.lb-top{position:absolute;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;padding:12px 16px;color:#fff;font-size:13px}.lb-nav{position:absolute;top:50%;transform:translateY(-50%);background:#ffffff1f;border:1px solid rgba(255,255,255,.16);color:#fff;font-size:34px;width:52px;height:52px;border-radius:50%;line-height:0;display:grid;place-items:center}.lb-nav:hover{background:#ffffff40}.lb-nav.prev{left:18px}.lb-nav.next{right:18px}.chan-item.muted-chan .name{color:color-mix(in srgb,var(--sb-text) 65%,transparent)}.install-banner{position:fixed;right:16px;bottom:calc(16px + var(--safe-bottom));z-index:80;display:flex;align-items:center;gap:10px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:11px 12px;max-width:min(420px,calc(100vw - 32px))}.install-banner .ib-icon{color:var(--green);font-size:18px}.install-banner .ib-text{display:grid;font-size:13px;line-height:1.35}.install-banner .ib-text b{font-weight:700}.install-banner .ib-text span{color:var(--muted);font-size:12.5px}.notify-nudge{position:fixed;top:calc(12px + env(safe-area-inset-top,0px));left:50%;transform:translate(-50%);z-index:65;display:flex;align-items:center;gap:12px;width:max-content;max-width:min(460px,calc(100vw - 20px));background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:10px 10px 10px 14px;animation:nudge-in .22s ease}@keyframes nudge-in{0%{transform:translate(-50%,-12px);opacity:0}to{transform:translate(-50%);opacity:1}}.notify-nudge .nn-icon{font-size:20px;flex:none}.notify-nudge .nn-text{display:grid;min-width:0}.notify-nudge .nn-text b{font-weight:700;font-size:13.5px}.notify-nudge .nn-text span{color:var(--muted);font-size:12.5px;line-height:1.35}.notify-nudge .btn,.notify-nudge .nn-close{flex:none}.empty{flex:1;display:grid;place-items:center;color:var(--muted);font-size:14px;text-align:center;padding:24px}@media(max-width:760px){.app{grid-template-columns:1fr}.sidebar{position:fixed;inset:0 18% 0 0;z-index:60;transform:translate(-105%);transition:transform .2s ease;box-shadow:var(--shadow)}.sidebar.open{transform:translate(0)}.side-back{position:fixed;inset:0;background:#00000070;z-index:55}.menu-btn{display:inline-flex}.chan-head{min-height:52px;padding:8px 8px 8px 6px;gap:6px}.chan-head .topic{display:none}.chan-head .title{font-size:16px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chan-head .icon-btn{flex:none}.icon-btn{width:32px;height:32px}.mg-head{padding-left:52px}.mg-head .avatar-btn{left:12px}.msg-row{padding-left:52px;padding-right:12px}.msg-row .row-time{width:52px}.day-divider{margin-inline:12px}.composer{margin:0 10px calc(10px + var(--safe-bottom));padding:5px 6px;gap:4px}.composer .icon-btn{width:34px;height:34px}.emoji-pop{grid-template-columns:repeat(6,1fr)}.install-banner{bottom:calc(86px + var(--safe-bottom));right:10px}.overlay-panel{width:100vw}.modal-back{place-items:end center;padding:0}.modal{position:relative;max-width:none;width:100%;border-radius:16px 16px 0 0;max-height:92vh;max-height:92dvh;padding:24px 16px calc(16px + var(--safe-bottom));animation:sheet-up .18s ease;-webkit-overflow-scrolling:touch}.modal:before{content:"";position:absolute;top:9px;left:50%;transform:translate(-50%);width:36px;height:4px;border-radius:999px;background:var(--line-strong)}.modal .row{position:sticky;bottom:calc(-1 * var(--safe-bottom));background:var(--panel);margin:18px -16px calc(-1 * (16px + var(--safe-bottom)));padding:12px 16px calc(12px + var(--safe-bottom));border-top:1px solid var(--line)}.member-row{flex-wrap:wrap}.member-row .grow{min-width:0;overflow-wrap:anywhere}.member-row .btn{flex:none}}@keyframes sheet-up{0%{transform:translateY(14px);opacity:.4}to{transform:translateY(0);opacity:1}}.chan-list-head{display:flex;align-items:baseline;justify-content:space-between;margin:16px 0 6px;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:700}.chan-list{display:flex;flex-direction:column;gap:4px;max-height:340px;overflow-y:auto}.chan-list-row{display:grid;grid-template-columns:1fr auto auto;grid-template-areas:"name users action" "topic topic action";gap:2px 10px;align-items:center;padding:9px 12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);text-align:left;cursor:pointer;transition:border-color .12s,background-color .12s,box-shadow .12s}.chan-list-row:hover:not(:disabled){border-color:var(--line-strong);background:var(--panel-hover);box-shadow:var(--shadow-sm)}.chan-list-row:disabled{opacity:.6;cursor:default}.chan-list-row .clr-name{grid-area:name;font-weight:800;color:var(--ink)}.chan-list-row .clr-name .hash{color:var(--muted);margin-right:1px}.chan-list-row .clr-users{grid-area:users;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.chan-list-row .clr-topic{grid-area:topic;font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.chan-list-row .clr-action{grid-area:action;font-size:11px;text-transform:uppercase;letter-spacing:.04em;font-weight:700;color:#fff;border:1px solid var(--green);background:var(--green);padding:4px 12px;border-radius:var(--radius-sm)}.chan-list-row:disabled .clr-action{color:var(--muted);background:transparent;border-color:var(--line)}
