/* settings.css -- rules used only by frontend/settings.html.
   Moved out of that page's <head> on 2026-09-04: the page sat 14 bytes under
   its growth ceiling (tools/check_file_growth.py) and the rule is extract,
   not raise. Loaded AFTER style.css so these override the shared rules, and
   after the head script, so the theme attribute is already set when the
   [data-theme="dark"] selectors below are evaluated. */

.ai-tier-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0.75rem;margin-bottom:1.25rem;}
.ai-tier-card{border:2px solid var(--border);border-radius:8px;padding:0.875rem 1rem;cursor:pointer;transition:border-color 0.15s,background 0.15s;background:var(--card);}
.ai-tier-card:hover{border-color:var(--accent);}
.ai-tier-card.active{border-color:var(--accent);background:var(--badge-bg);}
[data-theme="dark"] .ai-tier-card.active{background:rgba(99,102,241,0.12);}
.ai-tier-num{font-family:'IBM Plex Mono',monospace;font-size:0.65rem;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:var(--text-muted);margin-bottom:0.2rem;}
.ai-tier-title{font-size:0.875rem;font-weight:600;color:var(--text);margin-bottom:0.2rem;}
.ai-tier-desc{font-size:0.75rem;color:var(--text-muted);line-height:1.4;}
.ai-hint-chip{display:inline-block;font-size:0.7rem;font-family:'IBM Plex Mono',monospace;padding:2px 8px;border-radius:4px;margin-bottom:0.875rem;line-height:1.6;}
.ai-hint-cloud{background:#eff6ff;color:#1d4ed8;}.ai-hint-cpu{background:#f0fdf4;color:#15803d;}.ai-hint-gpu{background:#fdf4ff;color:#7e22ce;}
[data-theme="dark"] .ai-hint-cloud{background:rgba(29,78,216,0.15);color:#93c5fd;}
[data-theme="dark"] .ai-hint-cpu{background:rgba(21,128,61,0.15);color:#86efac;}
[data-theme="dark"] .ai-hint-gpu{background:rgba(126,34,206,0.15);color:#d8b4fe;}
.ai-divider{border:none;border-top:1px solid var(--border);margin:1rem 0;}
.model-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:0.875rem;margin-bottom:0.5rem;}
.model-card{border:1px solid var(--border);border-radius:8px;padding:1rem;background:var(--card);display:flex;flex-direction:column;gap:0.4rem;}
.model-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:0.5rem;margin-bottom:0.2rem;}
.model-tag{font-family:'IBM Plex Mono',monospace;font-size:0.8rem;font-weight:600;color:var(--text);}
.model-name{font-size:0.72rem;color:var(--text-soft);margin-top:0.1rem;}
.model-desc{font-size:0.775rem;color:var(--text-muted);line-height:1.5;flex:1;}
.model-specs{font-size:0.68rem;font-family:'IBM Plex Mono',monospace;color:var(--text-muted);}
.model-card-footer{display:flex;align-items:center;gap:0.5rem;margin-top:0.375rem;flex-wrap:wrap;}
.model-status-installed{font-family:'IBM Plex Mono',monospace;font-size:0.65rem;padding:2px 7px;border-radius:4px;background:#f0fdf4;color:#15803d;}
.model-status-missing{font-family:'IBM Plex Mono',monospace;font-size:0.65rem;padding:2px 7px;border-radius:4px;background:#f8fafc;color:var(--text-muted);border:1px solid var(--border);}
[data-theme="dark"] .model-status-installed{background:rgba(21,128,61,0.15);color:#86efac;}
[data-theme="dark"] .model-status-missing{background:rgba(255,255,255,0.04);}
.model-pull-progress{margin-top:0.4rem;}
.btn-danger{background:transparent;border:1px solid var(--red,#ef4444);color:var(--red,#ef4444);}.btn-danger:hover{background:var(--red,#ef4444);color:#fff;}
.ai-config-section.ai-features-disabled{opacity:0.5;pointer-events:none;filter:grayscale(0.4);transition:opacity 0.2s ease;}
.svc-acct-card{border-radius:6px;padding:0.875rem 1rem;display:flex;align-items:flex-start;gap:0.875rem;font-size:0.825rem;line-height:1.5;}
.svc-acct-card.domain{background:#f0fdf4;border:1px solid #bbf7d0;color:#15803d;}
.svc-acct-card.local{background:#fffbeb;border:1px solid #fde68a;color:#92400e;}
.svc-acct-card.system{background:#fef2f2;border:1px solid #fecaca;color:#991b1b;}
.svc-acct-card.unknown{background:#f8fafc;border:1px solid var(--border);color:var(--text-muted);}
.svc-acct-icon{font-size:1.1rem;flex-shrink:0;margin-top:1px;}
.svc-acct-account{font-family:'IBM Plex Mono',monospace;font-size:0.775rem;margin-top:0.2rem;opacity:0.75;}
.log-controls{display:flex;align-items:center;gap:0.625rem;flex-wrap:wrap;margin-bottom:0.875rem;}
.log-controls select,.log-controls input[type=text]{margin-bottom:0;font-size:0.8rem;padding:0.35rem 0.6rem;height:auto;}
.log-controls input[type=text]{flex:1;min-width:160px;}
.log-viewer{font-family:'IBM Plex Mono',monospace;font-size:0.72rem;line-height:1.6;background:#0f172a;color:#e2e8f0;border-radius:6px;padding:0.75rem 1rem;height:420px;overflow-y:auto;border:1px solid var(--border);white-space:pre-wrap;word-break:break-all;}
.log-viewer .ll-debug{color:#94a3b8;}.log-viewer .ll-info{color:#e2e8f0;}.log-viewer .ll-warning{color:#fbbf24;}.log-viewer .ll-error{color:#f87171;}
.log-viewer .log-highlight{background:#fbbf24;color:#000;border-radius:2px;padding:0 1px;}
.log-status-bar{display:flex;justify-content:space-between;align-items:center;margin-top:0.4rem;margin-bottom:0.75rem;font-size:0.72rem;color:var(--text-muted);font-family:'IBM Plex Mono',monospace;}
.log-pause-indicator{display:inline-block;padding:1px 7px;border-radius:4px;background:#fef3c7;color:#92400e;font-size:0.65rem;font-weight:600;margin-left:0.5rem;}
[data-theme="dark"] .log-pause-indicator{background:rgba(251,191,36,0.15);color:#fbbf24;}
.school-field-grid{display:grid;grid-template-columns:1fr 1fr;gap:0.875rem 1.5rem;}
.school-field-grid .field-full{grid-column:1/-1;}
.gias-info-chip{display:inline-block;font-size:0.7rem;padding:2px 8px;border-radius:4px;background:#eff6ff;color:#1d4ed8;font-family:'IBM Plex Mono',monospace;margin-bottom:1rem;}
[data-theme="dark"] .gias-info-chip{background:rgba(29,78,216,0.15);color:#93c5fd;}
.user-table{width:100%;border-collapse:collapse;font-size:0.825rem;margin-bottom:1.25rem;}
.user-table th{text-align:left;padding:0.5rem 0.75rem;border-bottom:1px solid var(--border);font-size:0.7rem;font-family:'IBM Plex Mono',monospace;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.06em;font-weight:600;}
.user-table td{padding:0.5rem 0.75rem;border-bottom:1px solid var(--border);color:var(--text-soft);vertical-align:middle;}
.user-table tr:last-child td{border-bottom:none;}
.role-pill{display:inline-block;padding:1px 8px;border-radius:4px;font-size:0.68rem;font-family:'IBM Plex Mono',monospace;font-weight:600;}
.role-admin{background:#eff6ff;color:#1d4ed8;}
.role-technician{background:#f0fdf4;color:#15803d;}
.role-slt{background:#fdf4ff;color:#7e22ce;}
[data-theme="dark"] .role-admin{background:rgba(29,78,216,0.15);color:#93c5fd;}
[data-theme="dark"] .role-technician{background:rgba(21,128,61,0.15);color:#86efac;}
[data-theme="dark"] .role-slt{background:rgba(126,34,206,0.15);color:#d8b4fe;}
.user-action-btns{display:flex;gap:0.375rem;flex-wrap:wrap;}
.add-user-form{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:1.25rem;margin-top:1rem;}
.add-user-form h4{font-size:0.825rem;font-weight:600;color:var(--text);margin-bottom:1rem;}
.add-user-grid{display:grid;grid-template-columns:1fr 1fr;gap:0.875rem 1.5rem;}
.add-user-grid .field-full{grid-column:1/-1;}
.role-desc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0.75rem;margin-bottom:1.25rem;}
.role-desc-card{border:1px solid var(--border);border-radius:6px;padding:0.75rem 0.875rem;font-size:0.8rem;}
.role-desc-card strong{display:block;margin-bottom:0.25rem;font-size:0.825rem;}
.role-desc-card ul{margin:0.4rem 0 0 1rem;font-size:0.75rem;color:var(--text-muted);line-height:1.7;}
.migrate-banner{background:#fffbeb;border:1px solid #fde68a;border-radius:6px;padding:0.875rem 1rem;font-size:0.825rem;color:#92400e;line-height:1.6;margin-bottom:1.25rem;}
[data-theme="dark"] .migrate-banner{background:rgba(251,191,36,0.08);border-color:rgba(251,191,36,0.3);color:#fbbf24;}
.own-password-section{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:1.25rem;margin-top:1rem;}
.own-password-section h4{font-size:0.825rem;font-weight:600;color:var(--text);margin-bottom:1rem;}
#term-dates-table td{padding:0.3rem 0.5rem 0.3rem 0;vertical-align:middle;}
#term-dates-table td:last-child{padding-right:0;white-space:nowrap;}
