/* rc162 — Full Application Premium UIX System */
:root{
  --ngx-bg:#f6f8fc;--ngx-surface:#fff;--ngx-surface-2:#f8fafc;--ngx-surface-3:#eef2ff;
  --ngx-text:#0f172a;--ngx-muted:#64748b;--ngx-border:#e2e8f0;--ngx-border-strong:#cbd5e1;
  --ngx-primary:#4f46e5;--ngx-primary-strong:#3730a3;--ngx-success:#059669;--ngx-warning:#d97706;--ngx-danger:#dc2626;--ngx-info:#0284c7;
  --ngx-r-sm:10px;--ngx-r-md:14px;--ngx-r-lg:18px;--ngx-r-xl:24px;
  --ngx-shadow-sm:0 1px 2px rgba(15,23,42,.04),0 4px 14px rgba(15,23,42,.05);
  --ngx-shadow-md:0 10px 30px rgba(15,23,42,.08);
  --ngx-shadow-lg:0 24px 60px rgba(15,23,42,.12);
  --ngx-ring:0 0 0 3px rgba(79,70,229,.18);
  --ngx-font:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,Helvetica,Arial,sans-serif;
}
body{font-family:var(--ngx-font);color:var(--ngx-text);background:var(--ngx-bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body :where(.content,.public-content,.portal-content,.auth-content){color:var(--ngx-text)}
body :where(h1,h2,h3,h4){letter-spacing:-.018em;color:var(--ngx-text)}
body :where(p,.muted,.subtle,.helper,.hint,small){line-height:1.55}
body :where(small,.text-xs,.meta,.eyebrow,.kicker){font-size:max(.75rem,12px)}
body :where(a,button,input,select,textarea){font:inherit}

/* Shells, menus and navigation */
body :where(.sidebar,.teacher-sidebar,.student-sidebar,.portal-sidebar){box-shadow:10px 0 34px rgba(15,23,42,.07);border-right:1px solid rgba(148,163,184,.2)}
body :where(.sidebar a,.teacher-sidebar a,.student-sidebar a,.portal-sidebar a){border-radius:12px;transition:background .16s ease,color .16s ease,transform .16s ease}
body :where(.sidebar a,.teacher-sidebar a,.student-sidebar a,.portal-sidebar a):hover{transform:translateX(2px)}
body :where(.topbar,.admin-topbar,.teacher-topbar,.student-topbar,.portal-topbar){backdrop-filter:saturate(140%) blur(14px);border-bottom:1px solid rgba(148,163,184,.18)}
body :where(.breadcrumb,.breadcrumbs){font-size:.88rem;color:var(--ngx-muted)}
body :where(nav[data-page-tabs],.tabs,[role="tablist"],.ng-premium-tabs){
  display:flex;gap:8px;align-items:center;overflow-x:auto;max-width:100%;padding:6px;border:1px solid var(--ngx-border);
  border-radius:14px;background:rgba(255,255,255,.84);box-shadow:var(--ngx-shadow-sm);scrollbar-width:thin
}
body :where(nav[data-page-tabs],.tabs,[role="tablist"],.ng-premium-tabs) :where(a,button,[role="tab"]){
  flex:0 0 auto;min-height:38px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:8px 12px;border:0;border-radius:10px;
  background:transparent;color:#475569;text-decoration:none;font-weight:750;white-space:nowrap
}
body :where(nav[data-page-tabs],.tabs,[role="tablist"],.ng-premium-tabs) :where(a,button,[role="tab"]):hover{background:#eef2ff;color:var(--ngx-primary-strong)}
body :where(nav[data-page-tabs],.tabs,[role="tablist"],.ng-premium-tabs) :where(.active,[aria-selected="true"]){background:linear-gradient(135deg,#eef2ff,#e0e7ff);color:var(--ngx-primary-strong);box-shadow:inset 0 0 0 1px #c7d2fe}

/* Cards, panels, widgets, KPI surfaces */
body :where(.card,.panel,.widget,.tile,.stat-card,.metric-card,.kpi-card,.dashboard-card,.ng-premium-surface,[class*="-panel"],[class*="-card"]){
  border-color:var(--ngx-border);border-radius:var(--ngx-r-lg)
}
body :where(.ng-premium-surface,.card,.widget,.tile,.stat-card,.metric-card,.kpi-card,.dashboard-card){
  background:var(--ngx-surface);box-shadow:var(--ngx-shadow-sm)
}
body :where(.card,.widget,.tile,.stat-card,.metric-card,.kpi-card,.dashboard-card):hover{box-shadow:var(--ngx-shadow-md)}
body :where(.stat-card,.metric-card,.kpi-card,[class*="-metrics"] article,[class*="-stats"] article){position:relative;overflow:hidden}
body :where(.stat-card,.metric-card,.kpi-card,[class*="-metrics"] article,[class*="-stats"] article)::after{
  content:"";position:absolute;inset:auto -26px -34px auto;width:84px;height:84px;border-radius:50%;background:radial-gradient(circle,rgba(99,102,241,.09),transparent 68%);pointer-events:none
}
body :where(.card-header,.panel-header,.section-header,[class*="-heading"]){gap:14px}
body :where(.card-header h2,.panel-header h2,.section-header h2,[class*="-heading"] h2){font-weight:800}

/* Buttons/actions */
body :where(button,.btn,[class*="btn-"],a.button,a.action,.action-btn,.primary-action,.secondary-action){
  border-radius:11px;transition:transform .14s ease,box-shadow .14s ease,background .14s ease,border-color .14s ease
}
body :where(button,.btn,[class*="btn-"],a.button,a.action,.action-btn,.primary-action,.secondary-action):not(:disabled):hover{transform:translateY(-1px)}
body :where(.btn-primary,.primary,.primary-action,[data-variant="primary"]){box-shadow:0 8px 18px rgba(79,70,229,.18)}
body :where(button:disabled,.btn:disabled,[aria-disabled="true"]){opacity:.55;cursor:not-allowed;transform:none!important}

/* Forms */
body :where(form,.ng-premium-form) :where(label){font-weight:700;color:#334155}
body :where(input:not([type=checkbox]):not([type=radio]):not([type=range]),select,textarea){
  min-height:42px;border:1px solid var(--ngx-border-strong);border-radius:11px;background:#fff;color:var(--ngx-text);box-shadow:0 1px 2px rgba(15,23,42,.03);
  transition:border-color .15s ease,box-shadow .15s ease,background .15s ease
}
body :where(textarea){min-height:108px}
body :where(input:not([type=checkbox]):not([type=radio]):not([type=range]),select,textarea):hover{border-color:#94a3b8}
body :where(input:not([type=checkbox]):not([type=radio]):not([type=range]),select,textarea):focus{border-color:#818cf8;box-shadow:var(--ngx-ring);outline:none}
body :where(input,select,textarea)[aria-invalid="true"],body :where(.is-invalid,.field-error input,.field-error select,.field-error textarea){border-color:#f87171;box-shadow:0 0 0 3px rgba(239,68,68,.12)}
body :where(.form-grid,.field-grid){gap:16px}
body :where(.help,.help-text,.field-help,.form-hint){color:var(--ngx-muted);font-size:.82rem}

/* Tables */
body :where(.table-wrap,.ng-responsive-table,[class*="-table-wrap"]){border:1px solid var(--ngx-border);border-radius:14px;background:#fff;box-shadow:var(--ngx-shadow-sm)}
body table.ng-premium-table,body :where(.table-wrap,.ng-responsive-table,[class*="-table-wrap"]) table{border-collapse:separate;border-spacing:0;width:100%;background:#fff}
body table.ng-premium-table th,body :where(.table-wrap,.ng-responsive-table,[class*="-table-wrap"]) th{
  position:relative;background:#f8fafc;color:#475569;font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.045em;border-bottom:1px solid var(--ngx-border)
}
body table.ng-premium-table td,body :where(.table-wrap,.ng-responsive-table,[class*="-table-wrap"]) td{border-bottom:1px solid #eef2f7;color:#334155}
body table.ng-premium-table th,body table.ng-premium-table td,body :where(.table-wrap,.ng-responsive-table,[class*="-table-wrap"]) :where(th,td){padding:13px 14px}
body table.ng-premium-table tbody tr,body :where(.table-wrap,.ng-responsive-table,[class*="-table-wrap"]) tbody tr{transition:background .12s ease}
body table.ng-premium-table tbody tr:hover,body :where(.table-wrap,.ng-responsive-table,[class*="-table-wrap"]) tbody tr:hover{background:#f8fafc}
body table.ng-premium-table tbody tr:last-child td,body :where(.table-wrap,.ng-responsive-table,[class*="-table-wrap"]) tbody tr:last-child td{border-bottom:0}
body :where(.pagination,.pager){display:flex;align-items:center;gap:6px;flex-wrap:wrap}
body :where(.pagination,.pager) :where(a,button,span){min-width:36px;min-height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:9px;border:1px solid var(--ngx-border);background:#fff}

/* Charts / graphs */
body :where(.ng-chart-surface,.chart-card,.chart-panel,[class*="chart-wrap"],[class*="chart-container"]){
  border:1px solid var(--ngx-border);border-radius:var(--ngx-r-lg);background:linear-gradient(180deg,#fff,#fbfdff);box-shadow:var(--ngx-shadow-sm);padding:16px
}
body :where(.ng-chart-surface) canvas{display:block;width:100%!important;max-width:100%;min-height:220px}
body :where(.chart-legend,.legend){display:flex;gap:12px;flex-wrap:wrap;color:var(--ngx-muted);font-size:.82rem}

/* Badges, alerts, notifications */
body :where(.badge,.pill,.chip,.status,[class*="-badge"]){border-radius:999px;font-weight:750;letter-spacing:.01em}
body :where(.alert,.notice,.flash,.notification,.callout){border-radius:14px;border:1px solid var(--ngx-border);box-shadow:var(--ngx-shadow-sm)}
body :where(.alert-success,.success){--ngx-state:#059669}
body :where(.alert-warning,.warning){--ngx-state:#d97706}
body :where(.alert-danger,.danger,.error){--ngx-state:#dc2626}

/* Empty/loading/error states */
body :where(.empty,.empty-state,[class*="-empty"]){border:1px dashed var(--ngx-border-strong);border-radius:16px;background:linear-gradient(180deg,#fff,#f8fafc);padding:24px;text-align:center;color:var(--ngx-muted)}
body :where(.skeleton,.loading-placeholder){border-radius:10px;background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9 37%,#e2e8f0 63%);background-size:400% 100%;animation:ngx-shimmer 1.4s ease infinite}
@keyframes ngx-shimmer{0%{background-position:100% 0}100%{background-position:0 0}}

/* Dialogs / overlays */
body :where(dialog,.modal,.drawer,.sheet){border:1px solid var(--ngx-border);border-radius:20px;background:#fff;box-shadow:var(--ngx-shadow-lg)}
body :where(dialog)::backdrop{background:rgba(15,23,42,.48);backdrop-filter:blur(3px)}

/* Search/filter toolbars */
body :where(.filters,.filter-bar,.toolbar,.table-tools,.search-bar){display:flex;align-items:center;gap:10px;flex-wrap:wrap}
body :where(.filters,.filter-bar,.toolbar,.table-tools){padding:12px;border:1px solid var(--ngx-border);border-radius:14px;background:#fff}

/* Printable finance/report surfaces retain clarity */
@media print{
  body{background:#fff!important;color:#000!important}
  body :where(.sidebar,.topbar,.admin-topbar,.teacher-topbar,.student-topbar,.ng-skip-link,nav[data-page-tabs]){display:none!important}
  body :where(.card,.panel,[class*="-panel"],[class*="-card"],.table-wrap){box-shadow:none!important;border-color:#bbb!important}
}

/* Responsive hierarchy */
@media(max-width:1100px){
  body :where(.content,.public-content){max-width:100%}
  body :where(.grid-6,[class*="grid-6"],[class*="-metrics"],[class*="-stats"]){grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:760px){
  body :where(.content,.public-content,.portal-content){padding-left:14px!important;padding-right:14px!important}
  body :where(.card,.panel,[class*="-panel"],[class*="-card"]){border-radius:14px}
  body :where(nav[data-page-tabs],.tabs,[role="tablist"],.ng-premium-tabs){border-radius:12px;padding:5px}
  body :where(.filters,.filter-bar,.toolbar,.table-tools,.search-bar)>*{flex:1 1 180px}
  body :where(.grid-6,[class*="grid-6"],[class*="-metrics"],[class*="-stats"]){grid-template-columns:repeat(2,minmax(0,1fr))}
  body :where(.ng-chart-surface) canvas{min-height:180px}
}
@media(max-width:460px){
  body :where(.grid-6,[class*="grid-6"],[class*="-metrics"],[class*="-stats"]){grid-template-columns:1fr}
  body :where(.filters,.filter-bar,.toolbar,.table-tools,.search-bar)>*{flex-basis:100%}
}

/* Theme compatibility */
body.theme-dark,html[data-theme="dark"] body{
  --ngx-bg:#0b1220;--ngx-surface:#111827;--ngx-surface-2:#172033;--ngx-text:#e5e7eb;--ngx-muted:#94a3b8;--ngx-border:#263247;--ngx-border-strong:#334155;
}
body.theme-dark :where(.card,.panel,.widget,.tile,.stat-card,.metric-card,.kpi-card,.dashboard-card,[class*="-panel"],[class*="-card"]),
html[data-theme="dark"] body :where(.card,.panel,.widget,.tile,.stat-card,.metric-card,.kpi-card,.dashboard-card,[class*="-panel"],[class*="-card"]){background:var(--ngx-surface);color:var(--ngx-text)}
body.theme-dark :where(input,select,textarea,.table-wrap,.ng-responsive-table,[class*="-table-wrap"]),
html[data-theme="dark"] body :where(input,select,textarea,.table-wrap,.ng-responsive-table,[class*="-table-wrap"]){background:#111827;color:#e5e7eb;border-color:#334155}
@media(prefers-reduced-motion:reduce){body :where(.skeleton,.loading-placeholder){animation:none!important}}
