/* AI-modell (R214, static/admin/ai_models.js): en rad per AI-funktion i Krediters tabell (.crtable,
   app.css), med leverantör, modell, vem och när och Spara. Bara palettens tokens, så ljust och
   mörkt läge följer av sig själva. Tabellen rullar i sidled på en smal skärm. */
.aimwrap{max-width:960px}
.aimtable{display:table;width:100%}
.aimtable .aimname{text-align:start;font-weight:600;color:var(--text);font-size:13px;white-space:nowrap;
  padding:6px 8px;border-bottom:1px solid var(--line);vertical-align:top}
.aimtable select{min-width:160px}
.aimtable select:focus-visible,.aimtable .btn:focus-visible{outline:2px solid var(--color-accent-text);outline-offset:1px}
.aimtable select[disabled]{color:var(--dim);cursor:not-allowed}
.aimtable select[aria-invalid="true"]{border-color:var(--bad);outline:1px solid var(--bad)}
.aimtable .aimchanged{color:var(--dim);font-size:12px}
.aimtable .aimgo{white-space:nowrap}
.aimtable .aimgo .btn{margin:0;padding:6px 14px}
.aimfielderr{color:var(--bad);font-size:12px;margin:4px 0 0}
.aimok{color:var(--text);font-size:12px;margin:6px 0 0;white-space:normal;max-width:260px;
  border-inline-start:3px solid var(--color-accent-text);padding-inline-start:8px}
.aimsection{overflow-x:auto}

/* AI-tjänst (R57, ai_service/CONTRACT.md §10): adressen, nyckeln, Spara och Testa anslutning överst i
   fliken, i samma panel och med samma fält som flikens övriga formulär. Logiska egenskaper och bara
   palettens tokens (ljust och mörkt läge följer av sig själva); etiketter, knappar och besked bryts
   om i stället för att klippas, så en text 40 % längre än den svenska får plats. */
.aisvc{max-width:960px}
.aisvc .aisvctitle{margin-block:0 12px}
.aisvcform{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:12px 18px}
.aisvcfield{display:block;min-inline-size:0}
.aisvclabel{display:block;font-size:12px;font-weight:600;color:var(--dim);margin-block-end:6px;overflow-wrap:anywhere}
.aisvc .aisvcinput{inline-size:100%;box-sizing:border-box;background:var(--panel2);border:1px solid var(--line);
  border-radius:10px;padding-block:10px;padding-inline:12px;color:var(--text);font:inherit;outline:none}
.aisvc .aisvcinput:focus{border-color:var(--color-accent-text)}
.aisvc .aisvcinput:focus-visible,.aisvc .btn:focus-visible{outline:2px solid var(--color-accent-text);outline-offset:1px}
.aisvc .aisvcinput::placeholder{color:var(--dim);opacity:1}
.aisvc .aisvcinput[aria-invalid="true"]{border-color:var(--bad);outline:1px solid var(--bad)}
.aisvchint{color:var(--dim);font-size:12px;margin-block:6px 0;overflow-wrap:anywhere}
.aisvcactions{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin-block-start:14px}
.aisvc .aisvcactions .btn{margin:0;padding-block:6px;padding-inline:14px;white-space:normal;text-align:center}
.aisvcstatus{flex:1 1 220px;min-inline-size:0;margin:0;font-size:12px;overflow-wrap:anywhere;
  border-inline-start:3px solid currentColor;padding-inline-start:8px}
.aisvcstatus.aisvcok{color:var(--credit-ok)}
.aisvcstatus.aisvcbad{color:var(--bad)}

/* Tjänstelistan och tavlan Funktion (R214, R276): väljaren och knapparna på en rad som bryts, nyckelns
   läge som text, en rad i tavlan med tjänstlista och modellfält. Bara palettens tokens. */
.aisvctop{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 18px;margin-block-end:12px}
.aisvctop .aisvcactions{margin-block-start:0}
.aisvc .aisvcselect{min-inline-size:220px;max-inline-size:100%}
.aisvckeystate{margin-block:6px 0;font-size:12px;font-weight:600}
.aisvckeystate.aisvcok{color:var(--credit-ok)}
.aisvckeystate.aisvcbad{color:var(--dim)}
.aisvc .aisvcstatus{margin-block-start:12px}
.aisvc .btn[disabled]{opacity:.5;cursor:not-allowed}
.aimtable .aimmodelinput{min-inline-size:220px;inline-size:100%;box-sizing:border-box;background:var(--panel2);
  border:1px solid var(--line);border-radius:10px;padding-block:6px;padding-inline:10px;color:var(--text);font:inherit}
.aimtable .aimmodelinput:focus-visible{outline:2px solid var(--color-accent-text);outline-offset:1px}
