/* eClassVirtual UI Components 1.4 - presentation only */
.ecv-ui{font:400 14px/1.5 var(--ecv-font,Inter,system-ui,sans-serif);color:var(--ecv-text);background:var(--ecv-bg)}
.ecv-ui *{box-sizing:border-box}.ecv-ui button,.ecv-ui input,.ecv-ui select{font:inherit}
.ecv-ui :is(button,a,input,select,textarea,[tabindex]):focus-visible{outline:3px solid var(--ecv-accent);outline-offset:2px}
.ecv-topbar{min-height:64px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 20px;background:var(--ecv-surface);border-bottom:1px solid var(--ecv-border);flex-wrap:wrap}
.ecv-topbar__brand{display:flex;align-items:center;gap:12px;min-width:0}.ecv-topbar__brand img{width:auto;max-width:165px;height:38px;object-fit:contain}.ecv-topbar__actions,.ecv-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ecv-card{background:var(--ecv-surface);border:1px solid var(--ecv-border);border-radius:12px;padding:20px;min-width:0}.ecv-card__title{font-size:17px;font-weight:750;margin:0 0 8px}.ecv-muted{color:var(--ecv-muted)}
.ecv-btn{appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:8px;padding:10px 15px;min-height:40px;font-weight:750;cursor:pointer;text-decoration:none;transition:background .15s,box-shadow .15s}
.ecv-btn:disabled{opacity:.55;cursor:not-allowed}.ecv-btn--primary{background:var(--ecv-accent);color:var(--ecv-on-accent)}.ecv-btn--primary:hover:not(:disabled){filter:brightness(.94)}
.ecv-btn--secondary{background:var(--ecv-surface);border-color:var(--ecv-border);color:var(--ecv-text)}.ecv-btn--secondary:hover:not(:disabled){background:var(--ecv-bg)}
.ecv-btn--danger{background:#B42318;color:#fff}.ecv-field{display:grid;gap:6px}.ecv-field label{font-weight:600}.ecv-input,.ecv-select,.ecv-textarea{width:100%;min-height:40px;border:1px solid var(--ecv-border);border-radius:8px;background:var(--ecv-surface);color:var(--ecv-text);padding:9px 12px}.ecv-textarea{min-height:95px;resize:vertical}
.ecv-tabs{display:flex;gap:6px;flex-wrap:wrap;border-bottom:1px solid var(--ecv-border)}.ecv-tab{background:transparent;border:0;border-bottom:3px solid transparent;color:var(--ecv-muted);padding:10px 13px;cursor:pointer;font-weight:600}.ecv-tab[aria-selected=true]{color:var(--ecv-accent);border-bottom-color:var(--ecv-accent)}.ecv-tabpanel[hidden]{display:none}
.ecv-alert{padding:12px 14px;border-radius:8px;border:1px solid var(--ecv-border);background:var(--ecv-surface)}.ecv-alert[data-tone=success]{border-inline-start:4px solid var(--ecv-success)}.ecv-alert[data-tone=error]{border-inline-start:4px solid var(--ecv-danger)}.ecv-alert[data-tone=info]{border-inline-start:4px solid var(--ecv-accent)}
.ecv-progress{height:10px;overflow:hidden;border-radius:999px;background:var(--ecv-border)}.ecv-progress>span{display:block;height:100%;width:var(--ecv-progress,0%);background:var(--ecv-accent);border-radius:inherit}
.ecv-table-wrap{max-width:100%;overflow-x:auto}.ecv-table{width:100%;border-collapse:collapse}.ecv-table th,.ecv-table td{text-align:left;border-bottom:1px solid var(--ecv-border);padding:10px 12px}.ecv-table th{font-weight:750}
.ecv-layout{display:grid;grid-template-columns:minmax(0,3fr) minmax(260px,2fr);gap:16px}.ecv-layout>*{min-width:0}
.ecv-dialog{max-width:min(480px,calc(100vw - 32px));width:100%;border:1px solid var(--ecv-border);border-radius:16px;padding:24px;background:var(--ecv-surface);color:var(--ecv-text)}.ecv-dialog::backdrop{background:rgba(0,0,0,.55)}
@media(max-width:760px){.ecv-layout{grid-template-columns:minmax(0,1fr)}.ecv-topbar{padding:10px 14px}.ecv-card{padding:14px}}
@media(prefers-reduced-motion:reduce){.ecv-btn{transition:none}}

/* 1.4: explicit foregrounds prevent legacy table/helper colors leaking into themes.
   Load after application legacy CSS. Keep semantic helper text explicit. */
.ecv-ui .ecv-table{background:var(--ecv-surface);color:var(--ecv-text)}
.ecv-ui .ecv-table th{background:var(--ecv-bg);color:var(--ecv-text)}
.ecv-ui .ecv-table td{color:var(--ecv-text)}
.ecv-ui :is(.ecv-muted,.ecv-help,.ecv-loading),.ecv-ui .ecv-table .ecv-muted{color:var(--ecv-muted)}
