/* ADGENT AI Admin — tema scuro, brand ADGENT, no CDN. */
:root{
  --ink:#0B1020; --ink2:#0F1526; --card:#151B2E; --card2:#1B2238; --line:#26304A;
  --text:#E7EAF3; --muted:#9AA3BD; --faint:#5C6178; --core:#4C3DFF; --pink:#E6007E;
  --accent:#4C3DFF; --accent2:#E6007E; --ok:#20B65A; --warn:#F2B600; --err:#E8504C;
  --vision:#149BEA; --voice:#E6007E; --graphic:#84CC16;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{background:var(--ink);color:var(--text);font-family:ui-sans-serif,system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;font-size:14px;line-height:1.5}
.hidden{display:none!important}
button{font:inherit;cursor:pointer}
input,textarea,select{font:inherit;background:var(--card2);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:.5rem .65rem;outline:none}
input:focus,textarea:focus,select:focus{border-color:var(--accent)}
textarea{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;line-height:1.5}
code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}
/* ---------- login ---------- */
.login{position:fixed;inset:0;display:grid;place-items:center;background:radial-gradient(900px 400px at 50% -10%,#1B1F3F,var(--ink) 60%)}
.login-card{width:min(400px,92vw);background:var(--card);border:1px solid var(--line);border-radius:18px;padding:2rem}
.login-card h1{font-size:1.3rem;margin:.6rem 0 .3rem}
.sub{color:var(--muted);font-size:.9rem;margin:0 0 1.4rem}
.brand-row{display:flex;align-items:center;gap:.55rem}
.brand-dot{width:16px;height:16px;border-radius:5px;background:linear-gradient(90deg,var(--core),var(--pink))}
.brand-name{font-weight:800;letter-spacing:.01em}
.sep{display:flex;align-items:center;gap:.7rem;color:var(--faint);font-size:.75rem;margin:1rem 0}
.sep::before,.sep::after{content:"";flex:1;height:1px;background:var(--line)}
.field{margin:.5rem 0}
.field label{display:block;font-size:.78rem;color:var(--muted);margin-bottom:.3rem}
.inline{display:flex;gap:.5rem}
.inline input{flex:1}
.err{color:var(--err);font-size:.82rem;margin-top:.8rem;min-height:1em}
/* ---------- buttons ---------- */
.btn{border:none;border-radius:9px;padding:.55rem .95rem;font-weight:600;text-decoration:none;display:inline-flex;align-items:center;gap:.4rem}
.btn-primary{background:linear-gradient(90deg,var(--core),var(--accent2));color:#fff}
.btn-primary:hover{filter:brightness(1.1)}
.btn-ghost{background:var(--card2);color:var(--text);border:1px solid var(--line)}
.btn-ghost:hover{border-color:var(--accent)}
.btn-danger{background:#3A1F24;color:#FFB4AE;border:1px solid #5C2A2E}
.btn-block{width:100%;justify-content:center}
.btn-sm{padding:.3rem .6rem;font-size:.8rem;border-radius:7px}
/* ---------- app shell ---------- */
.top{position:fixed;top:0;left:0;right:0;height:54px;background:rgba(11,16,32,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 1.2rem;z-index:10}
.env-tag{font-size:.72rem;color:var(--muted);border:1px solid var(--line);border-radius:99px;padding:.15rem .55rem;margin-left:.6rem}
.top-right{display:flex;align-items:center;gap:.8rem}
.user{color:var(--muted);font-size:.85rem}
.shell{display:flex;padding-top:54px;min-height:100vh}
.side{width:190px;flex:0 0 190px;background:var(--ink2);border-right:1px solid var(--line);padding:1rem .6rem;position:sticky;top:54px;height:calc(100vh - 54px);overflow:auto}
.nav-item{display:block;width:100%;text-align:left;background:none;border:none;color:var(--muted);padding:.6rem .8rem;border-radius:9px;font-weight:600;margin-bottom:.15rem}
.nav-item:hover{background:var(--card);color:var(--text)}
.nav-item.active{background:linear-gradient(90deg,rgba(76,61,255,.18),transparent);color:#fff;box-shadow:inset 3px 0 0 var(--core)}
.main{flex:1;padding:1.6rem;max-width:1200px}
/* ---------- sections ---------- */
h2.sec{margin:0 0 .3rem;font-size:1.25rem;letter-spacing:-.01em}
p.sec-sub{color:var(--muted);margin:0 0 1.3rem;font-size:.9rem}
.row{display:flex;gap:1rem;flex-wrap:wrap;align-items:center;margin-bottom:1rem}
.toolbar{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center;margin-bottom:1rem}
.spacer{flex:1}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:1.1rem;margin-bottom:1rem}
.card h3{margin:0 0 .6rem;font-size:.95rem}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:.9rem;margin-bottom:1.2rem}
.stat{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:.9rem 1rem}
.stat .k{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.stat .v{font-size:1.5rem;font-weight:800;margin-top:.15rem}
.stat .v.ok{color:var(--ok)} .stat .v.warn{color:var(--warn)} .stat .v.err{color:var(--err)}
/* ---------- table ---------- */
table{width:100%;border-collapse:collapse;font-size:.86rem}
th{text-align:left;color:var(--muted);font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:.07em;padding:.5rem .6rem;border-bottom:1px solid var(--line)}
td{padding:.55rem .6rem;border-bottom:1px solid #1E2740;vertical-align:top}
tr:hover td{background:rgba(76,61,255,.04)}
.table-scroll{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:var(--card)}
.table-scroll table{margin:0}
/* ---------- badges/chips ---------- */
.chip{display:inline-block;font-size:.68rem;font-weight:700;border-radius:99px;padding:.14rem .5rem;margin:.05rem .15rem;border:1px solid var(--line);color:var(--muted)}
.chip.mod{background:rgba(76,61,255,.15);color:#B6AFFF;border-color:rgba(76,61,255,.35)}
.chip.ok{background:rgba(32,182,90,.16);color:#6FE3A6;border-color:rgba(32,182,90,.35)}
.chip.warn{background:rgba(242,182,0,.16);color:#FFD75E;border-color:rgba(242,182,0,.35)}
.chip.err{background:rgba(232,80,76,.16);color:#FF9B96;border-color:rgba(232,80,76,.35)}
.badge{display:inline-block;font-size:.66rem;font-weight:800;border-radius:5px;padding:.12rem .4rem;text-transform:uppercase;letter-spacing:.05em}
.badge.new{background:rgba(32,182,90,.16);color:#6FE3A6}
.badge.changed{background:rgba(242,182,0,.16);color:#FFD75E}
.badge.removed{background:rgba(232,80,76,.16);color:#FF9B96}
.badge.desc{background:rgba(19,155,234,.16);color:#7EC8F3}
.badge.yes{background:rgba(32,182,90,.16);color:#6FE3A6}
.badge.no{background:rgba(232,80,76,.16);color:#FF9B96}
.badge.cap{background:rgba(132,204,22,.16);color:#B9EC4B}
.pill-state{display:inline-block;font-size:.72rem;font-weight:700;border-radius:99px;padding:.14rem .6rem}
.st-done{background:rgba(32,182,90,.16);color:#6FE3A6}
.st-running{background:rgba(76,61,255,.16);color:#B6AFFF}
.st-queued{background:rgba(242,182,0,.16);color:#FFD75E}
.st-failed{background:rgba(232,80,76,.16);color:#FF9B96}
.st-cancelled{background:rgba(154,163,189,.16);color:#9AA3BD}
/* ---------- catalog cards ---------- */
.model-card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:.9rem 1rem;margin-bottom:.6rem}
.model-card .top{position:static;height:auto;background:none;border:none;backdrop-filter:none;display:flex;gap:.6rem;align-items:center;padding:0}
.model-card .name{font-weight:700;font-size:.92rem;word-break:break-all}
.model-card .vendor{color:var(--muted);font-size:.8rem}
.model-card .desc{color:var(--muted);font-size:.83rem;margin:.35rem 0 0;white-space:pre-wrap}
.model-card .meta{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.45rem;font-size:.75rem;color:var(--muted)}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
/* ---------- suggestions ---------- */
.sugg{background:var(--card);border:1px solid var(--line);border-left:3px solid var(--graphic);border-radius:12px;padding:.9rem 1rem;margin-bottom:.6rem}
.sugg .cap{font-weight:800;font-size:.9rem}
.sugg .from{color:var(--muted);font-size:.78rem}
/* ---------- progress/log ---------- */
.progress{height:8px;background:var(--card2);border-radius:99px;overflow:hidden;margin:.4rem 0}
.progress>i{display:block;height:100%;background:linear-gradient(90deg,var(--core),var(--accent2));transition:width .4s}
.logbox{background:#0A0D18;border:1px solid var(--line);border-radius:10px;padding:.7rem .9rem;font-family:ui-monospace,Menlo,monospace;font-size:.76rem;color:#B9BECB;white-space:pre-wrap;max-height:220px;overflow:auto}
/* ---------- modal ---------- */
.modal{position:fixed;inset:0;background:rgba(5,7,15,.7);display:grid;place-items:center;z-index:50;padding:1.5rem}
.modal-card{width:min(760px,94vw);max-height:88vh;display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:16px}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:.9rem 1.2rem;border-bottom:1px solid var(--line);font-weight:700}
.modal-body{padding:1.2rem;overflow:auto}
/* ---------- misc ---------- */
.empty{color:var(--muted);text-align:center;padding:2rem}
.spin{display:inline-block;width:14px;height:14px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:sp .7s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}
.json-pre{background:#0A0D18;border:1px solid var(--line);border-radius:10px;padding:.8rem;overflow:auto;max-height:300px;font-size:12px;line-height:1.45}
.kv{display:grid;grid-template-columns:170px 1fr;gap:.35rem .8rem;font-size:.86rem}
.kv .k{color:var(--muted)}
details{font-size:.85rem}
summary{cursor:pointer;color:var(--muted)}
ul.tight{margin:.3rem 0 .3rem 1.1rem;padding:0}
/* ---------- guide / testo descrittivo ---------- */
.guide{border:1px solid var(--line);border-radius:12px;background:var(--card);padding:.6rem 1rem 1rem;margin-bottom:1rem}
.guide summary{font-weight:700;color:var(--text);padding:.4rem 0}
.guide-groups{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:.9rem;margin-top:.5rem}
.g-group h4{margin:.2rem 0 .35rem;font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.g-what{color:var(--muted);font-size:.82rem;margin:0 0 .6rem}
.g-row{border-top:1px solid #1E2740;padding:.5rem 0}
.g-path code{color:#7EC8F3;font-size:.74rem;word-break:break-all}
.g-desc{font-size:.83rem;margin-top:.15rem}
.g-desc b{font-weight:700}
.g-effect{color:var(--muted);font-size:.78rem;margin:.2rem 0 0}
/* ---------- filter chips attivi ---------- */
.chip.on{background:linear-gradient(90deg,rgba(76,61,255,.25),rgba(230,0,126,.22));color:#fff;border-color:var(--core)}
/* ---------- tiles (dashboard / costi) ---------- */
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.9rem;margin-bottom:1.2rem}
.tile{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:.9rem 1rem}
.tile-k{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}
.tile-v{display:block;font-size:1.35rem;font-weight:800;margin-top:.2rem}
/* ---------- layout catalog / config ---------- */
.chips{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:1rem}
.cols2{display:grid;grid-template-columns:1fr 1fr;gap:1rem;align-items:start}
.config-layout{display:grid;grid-template-columns:1fr 1fr;gap:1rem;align-items:start}
@media(max-width:980px){.cols2,.config-layout{grid-template-columns:1fr}}
.col{min-width:0}
.chk{display:inline-flex;align-items:center;gap:.4rem;color:var(--muted);font-size:.85rem}
/* ---------- brand wordmark ---------- */
.wordmark{height:26px;width:auto}
/* ---------- board kanban ---------- */
.board-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:.9rem;align-items:start}
.board-col{background:var(--ink2);border:1px solid var(--line);border-radius:14px;padding:.7rem;min-height:120px}
.bc-head{display:flex;justify-content:space-between;align-items:center;padding:0 .1rem .5rem;font-weight:700;font-size:.85rem}
.bc-count{background:var(--card2);border:1px solid var(--line);border-radius:99px;padding:.05rem .5rem;font-size:.72rem;color:var(--muted)}
.bcard{background:var(--card);border:1px solid var(--line);border-left:3px solid var(--core);border-radius:10px;padding:.6rem .7rem;margin-bottom:.55rem}
.bcard .b-top{font-size:.86rem;line-height:1.35}
.b-desc{color:var(--muted);font-size:.8rem;margin:.3rem 0;white-space:pre-wrap}
.b-meta{display:flex;gap:.3rem;flex-wrap:wrap;align-items:center;margin:.3rem 0}
.b-foot{display:flex;justify-content:space-between;align-items:center;margin-top:.35rem;font-size:.75rem}
.b-admin{display:flex;gap:.3rem;flex-wrap:wrap;margin-top:.45rem;padding-top:.45rem;border-top:1px dashed #1E2740}
.b-admin .in{padding:.25rem .4rem;font-size:.74rem;flex:1;min-width:80px}
.b-note{flex:2!important}
.b-vote.on{background:rgba(76,61,255,.25);color:#fff;border-color:var(--core)}
.empty.small{padding:.8rem;font-size:.78rem}

/* ---------- toast + notifiche recenti ---------- */
.toast{position:fixed;bottom:1.2rem;left:50%;transform:translateX(-50%) translateY(120%);background:var(--card2);border:1px solid var(--line);color:var(--text);padding:.6rem 1rem;border-radius:10px;font-size:.85rem;transition:transform .25s;z-index:60;max-width:80vw;cursor:pointer;box-shadow:0 8px 24px rgba(0,0,0,.35)}
.toast.show{transform:translateX(-50%) translateY(0)}
.toast.ok{border-color:#2A6B45}
.toast.err{border-color:#6B2A2E}
.notif-btn{position:relative}
.notif-badge{position:absolute;top:-5px;right:-5px;background:var(--pink);color:#fff;font-size:.62rem;font-weight:800;border-radius:99px;padding:.05rem .38rem;line-height:1.3;box-shadow:0 0 0 2px var(--ink2)}
.notif-panel{position:fixed;top:62px;right:1.2rem;width:min(400px,92vw);background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:0 14px 40px rgba(0,0,0,.5);z-index:60;overflow:hidden}
.notif-head{display:flex;align-items:center;gap:.55rem;padding:.6rem .8rem;border-bottom:1px solid var(--line)}
.notif-head strong{font-size:.9rem}
.notif-sub{color:var(--muted);font-size:.72rem;flex:1}
.notif-list{max-height:320px;overflow:auto}
.notif-item{display:flex;gap:.55rem;align-items:flex-start;padding:.5rem .8rem;border-bottom:1px solid var(--line);font-size:.82rem}
.notif-item:last-child{border-bottom:none}
.notif-item .n-time{color:var(--faint);font-size:.68rem;white-space:nowrap;margin-top:.15rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.notif-item .n-msg{flex:1;line-height:1.45}
.n-badge{display:inline-block;font-size:.62rem;font-weight:800;border-radius:99px;padding:.08rem .42rem;margin-right:.3rem;vertical-align:1px}
.n-badge.ok{color:#BFF0D3;background:rgba(32,182,90,.18);border:1px solid #2A6B45}
.n-badge.err{color:#FFC9C7;background:rgba(232,80,76,.18);border:1px solid #6B2A2E}
.notif-empty{color:var(--faint);padding:1rem;text-align:center;font-size:.82rem}
