/* дополнения админ-панели */
.shell{position:relative;z-index:1;display:flex;flex-direction:column;height:100%;max-width:720px;margin:0 auto}
.view{flex:1;overflow-y:auto;overflow-x:hidden;padding:12px 14px 16px;-webkit-overflow-scrolling:touch}
.page{display:flex;flex-direction:column;gap:14px;animation:rise .28s ease-out}
.page[hidden]{display:none}
.gate{min-height:70vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:14px;padding:16px 6px}
.gate h1{margin:10px 0 0;font-size:26px;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.card h3{margin:0 0 10px;font-size:17px}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.stat{padding:14px;border-radius:18px;text-align:left}
.stat b{display:block;font-size:28px;font-weight:800;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.stat span{font-size:13px;color:var(--muted)}
.tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin:0 10px 8px;padding:6px;border-radius:22px;flex:none}
.tabs button{display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 2px;border-radius:16px;font-size:11px;color:var(--muted);transition:background .2s,color .2s}
.tabs button.on{background:linear-gradient(135deg,rgba(91,227,255,.18),rgba(164,107,255,.2));color:var(--text);box-shadow:inset 0 0 0 1px rgba(91,227,255,.25)}
.badge{display:inline-block;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:700;border:1px solid var(--line);margin-right:6px}
.badge.pro{color:#04101f;background:var(--grad);border-color:transparent}
.badge.bad{color:#ffb4c2;background:rgba(255,107,138,.14);border-color:rgba(255,107,138,.45)}
.ucard{border-radius:18px;overflow:hidden}
.uhead{width:100%;text-align:left;padding:13px 14px;display:flex;flex-direction:column;gap:5px}
.uhead b{font-size:15px;font-weight:600;overflow-wrap:anywhere}
.uhead small{color:var(--muted);font-size:12px}
.uact{padding:0 14px 14px;display:none}
.ucard.open .uact{display:block;animation:rise .2s ease-out}
.uact .row{margin-top:8px}
.uact .btn{padding:9px 12px;font-size:13px;border-radius:12px}
.uact .num{width:100px;padding:9px 10px}
.ulist{display:flex;flex-direction:column;gap:10px}
.empty-note{text-align:center;color:var(--dim);padding:26px 8px;font-size:14px}
.pill{max-width:46vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* разделы админ-панели */
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tile{padding:16px 14px;border-radius:20px;text-align:left;display:flex;flex-direction:column;gap:8px;min-height:112px;transition:transform .15s,background .2s}
.tile:active{transform:scale(.97);background:var(--glass2)}
.tile b{font-size:15px}
.tile small{color:var(--muted);font-size:12px;line-height:1.35}
.tile .ic{color:var(--cyan)}
.banner{border-radius:18px;padding:14px;display:flex;flex-direction:column;gap:8px}
.banner.warn{border-color:rgba(255,196,107,.45);background:rgba(255,196,107,.08)}
.banner.bad{border-color:rgba(255,107,138,.45);background:rgba(255,107,138,.08)}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--dim);margin-right:6px}
.dot.ok{background:var(--ok)}.dot.bad{background:var(--danger)}
.kv{display:grid;grid-template-columns:1fr auto;gap:6px 12px;font-size:14px}
.kv span:nth-child(odd){color:var(--muted)}
.kv span:nth-child(even){text-align:right;overflow-wrap:anywhere}
.logrow{padding:9px 0;border-bottom:1px solid var(--line);font-size:13px;overflow-wrap:anywhere}
.logrow small{color:var(--dim);display:block}
.logrow.error{color:#ffb4c2}.logrow.warn{color:#ffd9a0}
.field.area{min-height:130px}
.hint{font-size:12px;color:var(--dim);margin-top:4px}
.seg{display:flex;gap:6px;flex-wrap:wrap}

/* Надёжное состояние загрузки и сообщения об ошибках */
.loading-state{min-height:180px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center;color:#dceaff}
.loading-state small{color:#91a4c2;font-size:12px}
.loader{width:28px;height:28px;border:3px solid rgba(130,180,255,.2);border-top-color:#56d9ee;border-radius:50%;animation:jarvis-spin .8s linear infinite}
@keyframes jarvis-spin{to{transform:rotate(360deg)}}
.field[readonly]{opacity:.82;cursor:default}
