.admin-body { overflow: auto; min-height: 100%; }
.admin-header { position: sticky; top: 0; z-index: 5; display: flex; justify-content: space-between; align-items: center; gap: 24px; padding: 22px clamp(18px, 4vw, 56px); border-bottom: 1px solid var(--line); background: color-mix(in srgb, var(--panel) 88%, transparent); backdrop-filter: blur(18px); animation: fade-rise .45s ease both; }
.admin-header h1 { margin-top: 7px; font-size: clamp(18px, 2vw, 26px); letter-spacing: .02em; }
.admin-header nav { display: flex; gap: 10px; align-items: center; }
.admin-header a { border: 1px solid var(--line); color: var(--mint); padding: 8px 11px; text-decoration: none; font-size: 12px; }
.admin-main { position: relative; z-index: 1; display: block; overflow: visible; max-width: 1300px; min-height: 0; margin: 0 auto; padding: 32px clamp(18px, 4vw, 56px) 70px; }
.summary { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-bottom: 30px; }
.summary article { display: grid; gap: 10px; border: 1px solid var(--line); background: linear-gradient(135deg, color-mix(in srgb, var(--panel) 94%, transparent), color-mix(in srgb, var(--panel-2) 90%, transparent)); padding: 18px; transition: transform .25s ease, border-color .25s ease, box-shadow .25s ease; animation: fade-rise .5s ease both; }
.summary article:nth-child(2) { animation-delay: .06s; }
.summary article:nth-child(3) { animation-delay: .12s; }
.summary article:hover { transform: translateY(-3px); border-color: color-mix(in srgb, var(--mint) 34%, var(--line)); box-shadow: 0 16px 40px rgba(0,0,0,.22); }
.summary span { color: var(--muted); font-size: 10px; letter-spacing: .14em; }
.summary strong { color: var(--mint); font-size: 28px; }
.bot-deck { position: relative; overflow: hidden; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 20px; border: 1px solid color-mix(in srgb, var(--mint) 32%, var(--line)); background: linear-gradient(120deg, #111917, #0d1211 60%, #101817); padding: 22px; }
.bot-deck::after { content: ""; position: absolute; width: 240px; height: 240px; right: -100px; top: -150px; border-radius: 50%; background: color-mix(in srgb, var(--mint) 12%, transparent); filter: blur(30px); pointer-events: none; }
.bot-orbit { position: relative; width: 54px; height: 54px; border: 1px solid color-mix(in srgb, var(--mint) 35%, var(--line)); border-radius: 50%; }
.bot-orbit::before, .bot-orbit::after { content: ""; position: absolute; inset: 8px; border: 1px dashed color-mix(in srgb, var(--mint) 30%, transparent); border-radius: 50%; animation: orbit-spin 12s linear infinite; }
.bot-orbit::after { inset: 17px; animation-direction: reverse; animation-duration: 7s; }
.bot-orbit span { position: absolute; inset: 21px; z-index: 2; border-radius: 50%; background: var(--red); box-shadow: 0 0 18px var(--red); transition: .35s ease; }
.bot-orbit span.online { background: var(--mint); box-shadow: 0 0 22px var(--mint); }
.bot-copy { display: grid; gap: 6px; }
.bot-copy h2 { font-size: 18px; }
.bot-copy p { color: var(--muted); font-size: 11px; }
.bot-actions { z-index: 1; display: flex; gap: 8px; }
.bot-actions button { white-space: nowrap; }
@keyframes orbit-spin { to { transform: rotate(360deg); } }
.admin-section { margin-top: 22px; border: 1px solid var(--line); background: color-mix(in srgb, var(--panel) 94%, transparent); backdrop-filter: blur(12px); animation: fade-rise .5s .12s ease both; }
.section-heading { display: flex; justify-content: space-between; align-items: end; gap: 20px; padding: 20px; border-bottom: 1px solid var(--line); }
.section-heading h2 { margin-top: 6px; font-size: 18px; }
.muted, .empty { color: var(--muted); font-size: 11px; }
.table-wrap { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; font-size: 12px; }
th { color: var(--muted); font-size: 10px; letter-spacing: .09em; text-align: left; font-weight: 400; }
th, td { padding: 13px 18px; border-bottom: 1px solid var(--line); white-space: nowrap; }
td:first-child { display: grid; gap: 4px; }
td small { color: var(--muted); }
td:last-child { text-align: right; }
.presence { color: var(--muted); }
.presence.online { color: var(--mint); }
.invite-form { display: flex; gap: 10px; align-items: end; }
.invite-form label { display: grid; gap: 5px; color: var(--muted); font-size: 10px; }
.invite-form input { width: 110px; border: 1px solid var(--line); background: var(--bg); color: var(--text); padding: 9px; }
.invite-form button { padding: 9px 12px; }
.invites-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 12px; padding: 18px; }
.invite-card { min-width: 0; border: 1px solid var(--line); background: linear-gradient(135deg, var(--panel-2), #101917); padding: 15px; transition: transform .25s ease, border-color .25s ease, box-shadow .25s ease; animation: fade-rise .35s ease both; }
.invite-card:hover { transform: translateY(-3px); border-color: color-mix(in srgb, var(--mint) 30%, var(--line)); box-shadow: 0 14px 34px rgba(0,0,0,.24); }
.invite-card code { display: block; overflow: hidden; text-overflow: ellipsis; color: var(--mint); font-size: 11px; }
.invite-card p { margin: 10px 0 14px; color: var(--muted); font-size: 11px; }
.invite-card div { display: flex; gap: 8px; }
.empty { padding: 20px; }
#admin-notice { position: fixed; right: 24px; bottom: 24px; z-index: 10; max-width: min(420px, calc(100vw - 48px)); }

@media (max-width: 720px) {
  .admin-header { align-items: flex-start; flex-direction: column; }
  .summary { grid-template-columns: 1fr; }
  .bot-deck { grid-template-columns: auto 1fr; }
  .bot-actions { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .bot-actions button { min-width: 0; padding: 9px 6px; font-size: 10px; white-space: normal; }
  .section-heading { align-items: stretch; flex-direction: column; }
  .invite-form { align-items: stretch; flex-direction: column; }
  .invite-form input { width: 100%; }
  th, td { padding: 11px 13px; }
}
.admin-subtitle{margin-top:8px;color:var(--muted);font-size:11px}.summary article{position:relative;overflow:hidden;grid-template-columns:1fr auto;align-items:end;border-radius:16px;padding:20px}.summary article:after{content:"";position:absolute;width:100px;height:100px;right:-45px;bottom:-55px;border-radius:50%;background:var(--mint);filter:blur(35px);opacity:.08}.summary article i{grid-column:2;grid-row:1/4;align-self:start;color:rgba(97,242,202,.18);font-style:normal;font-size:32px;font-weight:800}.summary article span,.summary article strong,.summary article small{grid-column:1}.summary article small{color:var(--muted);font-size:9px}.admin-section,.bot-deck{border-radius:18px;overflow:hidden}.admin-header a{border-radius:10px;transition:.25s var(--ease)}.table-wrap tr{transition:background .2s ease}.table-wrap tbody tr:hover{background:rgba(97,242,202,.025)}.presence{display:inline-flex;align-items:center;padding:5px 8px;border-radius:99px;background:rgba(255,255,255,.025)}.presence.online{background:rgba(97,242,202,.07)}.invite-card{border-radius:14px}.confirm-dialog{width:min(410px,calc(100vw - 28px))}.confirm-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.confirm-actions button{justify-content:center}
.admin-header{flex-direction:row}.admin-header nav{flex-wrap:wrap}.audit-section td{white-space:normal;max-width:340px}.audit-section td:nth-child(3){color:var(--mint);font-family:"Cascadia Mono",Consolas,monospace;font-size:10px}:root[data-theme=light] .admin-header,:root[data-theme=light] .admin-section{background:rgba(255,255,255,.88)}:root[data-theme=light] .bot-deck{background:#e4f4ec}:root[data-theme=light] .invite-card{background:#f7fbf9}@media(max-width:720px){.admin-header{flex-direction:column}.admin-header nav{width:100%}.admin-header nav>*{flex:1;justify-content:center;text-align:center}.audit-section td{min-width:110px}}
.role-select,.invite-form select{border:1px solid var(--line);border-radius:9px;background:var(--bg);color:var(--text);padding:9px;font:inherit}.invite-form select{min-width:140px}
.backup-note{padding:18px 20px 0;color:var(--muted);font-size:11px;line-height:1.6}.backup-list{display:grid;padding:12px 20px 20px}.backup-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid var(--line)}.backup-row div{display:grid;gap:5px;min-width:0}.backup-row strong{font-size:12px}.backup-row small{color:var(--muted);font:10px "Cascadia Mono",Consolas,monospace;overflow-wrap:anywhere}
.console-actions{display:flex;flex-wrap:wrap;gap:8px;padding:18px 20px}.console-section pre{margin:0 20px 20px;min-height:100px;max-height:300px;overflow:auto;padding:17px;border:1px solid var(--line);border-radius:11px;background:rgba(0,0,0,.28);color:#a6d9c7;font:11px/1.6 "Cascadia Mono",Consolas,monospace;white-space:pre-wrap;overflow-wrap:anywhere}:root[data-theme=light] .console-section pre{background:#edf5f0;color:#31594a}
/* Release checks use the original dashboard cards and controls. */
.updates-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; padding:16px; }
.updates-grid article { display:grid; gap:10px; min-width:0; padding:18px; border:1px solid var(--line); background:var(--panel-2); }
.updates-grid strong { color:var(--mint); font-size:20px; overflow-wrap:anywhere; }
.updates-grid code { color:var(--muted); overflow-wrap:anywhere; }
.updates-details { display:grid; gap:12px; padding:0 16px 20px; }
.updates-details button { justify-self:start; }
#update-job:empty { display:none; }
@media (max-width:1000px) { .updates-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:600px) { .updates-grid { grid-template-columns:1fr; } }

/* Compact, expandable administration tree. */
.admin-tree { display:grid; gap:12px; }
.admin-tree-group { min-width:0; border:1px solid var(--line); border-radius:16px; background:var(--panel); overflow:hidden; }
.admin-tree-group > summary { list-style:none; display:grid; grid-template-columns:155px minmax(0,1fr) auto 24px; align-items:center; gap:14px; min-height:76px; padding:15px 20px; cursor:pointer; transition:background .18s ease,color .18s ease; }
.admin-tree-group > summary::-webkit-details-marker { display:none; }
.admin-tree-group > summary::after { content:'⌄'; grid-column:4; color:var(--mint); font-size:19px; text-align:center; transform:rotate(0); transition:transform .22s cubic-bezier(.2,.7,.2,1); }
.admin-tree-group[open]:not(.is-closing) > summary::after { transform:rotate(180deg); }
.admin-tree-group > summary:hover,.admin-tree-group[open] > summary { background:color-mix(in srgb,var(--mint) 7%,var(--panel)); }
.admin-tree-group > summary:focus-visible { outline:2px solid var(--mint); outline-offset:-3px; }
.tree-index { color:var(--mint); font:10px/1.4 "Cascadia Mono",Consolas,monospace; letter-spacing:.11em; }
.admin-tree-group > summary strong { font-size:16px; }
.admin-tree-group > summary small { color:var(--muted); font-size:11px; }
.admin-tree-clip { display:grid; grid-template-rows:0fr; transition:grid-template-rows .26s cubic-bezier(.2,.7,.2,1); }
.admin-tree-group[open] > .admin-tree-clip { grid-template-rows:1fr; }
.admin-tree-group.is-closing > .admin-tree-clip { grid-template-rows:0fr; }
.admin-tree-children { position:relative; min-height:0; overflow:hidden; display:grid; gap:12px; padding:0 16px 18px 34px; border-top:1px solid var(--line); }
.admin-tree-children::before { content:''; position:absolute; left:23px; top:16px; bottom:30px; width:1px; background:color-mix(in srgb,var(--mint) 28%,var(--line)); }
.admin-tree-children > .admin-section { position:relative; margin-top:16px; }
.admin-tree-children > .admin-section::after { content:''; position:absolute; width:11px; height:1px; left:-12px; top:36px; background:color-mix(in srgb,var(--mint) 35%,var(--line)); }
.admin-tree .summary { margin:8px 0; }
.admin-tree .bot-deck { margin:0 0 4px; }
.update-actions { display:flex; flex-wrap:wrap; gap:8px; }
.updates-details .update-actions button { justify-self:auto; }
.update-actions a { display:inline-flex; align-items:center; min-height:36px; padding:7px 11px; border:1px solid var(--line); border-radius:9px; color:var(--text); text-decoration:none; font-size:10px; }
.update-actions a:hover { border-color:var(--mint); color:var(--mint); }
@keyframes tree-open { from { opacity:.6; transform:translateY(-5px); } to { opacity:1; transform:none; } }

.audit-groups { display:grid; gap:8px; padding:18px; }
.audit-group { min-width:0; border:1px solid var(--line); border-radius:12px; background:var(--panel-2); transition:border-color .18s ease,background .18s ease; }
.audit-group:hover,.audit-group.open { border-color:color-mix(in srgb,var(--mint) 38%,var(--line)); }
.audit-group-head { display:flex; justify-content:space-between; align-items:center; gap:16px; padding:14px 16px; }
.audit-group-head > div { min-width:0; }
.audit-group-head strong { display:block; color:var(--mint); font:11px/1.5 "Cascadia Mono",Consolas,monospace; overflow-wrap:anywhere; }
.audit-group-head p { margin:5px 0; color:var(--text); font-size:12px; overflow-wrap:anywhere; }
.audit-group-head span { color:var(--muted); font-size:10px; overflow-wrap:anywhere; }
.audit-toggle { flex:none; white-space:nowrap; }
.audit-expander { display:grid; grid-template-rows:0fr; opacity:0; transform:translateY(-5px); transition:grid-template-rows .24s cubic-bezier(.2,.7,.2,1),opacity .18s ease,transform .24s cubic-bezier(.2,.7,.2,1); }
.audit-group.open .audit-expander { grid-template-rows:1fr; opacity:1; transform:none; }
.audit-expander-inner { min-height:0; overflow:hidden; }
.audit-occurrence { display:flex; flex-wrap:wrap; justify-content:space-between; gap:8px; padding:10px 16px; border-top:1px solid var(--line); color:var(--muted); font-size:11px; }
.audit-occurrence time { color:var(--text); }
.audit-more { margin:0 18px 18px; }
@media (max-width:720px) { .admin-tree-group > summary { grid-template-columns:1fr 24px; gap:5px 8px; } .tree-index,.admin-tree-group > summary strong,.admin-tree-group > summary small { grid-column:1; } .admin-tree-group > summary::after { grid-row:1/4; grid-column:2; } .admin-tree-children { padding:0 8px 12px 18px; } .admin-tree-children::before { left:10px; } .admin-tree-children > .admin-section::after { left:-9px; width:8px; } .audit-group-head { align-items:flex-start; } }
@media (prefers-reduced-motion:reduce) { .admin-tree-clip,.audit-expander,.admin-tree-group > summary,.admin-tree-group > summary::after,.audit-group { transition:none; } }

/* Keep admin-specific states on the shared motion scale above. */
.admin-header { animation:motion-enter 300ms var(--motion-enter-ease) both; }
.summary article { animation:none; transition:transform var(--motion-base) var(--motion-ease),border-color var(--motion-base) ease,background-color var(--motion-base) ease,box-shadow var(--motion-base) ease; }
.admin-main [data-reveal="shown"] { transition:opacity 260ms var(--motion-ease) var(--reveal-delay,0ms),transform 300ms var(--motion-enter-ease) var(--reveal-delay,0ms),border-color var(--motion-base) ease,background-color var(--motion-base) ease,box-shadow var(--motion-base) ease; }
.summary article:hover,.invite-card:hover { transform:translateY(-2px); box-shadow:0 12px 28px rgba(0,0,0,.18); }
.admin-section { animation:none; }
.invite-card { animation:motion-enter 220ms var(--motion-enter-ease) both; }
.bot-deck::after { filter:none; }
.bot-orbit::before,.bot-orbit::after { animation:none; }
.bot-orbit span { transition:background-color var(--motion-base) ease,box-shadow var(--motion-base) ease; }
.admin-header a { transition:color var(--motion-fast) ease,border-color var(--motion-fast) ease,background-color var(--motion-fast) ease; }
.table-wrap tr { transition:background-color var(--motion-fast) ease; }
.admin-tree-group > summary { transition:background-color var(--motion-base) ease,color var(--motion-base) ease; }
.admin-tree-group > summary::after { transition:transform var(--motion-base) var(--motion-ease); }
.admin-tree-clip { transition-duration:var(--motion-base); transition-timing-function:var(--motion-ease); }
.audit-group { transition:border-color var(--motion-base) ease,background-color var(--motion-base) ease; }
.audit-expander { transform:translateY(-4px); transition:grid-template-rows var(--motion-base) var(--motion-ease),opacity var(--motion-exit) ease,transform var(--motion-base) var(--motion-ease); }
