.nsd-dashboard-page{display:flex;flex-direction:column;gap:16px;max-width:1600px;margin:0 auto;padding:0 2px 30px;color:var(--text-primary,#172554)}
.nsd-header{display:flex;flex-direction:column;gap:8px}.nsd-header .acore-breadcrumbs{margin:0}.nsd-header>header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.nsd-header h1{margin:0;font-size:clamp(1.65rem,2.4vw,2.25rem);line-height:1.12}.nsd-header p{margin:5px 0 0;color:var(--text-secondary,#58709c)}.nsd-header-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.nsd-header-actions .button-svg{width:16px;height:16px}
.nsd-dashboard-filters{padding:12px 14px;background:var(--surface,#fff)!important;border:1px solid var(--border-color,#e4e5f3)!important;border-radius:11px!important;box-shadow:0 3px 12px rgb(35 44 91 / .05)}.nsd-filter-grid{display:grid;grid-template-columns:minmax(132px,.85fr) minmax(180px,1.15fr) repeat(3,minmax(140px,1fr)) auto;gap:10px;align-items:end}.nsd-dashboard-filters label{display:flex;flex-direction:column;gap:5px;min-width:0}.nsd-dashboard-filters label>span{font-size:.72rem;font-weight:700;color:var(--text-secondary,#58709c)}.nsd-dashboard-filters select{width:100%;height:38px;min-width:0;border:1px solid var(--border-color,#d9d7ed);border-radius:8px;padding:0 30px 0 10px;background:var(--surface,#fff);color:inherit}.nsd-filter-actions{display:flex;gap:8px;align-items:center;white-space:nowrap}.nsd-filter-actions button{height:38px}.nsd-dashboard-advanced{margin-top:10px;border-top:1px solid var(--border-color,#e5e2f3);padding-top:9px;color:var(--text-secondary,#58709c);font-size:.8rem}.nsd-dashboard-advanced p{margin:0}
.nsd-kpi-shell{display:grid;grid-template-columns:minmax(0,1fr) 238px;gap:14px;align-items:stretch}.nsd-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:92px;gap:12px}.nsd-stat{width:100%!important;min-height:92px!important;height:92px!important}.nsd-stat .ns-kpi__progress{height:6px!important;min-height:6px!important}.nsd-quick-actions{grid-row:1 / span 1;display:flex;flex-direction:column;height:196px;min-height:196px;gap:5px;padding:10px;border:1px solid var(--border-color,#e4e5f3);border-radius:11px;background:var(--surface,#fff);box-shadow:0 3px 12px rgba(35,44,91,.05)}.nsd-quick-actions h2{font-size:1rem;margin:0 0 2px}.nsd-quick-actions button{display:flex;align-items:center;gap:8px;width:100%;min-height:31px;padding:5px 8px;border:1px solid var(--border-color,#e4e5f3);border-radius:8px;background:transparent;color:inherit;text-align:left;font-size:.78rem}.nsd-quick-actions button:hover,.nsd-quick-actions button:focus-visible{background:var(--surface-hover,#f6f5ff);border-color:var(--primary,#7048c2)}.nsd-quick-actions button span{display:grid;place-items:center;width:24px;height:24px;border-radius:6px;background:#eef4ff;color:var(--primary,#7048c2)}.nsd-quick-actions button svg{width:15px;height:15px}.nsd-quick-actions button b{margin-left:auto;font-size:1rem;color:var(--text-secondary,#58709c)}.nsd-quick-actions .nsd-quick-all{min-height:26px;margin-top:auto;justify-content:space-between;border:0;color:var(--primary,#7048c2);font-weight:700;padding-inline:2px}
.nsd-chart-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.nsd-chart-card{min-height:218px;border:1px solid var(--border-color,#e4e5f3);border-radius:11px;background:var(--surface,#fff);box-shadow:0 3px 12px rgba(35,44,91,.05);padding:11px 14px 9px;display:flex;flex-direction:column}.nsd-chart-card header,.nsd-alerts header,.nsd-table-card header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.nsd-chart-card h2,.nsd-alerts h2,.nsd-table-card h2{font-size:1rem;line-height:1.2;margin:0}.nsd-chart-link{border:0;background:none;color:var(--primary,#7048c2);font-size:.76rem;font-weight:700;padding:0;white-space:nowrap;text-decoration:none}.nsd-chart-link:hover{text-decoration:underline}.nsd-link{cursor:pointer}.nsd-bars{display:flex;flex-direction:column;gap:9px;margin-top:auto;margin-bottom:auto}.nsd-bar-row{display:grid;grid-template-columns:minmax(74px,.8fr) minmax(60px,1.7fr) auto;align-items:center;gap:8px;font-size:.75rem}.nsd-bar-row>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nsd-bar-row i{height:9px;border-radius:9px;background:var(--track,#e9edf6);overflow:hidden}.nsd-bar-row i b{display:block;height:100%;border-radius:inherit;background:var(--primary,#7048c2)}.nsd-bar-row strong{font-size:.74rem;min-width:35px;text-align:right}.nsd-empty{margin:auto 0;text-align:center;color:var(--text-secondary,#58709c);font-size:.82rem}.nsd-alerts{padding:14px}.nsd-alerts>div{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px}.nsd-alert{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto auto;align-items:center;column-gap:7px;row-gap:3px;text-align:left;border:1px solid var(--border-color,#e4e5f3);border-radius:9px;padding:9px;background:var(--surface,#fff);color:inherit}.nsd-alert:disabled{opacity:.75;cursor:default}.nsd-alert>span{grid-row:1 / span 2;display:grid;place-items:center;width:27px;height:27px;border-radius:7px;color:var(--primary,#7048c2);background:#f1ebff}.nsd-alert>span svg{width:16px;height:16px}.nsd-alert strong{font-size:.77rem;line-height:1.15;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nsd-alert small{font-size:.69rem;color:var(--text-secondary,#58709c);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nsd-alert>b{grid-column:3;grid-row:1 / span 2;color:var(--text-secondary,#58709c)}.nsd-alert.danger>span,.nsd-alert.red>span{background:#ffe8ed;color:#d93353}.nsd-alert.warning>span{background:#fff1dc;color:#de8b00}.nsd-alert.blue>span{background:#e8f1ff;color:#1867d9}
.nsd-tables{display:flex;flex-direction:column;gap:14px}.nsd-table-card{padding:14px}.nsd-table-card .table-wrap{overflow:auto}.nsd-table-card table{width:100%;border-collapse:collapse;font-size:.78rem}.nsd-table-card th{background:var(--table-header,#f0eff9);text-align:left;font-size:.7rem;color:var(--text-secondary,#58709c);font-weight:700;padding:8px 9px;white-space:nowrap}.nsd-table-card td{padding:8px 9px;border-top:1px solid var(--border-color,#eceaf6);vertical-align:middle}.nsd-table-card tr:nth-child(even) td{background:var(--table-row-alt,#fbfaff)}.nsd-nowrap{white-space:nowrap}.nsd-amount{font-weight:700;white-space:nowrap}.nsd-amount.negative{color:#d93353}.nsd-muted{color:var(--text-secondary,#58709c)}
.nsd-print-document{padding:24px;background:#fff;color:#111}.nsd-print-document table{width:100%;border-collapse:collapse}.nsd-print-document td,.nsd-print-document th{border:1px solid #ddd;padding:5px;font-size:10px}
@media (min-width:1200px){.nsd-kpi-grid{grid-template-rows:repeat(2,92px)}.nsd-kpi-shell{align-items:stretch}.nsd-quick-actions{grid-row:1 / span 2}}
@media (max-width:1100px){.nsd-filter-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.nsd-filter-actions{grid-column:1 / -1}.nsd-kpi-shell{grid-template-columns:1fr}.nsd-quick-actions{grid-row:auto;display:grid;height:auto;min-height:0;grid-template-columns:repeat(2,minmax(0,1fr))}.nsd-quick-actions h2,.nsd-quick-actions .nsd-quick-all{grid-column:1 / -1}.nsd-chart-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.nsd-alerts>div{grid-template-columns:repeat(2,minmax(0,1fr))}.nsd-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.nsd-dashboard-page{gap:11px}.nsd-header>header{flex-direction:column}.nsd-header-actions{justify-content:flex-start}.nsd-filter-grid{grid-template-columns:1fr 1fr}.nsd-filter-actions{flex-wrap:wrap}.nsd-filter-actions button{flex:1}.nsd-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.nsd-chart-grid,.nsd-alerts>div,.nsd-quick-actions{grid-template-columns:1fr}.nsd-quick-actions h2,.nsd-quick-actions .nsd-quick-all{grid-column:auto}.nsd-table-card table{min-width:680px}}
/* Reference dashboard geometry and chart primitives */
.nsd-kpi-shell{grid-template-areas:"kpis actions";grid-template-columns:minmax(0,1fr) 238px;direction:ltr}
.nsd-kpi-grid{grid-area:kpis;direction:ltr}
.nsd-quick-actions{grid-area:actions;grid-row:auto!important;direction:ltr}
.nsd-chart-card header{margin-bottom:4px}.nsd-chart-body{flex:1;display:flex;align-items:center;min-height:0}
.nsd-donut-layout{display:flex;align-items:center;justify-content:center;gap:18px;width:100%}
.nsd-donut{width:150px;height:150px;flex:none;border-radius:50%;background:conic-gradient(var(--nsd-donut-stops));display:flex;align-items:center;justify-content:center;flex-direction:column;position:relative;color:var(--text-primary,#172554)}
.nsd-donut::after{content:"";position:absolute;inset:32px;border-radius:50%;background:var(--surface,#fff)}
.nsd-donut strong,.nsd-donut small{position:relative;z-index:1}.nsd-donut strong{font-size:1.15rem}.nsd-donut small{font-size:.68rem;color:var(--text-secondary,#58709c)}.nsd-donut-share{position:absolute;z-index:2;transform:translate(-50%,-50%);color:var(--chart-label-on-color,#fff);font-size:.58rem;font-weight:800;line-height:1;text-shadow:0 1px 2px rgb(0 0 0 / .45);pointer-events:none}
.nsd-legend{display:flex;flex-direction:column;gap:8px;min-width:130px}.nsd-legend>div{display:grid;grid-template-columns:10px 1fr auto auto;align-items:center;gap:6px;font-size:.74rem}.nsd-legend-dot{width:9px;height:9px;border-radius:50%;background:var(--nsd-donut-1,#7048c2)}.nsd-legend-dot-2{background:var(--nsd-donut-2,#2ca9df)}.nsd-legend-dot-3{background:var(--nsd-donut-3,#ed9d22)}.nsd-legend-dot-4{background:var(--nsd-donut-4,#ef4e72)}.nsd-legend b{font-size:.76rem}.nsd-legend small{font-size:.66rem;color:var(--text-secondary,#58709c)}
.nsd-money-chart,.nsd-cashflow-chart{position:relative;display:flex;align-items:stretch;width:100%;height:100%;min-width:0}.nsd-chart-heading{display:flex;min-width:0;flex-direction:column;align-items:flex-start;gap:1px}.nsd-chart-period{display:block;margin:0;color:var(--text-secondary,#58709c);line-height:1.2}#appShell .nsd-cashflow-card .nsd-chart-period.ns-card__meta{font-size:10px!important;font-weight:600!important}.nsd-money-chart svg,.nsd-cashflow-chart svg{display:block;width:100%;height:100%;min-height:160px}.nsd-chart-gridline{stroke:var(--chart-grid,var(--border-color,#e4e5f3));stroke-width:1;vector-effect:non-scaling-stroke}.nsd-chart-axis-line{stroke:var(--chart-axis,var(--text-secondary,#58709c));stroke-width:.8;vector-effect:non-scaling-stroke}.nsd-chart-axis-text{fill:var(--chart-axis,var(--text-secondary,#58709c));font-size:8.5px;font-family:inherit}#appShell .nsd-cashflow-chart .nsd-cashflow-label.ns-card__label{font-size:15px!important;font-weight:700!important}#appShell .nsd-chart-card.nsd-cashflow-card .ns-card__title{font-size:18px!important;font-weight:800!important}.nsd-money-line{fill:none;stroke:var(--chart-1,var(--primary,#7048c2));stroke-width:2.25;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.nsd-money-point{fill:var(--chart-1,var(--primary,#7048c2));stroke:var(--surface,#fff);stroke-width:1.25;vector-effect:non-scaling-stroke}.nsd-receipt-bar{fill:var(--chart-1,var(--primary,#7048c2))}.nsd-expense-bar{fill:var(--chart-4,var(--color-warning,#f59e0b))}.nsd-series-legend{display:flex;align-items:center;justify-content:center;gap:18px;margin-top:1px;color:var(--text-secondary,#58709c);font-size:.7rem}.nsd-series-legend span{display:inline-flex;align-items:center;gap:5px}.nsd-series-legend i{width:9px;height:9px;border-radius:2px}.nsd-series-legend .receipt{background:var(--chart-1,var(--primary,#7048c2))}.nsd-series-legend .expense{background:var(--chart-4,var(--color-warning,#f59e0b))}@media (min-width:1200px){.nsd-kpi-shell{grid-template-areas:"kpis actions"}.nsd-kpi-grid{grid-template-rows:repeat(2,92px)}.nsd-quick-actions{grid-row:auto!important}}
@media (max-width:1100px){.nsd-kpi-shell{grid-template-areas:"kpis" "actions";grid-template-columns:1fr}.nsd-kpi-grid{grid-area:kpis}.nsd-quick-actions{grid-area:actions}}

/* Second dashboard row: data-driven charts and compact shared KPI alerts. */
.nsd-empty-chart{box-sizing:border-box;width:100%;min-height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:15px;text-align:center;border:1px dashed var(--border-color,#dfe4f2);border-radius:9px;background:var(--surface-subtle,var(--surface-hover,#f8f9fc));color:var(--text-secondary,#58709c)}
.nsd-empty-chart>span{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--surface,#fff);color:var(--primary,#7048c2);box-shadow:0 2px 6px rgb(35 44 91 / .07)}.nsd-empty-chart svg{width:18px;height:18px}.nsd-empty-chart strong{font-size:.78rem;color:var(--text-primary,#172554)}.nsd-empty-chart small{max-width:240px;font-size:.69rem;line-height:1.35}
.nsd-collection-chart{position:relative;display:flex;align-items:stretch;width:100%;height:100%;min-width:0}.nsd-collection-chart svg{display:block;width:100%;height:100%;min-height:160px;overflow:visible}.nsd-collection-label{fill:var(--text-primary,#172554);font-size:10px;font-weight:600}.nsd-collection-track{fill:var(--track,#e9edf6)}.nsd-collection-bar{fill:var(--chart-1,var(--primary,#7048c2))}.nsd-collection-value{fill:var(--text-primary,#172554);font-size:10px;font-weight:800}
.nsd-alerts{padding:12px 14px}.nsd-alerts header{margin-bottom:9px}.nsd-alerts header h2{display:flex;align-items:center;gap:7px}.nsd-alerts header h2 svg{width:18px;height:18px;color:var(--ns-kpi-red,var(--danger,#df3155))}.nsd-alert-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.nsd-alert-kpi{position:relative;min-height:66px!important;height:66px!important;padding:8px 9px!important;grid-template-columns:31px minmax(0,1fr)!important;gap:8px!important;border-radius:9px!important}.nsd-alert-kpi .ns-kpi__icon{width:31px!important;height:31px!important;min-width:31px!important;min-height:31px!important;border-radius:8px!important}.nsd-alert-kpi .ns-kpi__icon svg{width:17px!important;height:17px!important;min-width:17px!important}.nsd-alert-kpi .ns-kpi__body{gap:0!important}.nsd-alert-kpi .ns-kpi__label{font-size:.65rem!important;line-height:1.1!important;white-space:nowrap!important}.nsd-alert-kpi .ns-kpi__value{font-size:1rem!important;line-height:1.05!important}.nsd-alert-kpi .ns-kpi__description{font-size:.61rem!important;line-height:1.1!important;white-space:nowrap!important}.nsd-alert-kpi::after{content:"›";position:absolute;right:8px;top:50%;transform:translateY(-50%);color:var(--text-secondary,#58709c);font-size:1rem;pointer-events:none}.nsd-alert-kpi[aria-disabled="true"]::after{opacity:.45}
@media (max-width:1100px){.nsd-alert-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.nsd-alert-kpis{grid-template-columns:1fr}}
/* White surface containers for dashboard alert and activity sections. */
.nsd-alerts,.nsd-table-card{background:var(--surface,#fff)!important;border:1px solid var(--border-color,#e4e5f3)!important;border-radius:11px!important;box-shadow:0 3px 12px rgb(35 44 91 / .05)!important}
.nsd-alerts{overflow:hidden}.nsd-table-card{overflow:hidden}
/* Dashboard recent tables: content-led column widths and compact semantic cells. */
.nsd-table-card .table-wrap{overflow-x:auto;overflow-y:visible}.nsd-table-card table{table-layout:fixed;min-width:0}.nsd-table-card th{height:32px;padding:7px 9px;text-align:left}.nsd-table-card td{height:38px;padding:6px 9px;text-align:left}.nsd-table-card th:last-child,.nsd-table-card td:last-child{text-align:center}.nsd-recent-activity-table .nsd-col-date,.nsd-recent-finance-table .nsd-col-date{width:118px}.nsd-recent-activity-table .nsd-col-activity-type{width:130px}.nsd-recent-finance-table .nsd-col-reference{width:138px}.nsd-recent-activity-table .nsd-col-student,.nsd-recent-finance-table .nsd-col-student{width:178px}.nsd-recent-activity-table .nsd-col-class,.nsd-recent-finance-table .nsd-col-class{width:150px}.nsd-recent-activity-table .nsd-col-detail{width:auto}.nsd-recent-finance-table .nsd-col-finance-type{width:122px}.nsd-recent-finance-table .nsd-col-amount{width:122px}.nsd-recent-finance-table .nsd-col-mode{width:112px}.nsd-recent-activity-table .nsd-col-status,.nsd-recent-finance-table .nsd-col-status{width:100px}.nsd-recent-activity-table .nsd-col-actions,.nsd-recent-finance-table .nsd-col-actions{width:52px}.nsd-table-clamp{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;line-height:1.2;max-height:2.4em}.nsd-table-clamp--detail{-webkit-line-clamp:2}.nsd-entity-link{border:0;padding:0;background:transparent;color:var(--primary,#7048c2);font:inherit;font-weight:700;text-align:left;cursor:pointer}.nsd-entity-link:hover,.nsd-entity-link:focus-visible{text-decoration:underline}.nsd-date-time{display:flex;flex-direction:column;line-height:1.1;white-space:nowrap}.nsd-date-time>span{font-size:.73rem;font-weight:600}.nsd-date-time small{font-size:.65rem;color:var(--text-secondary,#58709c);margin-top:2px}.nsd-table-card .ns-semantic-badge{font-size:.66rem;padding:3px 7px}.nsd-row-actions{display:inline-grid;place-items:center;width:28px;height:28px;padding:0;border:1px solid var(--border-color,#dce5f2);border-radius:7px;background:var(--surface,#fff);color:var(--text-primary,#172554);cursor:pointer}.nsd-row-actions:hover,.nsd-row-actions:focus-visible{border-color:var(--primary,#7048c2);color:var(--primary,#7048c2)}.nsd-row-actions:disabled{opacity:.45;cursor:not-allowed}.nsd-row-actions svg{width:16px;height:16px}
@media (max-width:1100px){.nsd-recent-activity-table{min-width:900px!important}.nsd-recent-finance-table{min-width:1080px!important}}.nsd-row-menu{position:relative;display:inline-block}.nsd-row-menu>summary{display:grid;place-items:center;list-style:none;width:28px;height:28px;border:1px solid var(--border-color,#dce5f2);border-radius:7px;background:var(--surface,#fff);color:var(--text-primary,#172554);cursor:pointer}.nsd-row-menu>summary::-webkit-details-marker{display:none}.nsd-row-menu>summary:hover,.nsd-row-menu[open]>summary{border-color:var(--primary,#7048c2);color:var(--primary,#7048c2)}.nsd-row-menu>summary svg{width:16px;height:16px}.nsd-row-menu>div{position:absolute;z-index:20;right:0;top:calc(100% + 4px);display:flex;flex-direction:column;min-width:145px;padding:4px;border:1px solid var(--border-color,#dce5f2);border-radius:8px;background:var(--surface,#fff);box-shadow:0 8px 20px rgb(15 23 42 / .15)}.nsd-row-menu>div button{width:100%;border:0;border-radius:5px;padding:7px 8px;background:transparent;color:inherit;text-align:left;font:inherit;font-size:.72rem;white-space:nowrap}.nsd-row-menu>div button:hover,.nsd-row-menu>div button:focus-visible{background:var(--surface-hover,#f6f5ff);color:var(--primary,#7048c2)}
.nsd-widget-skeleton{display:grid;gap:14px;min-height:420px}
.nsd-skeleton-kpis,.nsd-skeleton-charts{display:grid;gap:12px}
.nsd-skeleton-kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
.nsd-skeleton-charts{grid-template-columns:repeat(3,minmax(0,1fr))}
.nsd-widget-skeleton i{display:block;min-height:108px;border:1px solid var(--color-border);border-radius:var(--radius-card);background:linear-gradient(90deg,var(--color-surface) 20%,var(--color-surface-muted) 45%,var(--color-surface) 70%);background-size:220% 100%;animation:nsdSkeleton 1.2s ease-in-out infinite}
.nsd-skeleton-charts i{min-height:270px}
@keyframes nsdSkeleton{to{background-position:-220% 0}}
@media(max-width:1000px){.nsd-skeleton-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.nsd-skeleton-charts{grid-template-columns:1fr}}

/* Staged dashboard loading: KPI content resolves independently of charts/tables. */
.nsd-widget-skeleton--primary{min-height:196px}.nsd-widget-skeleton--primary .nsd-skeleton-kpis i{min-height:92px}.nsd-widget-skeleton--charts{min-height:452px}.nsd-widget-skeleton--secondary{min-height:180px}.nsd-widget-skeleton--secondary .nsd-skeleton-charts{grid-template-columns:1fr}.nsd-widget-skeleton--secondary .nsd-skeleton-charts i{min-height:168px}
