:root{--bg: #0b141a;--panel: #111b21;--header: #202c33;--accent: #00a884;--text: #e9edef;--muted: #8696a0;--danger: #f15c6d;--border: #2a3942;--input: #2a3942;--shadow: 0 8px 28px rgba(0, 0, 0, .35);color-scheme:dark;font-family:Segoe UI,PingFang SC,Hiragino Sans GB,Noto Sans SC,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text)}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer;border:0;background:none}input,textarea{outline:none}.app-shell{height:100%;display:grid;place-items:center;background:radial-gradient(1200px 500px at 10% -10%,#0e3b34 0%,transparent 50%),var(--bg)}.auth-card{width:min(420px,calc(100% - 32px));background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:32px 28px;box-shadow:var(--shadow)}.brand{display:flex;align-items:center;gap:12px;margin-bottom:8px}.brand-mark{width:48px;height:48px;flex:none;display:grid;place-items:center}.brand-mark img{width:48px;height:48px;display:block;object-fit:contain}.brand h1{margin:0;font-size:26px}.auth-card p{color:var(--muted);margin:0 0 24px}.auth-card label,.admin-thread label{display:block;font-size:13px;color:var(--muted);margin:14px 0 6px}.auth-card input{width:100%;background:var(--input);border:1px solid transparent;border-radius:10px;padding:12px 14px}.auth-card input:focus,.admin-search:focus{border-color:var(--accent)}.auth-actions{display:flex;gap:10px;margin-top:22px}.btn{flex:1;background:var(--accent);color:#052e29;font-weight:700;border-radius:10px;padding:11px 14px;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px}.btn.secondary{background:var(--header);color:var(--text)}.btn:hover{filter:brightness(1.08)}.btn:disabled{opacity:.45;cursor:default}.error{color:var(--danger);font-size:13px;min-height:18px;margin-top:8px}.hint,.sub{font-size:12px;color:var(--muted);line-height:1.5}.hint{margin-top:18px}.admin-shell{height:100%;display:grid;grid-template-columns:240px 1fr;background:var(--bg);transition:grid-template-columns .2s ease}.admin-shell.is-collapsed{grid-template-columns:76px 1fr}.admin-nav{background:var(--panel);border-right:1px solid var(--border);padding:18px 14px;display:flex;flex-direction:column;gap:18px;min-width:0;position:relative}.admin-nav-top{display:flex;align-items:center;min-width:0}.admin-nav-copy h3{white-space:nowrap}.admin-nav-toggle{position:absolute;top:22px;right:-13px;z-index:3;color:var(--muted);width:26px;height:26px;padding:0;display:grid;place-items:center;border-radius:999px;background:var(--panel);border:1px solid var(--border)}.admin-nav-toggle:hover{color:var(--text);background:#1a2730}.admin-nav nav{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0;overflow:hidden}.admin-nav nav a{display:flex;align-items:center;gap:10px;color:var(--text);text-decoration:none;padding:10px 12px;border-radius:10px;white-space:nowrap;overflow:hidden;min-width:0}.admin-nav nav a:hover{background:#1a2730}.admin-nav nav a.active{background:#1f3a36;color:var(--accent)}.admin-nav-group{display:grid;gap:2px}.admin-nav-parent{display:flex;align-items:center;min-width:0}.admin-nav-parent-main{flex:1;min-width:0;display:flex;align-items:center;gap:10px;padding:10px 8px 10px 12px;border-radius:10px;color:var(--text);white-space:nowrap;overflow:hidden;text-align:left}.admin-nav-parent-main:hover,.admin-nav-caret:hover{background:#1a2730}.admin-nav-parent.is-current .admin-nav-parent-main{color:var(--accent)}.admin-nav-caret{flex:none;width:28px;height:34px;border-radius:8px;color:var(--muted);display:grid;place-items:center}.admin-nav-caret svg{transition:transform .15s ease}.admin-nav-group:not(.is-open) .admin-nav-caret svg{transform:rotate(-90deg)}.admin-nav-sub{display:grid;gap:2px;margin:0 0 4px 22px;padding:2px 0 2px 10px;border-left:1px solid var(--border)}.admin-nav-sub a{padding:8px 12px;color:var(--muted);font-size:14px}.admin-nav-sub a.active{color:var(--accent)}.admin-shell.is-collapsed .admin-nav-sub{display:none}.admin-nav-foot{display:grid;gap:8px;min-width:0;overflow:hidden}.admin-nav-foot .btn{width:100%}.admin-shell.is-collapsed .admin-nav{padding:16px 8px;align-items:stretch}.admin-shell.is-collapsed .admin-nav-top,.admin-shell.is-collapsed .brand{justify-content:center}.admin-shell.is-collapsed .brand-mark,.admin-shell.is-collapsed .brand-mark img{width:36px;height:36px}.admin-shell.is-collapsed .admin-nav-copy,.admin-shell.is-collapsed .admin-nav nav a span,.admin-shell.is-collapsed .admin-nav-foot .sub,.admin-shell.is-collapsed .admin-nav-foot .btn span{display:none}.admin-shell.is-collapsed .admin-nav nav a{justify-content:center;padding:12px 8px}.admin-shell.is-collapsed .admin-nav-foot .btn{padding-left:0;padding-right:0}.admin-main{padding:28px 32px;overflow:auto;min-width:0}.admin-main h1{margin:0 0 18px;font-size:24px}.admin-main h2{margin:0 0 12px;font-size:16px}.admin-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;margin-bottom:16px}.admin-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:16px;display:grid;gap:8px}.admin-card strong{font-size:28px}.admin-search{width:min(360px,100%);background:var(--input);border:1px solid transparent;border-radius:10px;padding:10px 12px;margin-bottom:16px}.admin-form{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:16px;display:grid;gap:10px;margin-bottom:20px}.admin-form .admin-search{width:100%;margin:0}.admin-form textarea.admin-search{min-height:88px;resize:vertical}.admin-form label{display:flex;align-items:center;gap:8px;color:var(--muted)}.admin-table-wrap{overflow:auto}.admin-table{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--border);border-radius:12px;overflow:hidden}.admin-table th,.admin-table td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--border);vertical-align:middle}.admin-table th{color:var(--muted);font-size:12px;font-weight:600}.admin-table tr:last-child td{border-bottom:0}.admin-table tbody tr.is-active{background:#1f3a36}.admin-table tbody tr.is-disabled{opacity:.62}.admin-table.clickable tbody tr{cursor:pointer}.admin-user{display:flex;align-items:center;gap:10px}.admin-user p{margin:0}.audit-table td .ops-badge{margin-left:8px;vertical-align:middle}.audit-table td p.sub{margin:4px 0 0}.audit-mono{font-variant-numeric:tabular-nums;white-space:nowrap}.audit-ua{max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-actions{display:flex;gap:8px;flex-wrap:wrap}.admin-actions .btn{flex:none;padding:7px 10px;font-size:13px}.admin-pager{display:flex;align-items:center;gap:10px;margin-top:14px}.admin-pager .btn{flex:none}.admin-split{display:grid;grid-template-columns:minmax(260px,.9fr) minmax(320px,1.1fr);gap:16px;min-height:0}.admin-thread{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:16px;min-height:420px;display:flex;flex-direction:column}.admin-messages{overflow:auto;display:grid;gap:10px;flex:1}.admin-message{background:var(--header);border-radius:10px;padding:10px 12px}.admin-message header{display:flex;align-items:center;gap:8px;margin-bottom:6px}.admin-message header .sub{margin-left:auto}.admin-message p{margin:0}.admin-message a{color:var(--accent);font-size:13px}.icon-danger{color:var(--muted);padding:4px;border-radius:6px}.icon-danger:hover{color:var(--danger);background:#2a3942}.avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-weight:700;color:#062822;flex:none;position:relative}.avatar.sm{width:32px;height:32px;font-size:13px}.dot{position:absolute;right:0;bottom:0;width:10px;height:10px;background:var(--accent);border:2px solid var(--panel);border-radius:50%}.role-picks{display:flex;flex-wrap:wrap;gap:8px 12px}.role-picks label,.perm-group label{display:flex;align-items:center;gap:6px;font-size:13px}.perm-group{border-top:1px solid var(--border);padding:10px 0}.perm-group h3{margin:0 0 8px;font-size:13px;color:var(--muted)}.perm-group label .sub{margin-left:auto}.admin-main:has(.dialog-layout){overflow:hidden;display:flex;flex-direction:column}.dialog-layout{display:grid;grid-template-columns:minmax(260px,320px) 1fr;gap:16px;flex:1;min-height:0}.dialog-list{background:var(--panel);border:1px solid var(--border);border-radius:12px;overflow:auto;display:flex;flex-direction:column;min-height:0}.dialog-list .admin-pager{margin-top:auto;padding:10px 12px;border-top:1px solid var(--border)}.dialog-item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:12px 14px;border-bottom:1px solid var(--border);color:inherit}.dialog-item .meta{min-width:0;flex:1}.dialog-item h3{margin:0;font-size:14px}.dialog-item p{margin:4px 0 0;color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dialog-item:hover,.dialog-item.is-active{background:#1f3a36}.dialog-avatars{display:flex}.dialog-avatars .avatar{margin-left:-8px;box-shadow:0 0 0 2px var(--panel)}.dialog-avatars .avatar:first-child{margin-left:0}.dialog-pane{background:var(--panel);border:1px solid var(--border);border-radius:12px;min-height:0;display:flex;flex-direction:column;overflow:hidden}.dialog-head{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--header);border-bottom:1px solid var(--border)}.dialog-head h2{margin:0;font-size:16px}.dialog-head .sub{margin:2px 0 0}.dialog-thread{flex:1;min-height:0;overflow:auto;padding:16px 18px 24px;display:flex;flex-direction:column;gap:10px;background:linear-gradient(#0b141ae0,#0b141ae0),var(--bg)}.dialog-empty{flex:1;display:grid;place-items:center;color:var(--muted);padding:24px}.dialog-bubble{width:fit-content;max-width:min(78%,560px);display:grid;gap:4px;position:relative}.dialog-bubble.is-in{align-self:flex-start}.dialog-bubble.is-out{align-self:flex-end}.dialog-bubble.is-call{align-self:center;justify-self:center;max-width:max-content}.dialog-meta{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}.dialog-bubble.is-out .dialog-meta{justify-content:flex-end}.dialog-body{padding:8px 10px 6px;border-radius:10px;background:var(--header);box-shadow:0 1px 1px #0000002e;width:fit-content;max-width:100%;min-width:0}.dialog-bubble.is-out .dialog-body{background:#005c4b}.dialog-body p{margin:0;white-space:pre-wrap;word-break:break-word}.dialog-body img,.dialog-body video{display:block;width:auto;max-width:min(100%,360px);max-height:360px;object-fit:contain;border-radius:8px;background:#0003}.dialog-media{display:block;padding:0;margin:0 0 4px;border:0;background:transparent;border-radius:8px;overflow:hidden;cursor:zoom-in;position:relative;max-width:100%}.dialog-media.is-video{background:#000}.dialog-media-play{position:absolute;inset:0;display:grid;place-items:center;color:#fff;background:#00000047}.dialog-media-play svg{filter:drop-shadow(0 1px 4px rgba(0,0,0,.45))}.dialog-file{display:inline-flex;align-items:center;max-width:100%;color:var(--accent);font-weight:600;word-break:break-all}.dialog-body audio{width:220px;max-width:100%}.dialog-body textarea{width:100%;min-height:72px;resize:vertical;background:#0b141a;border:1px solid var(--border);border-radius:8px;padding:8px}.dialog-time{display:block;text-align:right;color:#fff9;font-size:11px;margin-top:4px}.dialog-call{background:var(--header);color:var(--muted);border-radius:999px;padding:6px 12px;font-size:13px}.dialog-actions{display:flex;gap:8px;margin-top:8px}.dialog-actions .btn{flex:none;padding:6px 10px;font-size:13px}.dialog-tools{display:flex;gap:4px}.dialog-bubble.is-out .dialog-tools{justify-content:flex-end}.dialog-tools button{color:var(--muted);padding:4px;border-radius:6px}.dialog-tools button:hover{color:var(--text);background:#2a3942}.dialog-tools button.danger:hover{color:var(--danger)}.dialog-entry{display:flex;flex-direction:column;gap:8px;align-self:stretch;width:100%;max-width:none}.dialog-insert-gap{align-self:center;display:inline-flex;align-items:center;gap:4px;color:var(--muted);font-size:12px;padding:4px 10px;border-radius:999px}.dialog-insert-gap:hover{color:var(--accent);background:#1f3a36}.dialog-insert-gap.is-current,.dialog-insert-gap.is-current:hover{color:var(--accent);background:#1f3a36;cursor:default}.dialog-entry.is-target .dialog-bubble{outline:1px dashed var(--accent);outline-offset:3px;border-radius:12px}.dialog-compose{display:grid;grid-template-columns:120px minmax(0,1fr);gap:8px;flex:none;z-index:1;padding:10px 12px;border-top:1px solid var(--border);background:var(--header)}.dialog-compose-editor{grid-column:1 / -1;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;align-items:end}.dialog-compose-tools{display:flex;gap:4px}.dialog-compose-tools button{width:36px;height:36px;border-radius:8px;color:var(--muted);background:var(--input)}.dialog-compose-tools button:hover{color:var(--text)}.dialog-compose-tools button:disabled{opacity:.45}.dialog-upload{grid-column:1 / -1;margin:0;font-size:12px;color:var(--muted)}.dialog-compose select,.dialog-compose textarea{background:var(--input);border:1px solid transparent;border-radius:8px;padding:8px 10px}.dialog-compose select:focus,.dialog-compose textarea:focus{border-color:var(--accent)}.dialog-compose textarea{width:100%;min-height:42px;max-height:120px;resize:vertical}.dialog-compose .btn{flex:none;padding:8px 14px}.ops-head{display:flex;align-items:center;flex-wrap:wrap;gap:10px 14px;margin-bottom:18px}.ops-head h1{margin:0}.ops-head .btn{flex:none;margin-left:auto;padding:8px 12px}.ops-badge{font-size:12px;font-weight:700;border-radius:999px;padding:3px 10px}.ops-badge.is-ok{background:#1f3a36;color:var(--accent)}.ops-badge.is-bad{background:#3a1f24;color:var(--danger)}.ops-badge.is-warn{background:#3a321f;color:#ffb300}.ops-logs{margin:8px 0 28px}.ops-logs-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.ops-logs-head h2{margin-bottom:0}.ops-section-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px 12px;margin:8px 0 14px}.ops-section-head h2{margin:0}.ops-section-head .btn{flex:none;margin-left:auto;padding:7px 10px;display:inline-flex;align-items:center;gap:6px}.ops-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:12px 0 14px}.ops-toolbar .admin-search{margin:0;flex:1;min-width:180px}.ops-toolbar select{background:var(--input);border:1px solid transparent;border-radius:10px;padding:10px 12px}.ops-toolbar select:focus{border-color:var(--accent)}.ops-toolbar .btn{flex:none;padding:8px 12px}.ops-toolbar .btn.is-on{background:#1f3a36;color:var(--accent)}.ops-log-table tbody tr{cursor:pointer}.ops-log-table tbody tr:hover,.ops-log-table tbody tr.is-open{background:#1a242b}.ops-log-table td{vertical-align:top}.ops-log-level{display:inline-block;font-size:12px;font-weight:700;border-radius:999px;padding:2px 8px}.ops-log-level.is-error{background:#3a1f24;color:var(--danger)}.ops-log-level.is-fatal{background:#4a1520;color:#ff8a98}.ops-log-level.is-warn{background:#3a321f;color:#ffb300}.ops-log-level.is-open{background:#3a1f24;color:var(--danger)}.ops-log-level.is-resolved{background:#1f3a36;color:var(--accent)}.ops-log-level.is-muted{background:#2a3942;color:var(--muted)}.crash-event{margin-top:10px}.crash-event .ops-toolbar{margin-top:8px}.ops-log-req{white-space:nowrap}.ops-log-msg{margin:0;word-break:break-word}.ops-log-stack{margin:8px 0 0;padding:10px 12px;background:#0b141a;border:1px solid var(--border);border-radius:8px;font-size:12px;line-height:1.45;white-space:pre-wrap;word-break:break-word;max-height:280px;overflow:auto;color:#d1d7db}.ops-health{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:22px}.ops-probe{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:14px}.ops-probe.is-ok{border-color:#1f6f63}.ops-probe.is-bad{border-color:var(--danger)}.ops-probe p{margin:8px 0 0}.ops-probe-top{display:flex;align-items:center;gap:8px}.ops-probe-top .sub{margin-left:auto}.ops-dot{width:8px;height:8px;border-radius:50%;background:var(--muted);flex:none}.ops-probe.is-ok .ops-dot{background:var(--accent)}.ops-probe.is-bad .ops-dot{background:var(--danger)}.ops-samples{display:flex;gap:4px;flex-wrap:wrap;margin:0 0 22px}.ops-sample{width:10px;height:10px;border-radius:3px;background:var(--muted)}.ops-sample.is-ok{background:var(--accent)}.ops-sample.is-bad{background:var(--danger)}.ops-facts{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px 18px;margin:0 0 22px}.ops-facts dt{color:var(--muted);font-size:12px;margin-bottom:4px}.ops-facts dd{margin:0}.ops-split{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:8px}.ops-feed{list-style:none;margin:0;padding:0;background:var(--panel);border:1px solid var(--border);border-radius:12px}.ops-feed li{padding:12px 14px;border-bottom:1px solid var(--border);display:grid;gap:4px}.ops-feed li:last-child{border-bottom:0}.ops-feed p{margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ops-assets{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;margin:8px 0 18px}.ops-asset{display:grid;grid-template-rows:160px auto auto;background:var(--panel);border:1px solid var(--border);border-radius:12px;overflow:hidden}.ops-asset.is-missing{opacity:.72}.ops-asset-preview{display:grid;place-items:center;width:100%;height:160px;padding:0;background:#0b141a;color:var(--muted);overflow:hidden;position:relative}.ops-asset-preview.is-media:not(:disabled){cursor:zoom-in}.ops-asset-preview img,.ops-asset-preview video{width:100%;height:100%;object-fit:cover;background:#000}.ops-asset-play{position:absolute;inset:0;display:grid;place-items:center;color:#fff;background:#00000047}.ops-asset-body{display:grid;gap:4px;padding:10px 12px 8px;min-width:0}.ops-asset-body strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ops-asset-body .sub{margin:0}.ops-asset-body audio{width:100%;margin-top:6px}.ops-asset-actions{display:flex;gap:8px;padding:0 12px 12px}.ops-asset-actions .btn{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:7px 10px;font-size:13px}.media-lightbox{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:56px 24px 24px;background:#000000e0}.media-lightbox-close{position:fixed;top:16px;right:16px;z-index:81;width:40px;height:40px;border-radius:10px;color:#fff;background:#ffffff1f}.media-lightbox-close:hover{background:#fff3}.media-lightbox-body{max-width:100%;max-height:100%}.media-lightbox img,.media-lightbox video{display:block;max-width:min(92vw,1200px);max-height:86vh;object-fit:contain;border-radius:8px;background:#000}@media(max-width:900px){.admin-shell,.admin-shell.is-collapsed{grid-template-columns:1fr}.admin-nav{border-right:0;border-bottom:1px solid var(--border)}.admin-split,.dialog-layout,.ops-split,.dialog-compose,.dialog-compose-editor{grid-template-columns:1fr}}
