/* Dance School Manager — product design system. Components consume semantic tokens only. */
.dsm-design-system,.dsm-admin,.dsm-portal,.dsm-registration-shell,.students-pwa,.student-pwa-login,.student-pwa-denied,#school-teachers-app,.stpwa-login,.stpwa-denied{--background:#f6f8fc;--surface:#fff;--surface-secondary:#f0f4fa;--surface-raised:#fff;--text-primary:#172033;--text-secondary:#53627a;--text-tertiary:#718099;--border:#d7e0ec;--border-strong:#b9c7da;--primary:#155e9e;--primary-hover:#104d83;--primary-surface:#e6f1fb;--success:#087451;--success-surface:#e1f5ec;--warning:#8a5400;--warning-surface:#fff1d5;--danger:#aa243f;--danger-surface:#fde9ee;--info:#1d5fa7;--info-surface:#e7f2ff;--text-on-primary:#fff;--focus-ring:#155e9e;--shadow-color:23 32 51;--font-sans:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--text-xs:.75rem;--text-sm:.875rem;--text-md:1rem;--text-lg:1.125rem;--text-xl:1.375rem;--text-2xl:clamp(1.6rem,2.4vw,2rem);--line-tight:1.15;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-7:32px;--radius-xs:6px;--radius-sm:10px;--radius-md:14px;--radius-lg:18px;--radius-xl:24px;--shadow-xs:0 1px 2px rgb(var(--shadow-color) / .05);--shadow-sm:0 2px 10px rgb(var(--shadow-color) / .08);--shadow-md:0 14px 32px rgb(var(--shadow-color) / .12);box-sizing:border-box;color:var(--text-primary);font-family:var(--font-sans)}
/* A palette changes tokens, never individual components. */
.dsm-portal[data-dsm-theme="sky"],.dsm-registration-shell[data-dsm-registration-theme="sky"]{--background:#f6f8fc;--surface:#fff;--surface-secondary:#f0f4fa;--text-primary:#172033;--text-secondary:#53627a;--text-tertiary:#718099;--border:#d7e0ec;--border-strong:#b9c7da;--primary:#155e9e;--primary-hover:#104d83;--primary-surface:#e6f1fb;--success:#087451;--success-surface:#e1f5ec;--warning:#8a5400;--warning-surface:#fff1d5;--danger:#aa243f;--danger-surface:#fde9ee;--info:#1d5fa7;--info-surface:#e7f2ff;--text-on-primary:#fff;--focus-ring:#155e9e;--shadow-color:23 32 51}
.dsm-portal[data-dsm-theme="midnight"],.dsm-registration-shell[data-dsm-registration-theme="midnight"],.students-pwa[data-dsm-theme="midnight"],#school-teachers-app[data-dsm-theme="midnight"],.student-pwa-login,.student-pwa-denied,.stpwa-login,.stpwa-denied,body.student-pwa-page,body.stpwa-page{--background:#0b1020;--surface:#121a2b;--surface-secondary:#19243a;--surface-raised:#1b2740;--text-primary:#f4f7ff;--text-secondary:#b9c4da;--text-tertiary:#94a2bd;--border:#364662;--border-strong:#536782;--primary:#9c91ff;--primary-hover:#b3aaff;--primary-surface:#292451;--success:#62d9ad;--success-surface:#183d32;--warning:#f7c66d;--warning-surface:#42351d;--danger:#ff9bae;--danger-surface:#462433;--info:#8ccfff;--info-surface:#173950;--text-on-primary:#11152a;--focus-ring:#b3aaff;--shadow-color:0 0 0}
.dsm-portal[data-dsm-theme="ocean"],.dsm-registration-shell[data-dsm-registration-theme="ocean"]{--background:#071923;--surface:#0d2533;--surface-secondary:#123545;--text-primary:#ebfbff;--text-secondary:#b2d0da;--text-tertiary:#8eafbb;--border:#2f5b6c;--border-strong:#48778a;--primary:#35c1d8;--primary-hover:#68d9e7;--primary-surface:#123e4d;--success:#63d9ad;--success-surface:#163e37;--warning:#ffd477;--warning-surface:#42381f;--danger:#ffa1b7;--danger-surface:#452735;--info:#8dd8ff;--info-surface:#173c51;--text-on-primary:#06212b;--focus-ring:#68d9e7;--shadow-color:0 0 0}
.dsm-portal[data-dsm-theme="lavender"],.dsm-registration-shell[data-dsm-registration-theme="lavender"]{--background:#f7f4fc;--surface:#fff;--surface-secondary:#f1ecfa;--text-primary:#302647;--text-secondary:#6b6181;--text-tertiary:#877b9d;--border:#ded5ee;--border-strong:#cbbce0;--primary:#6847b8;--primary-hover:#523a97;--primary-surface:#ece5fb;--success:#087451;--success-surface:#e1f5ec;--warning:#8a5400;--warning-surface:#fff1d5;--danger:#aa243f;--danger-surface:#fde9ee;--info:#305ea8;--info-surface:#e8f1ff;--text-on-primary:#fff;--focus-ring:#6847b8;--shadow-color:48 38 71}
.dsm-portal[data-dsm-theme="rose"],.dsm-registration-shell[data-dsm-registration-theme="rose"]{--background:#fff6f8;--surface:#fff;--surface-secondary:#fcedf2;--text-primary:#422635;--text-secondary:#7c6070;--text-tertiary:#967888;--border:#f0d3de;--border-strong:#dfb5c4;--primary:#af285f;--primary-hover:#90204d;--primary-surface:#f9e5ec;--success:#087451;--success-surface:#e1f5ec;--warning:#8a5400;--warning-surface:#fff1d5;--danger:#aa243f;--danger-surface:#fde9ee;--info:#2e62a5;--info-surface:#e7f2ff;--text-on-primary:#fff;--focus-ring:#af285f;--shadow-color:66 38 53}
.dsm-portal[data-dsm-theme="blush"],.dsm-registration-shell[data-dsm-registration-theme="blush"]{--background:#fff9f7;--surface:#fff;--surface-secondary:#fff0ec;--text-primary:#432a2c;--text-secondary:#806a69;--text-tertiary:#9a807d;--border:#efd8d1;--border-strong:#dcbcb4;--primary:#a83e52;--primary-hover:#8d3244;--primary-surface:#fae7ea;--success:#087451;--success-surface:#e1f5ec;--warning:#8a5400;--warning-surface:#fff1d5;--danger:#aa243f;--danger-surface:#fde9ee;--info:#2e62a5;--info-surface:#e7f2ff;--text-on-primary:#fff;--focus-ring:#a83e52;--shadow-color:67 42 44}
.dsm-portal[data-dsm-theme="mint"],.dsm-registration-shell[data-dsm-registration-theme="mint"]{--background:#f1fbf7;--surface:#fff;--surface-secondary:#e7f8f1;--text-primary:#173b36;--text-secondary:#54736d;--text-tertiary:#708d87;--border:#c8e6da;--border-strong:#a9d4c4;--primary:#087f68;--primary-hover:#066653;--primary-surface:#dff5eb;--success:#087451;--success-surface:#dff5eb;--warning:#805100;--warning-surface:#fff1d5;--danger:#aa243f;--danger-surface:#fde9ee;--info:#28649f;--info-surface:#e7f2ff;--text-on-primary:#fff;--focus-ring:#087f68;--shadow-color:23 59 54}
.dsm-portal[data-dsm-theme="sand"],.dsm-registration-shell[data-dsm-registration-theme="sand"]{--background:#fcf8f0;--surface:#fffdf9;--surface-secondary:#f7efdf;--text-primary:#493827;--text-secondary:#786755;--text-tertiary:#937e69;--border:#e7d9c0;--border-strong:#d5c19f;--primary:#8b4e13;--primary-hover:#713e0f;--primary-surface:#f8ead6;--success:#087451;--success-surface:#e1f5ec;--warning:#805100;--warning-surface:#fff1d5;--danger:#aa243f;--danger-surface:#fde9ee;--info:#2e62a5;--info-surface:#e7f2ff;--text-on-primary:#fff;--focus-ring:#8b4e13;--shadow-color:73 56 39}
.dsm-portal[data-dsm-theme="graphite"],.dsm-registration-shell[data-dsm-registration-theme="graphite"]{--background:#121417;--surface:#1c2025;--surface-secondary:#262c34;--text-primary:#f4f6f8;--text-secondary:#c0c8d2;--text-tertiary:#98a3b0;--border:#3b4652;--border-strong:#596573;--primary:#98c0ff;--primary-hover:#bdd5ff;--primary-surface:#243b5c;--success:#69dbae;--success-surface:#193f34;--warning:#f7c66d;--warning-surface:#42351d;--danger:#ff9eaf;--danger-surface:#472532;--info:#8fd8ff;--info-surface:#173b50;--text-on-primary:#10151c;--focus-ring:#bdd5ff;--shadow-color:0 0 0}
.dsm-portal[data-dsm-theme="plum"],.dsm-registration-shell[data-dsm-registration-theme="plum"]{--background:#1a101c;--surface:#25162a;--surface-secondary:#322039;--text-primary:#fbf4ff;--text-secondary:#d0c0da;--text-tertiary:#ab98b7;--border:#594468;--border-strong:#725682;--primary:#dc95ff;--primary-hover:#e8b8ff;--primary-surface:#482857;--success:#69dbae;--success-surface:#193f34;--warning:#f7c66d;--warning-surface:#42351d;--danger:#ff9eaf;--danger-surface:#472532;--info:#8fd8ff;--info-surface:#173b50;--text-on-primary:#211029;--focus-ring:#e8b8ff;--shadow-color:0 0 0}
.dsm-design-system *,.dsm-admin *,.dsm-portal *,.dsm-registration-shell *,.students-pwa *,.student-pwa-login *,.student-pwa-denied *,#school-teachers-app *,.stpwa-login *,.stpwa-denied *{box-sizing:border-box}
.dsm-portal[data-dsm-theme],.dsm-admin,.dsm-registration-shell,.students-pwa,.student-pwa-login,.student-pwa-denied,#school-teachers-app,.stpwa-login,.stpwa-denied,body.student-pwa-page,body.stpwa-page{background-color:var(--background);color:var(--text-primary)}
/* Reusable controls, cards, feedback, tabs, tables and focus treatment. */
.dsm-design-system :is(a,button,input,select,textarea,summary),.dsm-admin :is(a,button,input,select,textarea,summary),.dsm-portal :is(a,button,input,select,textarea,summary),:is(.students-pwa,.student-pwa-login,.student-pwa-denied,#school-teachers-app,.stpwa-login,.stpwa-denied) :is(a,button,input,select,textarea,summary){font-family:var(--font-sans)}
.dsm-design-system :is(a,button,input,select,textarea,summary):focus-visible,.dsm-admin :is(a,button,input,select,textarea,summary):focus-visible,.dsm-portal :is(a,button,input,select,textarea,summary):focus-visible,:is(.students-pwa,.student-pwa-login,.student-pwa-denied,#school-teachers-app,.stpwa-login,.stpwa-denied) :is(a,button,input,select,textarea,summary):focus-visible{outline:3px solid color-mix(in srgb,var(--focus-ring) 46%,transparent);outline-offset:2px;box-shadow:0 0 0 1px var(--surface)}
.dsm-design-system :is(input,select,textarea),.dsm-admin :is(input,select,textarea),.dsm-portal :is(input,select,textarea){min-height:42px;padding:9px 11px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-primary);font-size:var(--text-sm)}
.dsm-button,.dsm-portal-primary,.dsm-portal-secondary,.dsm-portal-class-add,.dsm-portal-search button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:42px;padding:0 var(--space-4);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-primary);font-size:var(--text-sm);font-weight:760;line-height:1;text-decoration:none;cursor:pointer}.dsm-button--primary,.dsm-portal-primary{border-color:var(--primary);background:var(--primary);color:var(--text-on-primary);box-shadow:var(--shadow-xs)}.dsm-button--primary:hover,.dsm-portal-primary:hover{border-color:var(--primary-hover);background:var(--primary-hover);color:var(--text-on-primary)}.dsm-button--quiet,.dsm-portal-secondary{background:var(--surface-secondary)}
.dsm-card,.dsm-panel,.dsm-portal-card{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);color:var(--text-primary);box-shadow:var(--shadow-sm)}.dsm-table,.dsm-portal-student-table{width:100%;border-collapse:collapse;color:var(--text-primary)}.dsm-table :is(th,td),.dsm-portal-student-table :is(th,td){padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border);text-align:left}.dsm-table th,.dsm-portal-student-table th{color:var(--text-secondary);font-size:var(--text-xs);font-weight:800;letter-spacing:.06em;text-transform:uppercase}
.dsm-badge{display:inline-flex;align-items:center;min-height:24px;padding:3px 9px;border-radius:999px;background:var(--info-surface);color:var(--info);font-size:var(--text-xs);font-weight:800}.dsm-badge--success{background:var(--success-surface);color:var(--success)}.dsm-badge--warning{background:var(--warning-surface);color:var(--warning)}.dsm-badge--danger{background:var(--danger-surface);color:var(--danger)}.dsm-alert,.dsm-portal-notice{padding:var(--space-4);border:1px solid var(--info);border-radius:var(--radius-md);background:var(--info-surface);color:var(--text-primary)}.dsm-alert--warning{border-color:var(--warning);background:var(--warning-surface)}.dsm-alert--danger,.dsm-portal-notice.is-error{border-color:var(--danger);background:var(--danger-surface);color:var(--text-primary)}.dsm-state,.dsm-empty-state{display:grid;gap:var(--space-2);padding:var(--space-6);border:1px dashed var(--border-strong);border-radius:var(--radius-md);background:var(--surface-secondary);color:var(--text-secondary)}
/* Unified product shell and compatibility layer for existing portal/PWA markup. */
.dsm-portal{--dsm-ink:var(--text-primary);--dsm-muted:var(--text-secondary);--dsm-line:var(--border);--dsm-canvas:var(--background);--dsm-surface:var(--surface);--dsm-primary:var(--primary);--dsm-primary-dark:var(--primary-hover);--dsm-success:var(--success);max-width:1240px;margin:var(--space-6) auto;padding:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-xl);background:var(--background);box-shadow:var(--shadow-md)}.dsm-portal-header{margin:0 0 var(--space-4);padding:var(--space-6);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:none}.dsm-portal-header h1{margin:0;color:var(--text-primary);font-size:var(--text-2xl)}.dsm-portal-eyebrow{color:var(--primary)!important;font-size:var(--text-xs);font-weight:850;letter-spacing:.12em}.dsm-portal-nav{gap:var(--space-1);margin-bottom:var(--space-5);padding:var(--space-1);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);box-shadow:none}.dsm-portal-nav a{gap:var(--space-2);min-height:44px!important;padding:0 var(--space-3)!important;border:0!important;border-radius:var(--radius-sm);background:transparent!important;color:var(--text-secondary)!important;font-size:var(--text-sm);font-weight:720}.dsm-portal-nav a:hover{background:var(--surface-secondary)!important;color:var(--text-primary)!important}.dsm-portal-nav a.is-active{background:var(--primary)!important;color:var(--text-on-primary)!important;box-shadow:var(--shadow-xs)}.dsm-portal-nav-icon,.dsm-portal-nav a.is-active .dsm-portal-nav-icon{width:22px!important;height:22px!important;flex:0 0 22px!important;border:0!important;border-radius:0!important;background:transparent!important;color:currentColor!important;box-shadow:none!important}.dsm-portal-nav-icon svg{width:20px!important;height:20px!important;stroke:currentColor;stroke-width:2;fill:none}.dsm-portal :is(.dsm-portal-welcome,.dsm-portal-card){border-color:var(--border);background:var(--surface);box-shadow:var(--shadow-sm)}.dsm-portal :is(.dsm-portal-list>div,.dsm-portal-list>a){border-color:var(--border);background:var(--surface-secondary);color:var(--text-primary)}.dsm-portal :is(.dsm-portal-list span,.dsm-portal-list small,.dsm-portal-muted,.dsm-portal-details dd){color:var(--text-secondary)!important}.dsm-portal :is(.dsm-portal-user a,.dsm-portal-card-head a,.dsm-portal-back,.dsm-profile-contact a,.dsm-portal-details a){color:var(--primary);font-weight:750}.dsm-portal .dsm-portal-list b{color:var(--success)}.dsm-portal :is(.dsm-portal-form input,.dsm-portal-form select,.dsm-portal-form textarea,.dsm-portal-search input,.dsm-portal-class-picker-row select){border-color:var(--border);background:var(--surface-secondary);color:var(--text-primary)}
/* Phase-one management dashboard. */
.dsm-app-dashboard{display:grid;gap:var(--space-5)}.dsm-app-page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-5);padding:var(--space-2) 0}.dsm-app-page-header h2{margin:0;color:var(--text-primary);font-size:var(--text-2xl);line-height:var(--line-tight);letter-spacing:-.025em}.dsm-app-page-header p:not(.dsm-portal-eyebrow){margin:var(--space-2) 0 0;color:var(--text-secondary);font-size:var(--text-sm)}.dsm-app-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-3)}.dsm-app-kpi{position:relative;display:grid;gap:var(--space-2);min-height:132px;padding:var(--space-5);overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-xs)}.dsm-app-kpi:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--info)}.dsm-app-kpi--success:before{background:var(--success)}.dsm-app-kpi--warning:before{background:var(--warning)}.dsm-app-kpi--danger:before{background:var(--danger)}.dsm-app-kpi span{color:var(--text-secondary);font-size:var(--text-sm);font-weight:700}.dsm-app-kpi strong{color:var(--text-primary);font-size:clamp(1.45rem,2.3vw,2rem);line-height:1;letter-spacing:-.04em}.dsm-app-kpi small{color:var(--text-tertiary);font-size:var(--text-xs)}.dsm-app-dashboard-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(300px,.9fr);gap:var(--space-5)}.dsm-app-dashboard-grid--lower{grid-template-columns:minmax(0,1.2fr) minmax(280px,.8fr)}.dsm-app-panel{padding:var(--space-6);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-xs)}.dsm-app-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-4)}.dsm-app-panel-head h3{margin:0;color:var(--text-primary);font-size:var(--text-lg)}.dsm-app-panel-head p{margin:var(--space-1) 0 0;color:var(--text-secondary);font-size:var(--text-sm)}.dsm-app-panel-head a{color:var(--primary);font-size:var(--text-sm);font-weight:750;text-decoration:none}.dsm-app-attention{display:grid;gap:var(--space-3)}.dsm-app-attention-item{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-secondary)}.dsm-app-attention-item i{display:grid;place-items:center;width:32px;height:32px;flex:0 0 32px;border-radius:999px;background:var(--warning-surface);color:var(--warning);font-style:normal;font-weight:900}.dsm-app-attention-item--danger i{background:var(--danger-surface);color:var(--danger)}.dsm-app-attention-item strong{display:block;color:var(--text-primary);font-size:var(--text-sm)}.dsm-app-attention-item span{display:block;margin-top:2px;color:var(--text-secondary);font-size:var(--text-xs)}.dsm-app-list{display:grid;gap:var(--space-2)}.dsm-app-list-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--border)}.dsm-app-list-item:last-child{padding-bottom:0;border-bottom:0}.dsm-app-list-item strong{display:block;color:var(--text-primary);font-size:var(--text-sm)}.dsm-app-list-item span{display:block;margin-top:2px;color:var(--text-secondary);font-size:var(--text-xs)}.dsm-app-list-item b{color:var(--text-primary);font-size:var(--text-sm);white-space:nowrap}.dsm-app-list-item--success b{color:var(--success)}.dsm-app-action-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3)}.dsm-app-action{display:grid;grid-template-columns:32px minmax(0,1fr);align-items:center;gap:var(--space-3);min-height:72px;padding:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-secondary);color:var(--text-primary);text-decoration:none}.dsm-app-action:hover{border-color:var(--primary);background:var(--primary-surface)}.dsm-app-action svg{width:21px;height:21px;stroke:var(--primary);stroke-width:2;fill:none}.dsm-app-action strong{display:block;font-size:var(--text-sm)}.dsm-app-action span{display:block;margin-top:2px;color:var(--text-secondary);font-size:var(--text-xs)}
/* Dashboard compatibility: same pattern applied to existing, stable markup. */
.dsm-dashboard-header{display:flex!important;align-items:flex-start!important;justify-content:space-between!important;padding:var(--space-2)!important;margin:0!important;border:0!important;background:transparent!important;box-shadow:none!important}.dsm-dashboard-header h2{margin:0!important;color:var(--text-primary)!important;font-size:var(--text-2xl)!important}.dsm-dashboard-kpis,.dsm-dashboard-quick,.dsm-dashboard-activity{padding:var(--space-6)!important;margin:0!important;border:1px solid var(--border)!important;border-radius:var(--radius-lg)!important;background:var(--surface)!important;box-shadow:var(--shadow-xs)!important}.dsm-dashboard-kpis .dsm-portal-kpis{grid-template-columns:repeat(auto-fit,minmax(155px,1fr))!important;margin:0!important}.dsm-dashboard-kpis .dsm-portal-kpis article{min-height:118px!important;padding:var(--space-4)!important;border-color:var(--border)!important;border-radius:var(--radius-md)!important;background:var(--surface-secondary)!important}.dsm-dashboard-kpis .dsm-portal-kpis article strong{color:var(--text-primary)!important}.dsm-dashboard-kpis .dsm-portal-kpis article :is(span,small){color:var(--text-secondary)!important}.dsm-dashboard-quick-grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))!important;gap:var(--space-3)!important}.dsm-dashboard-quick-grid a{min-height:84px!important;padding:var(--space-4)!important;border-color:var(--border)!important;border-radius:var(--radius-md)!important;background:var(--surface-secondary)!important;color:var(--text-primary)!important}.dsm-dashboard-quick-grid a:hover{border-color:var(--primary)!important;background:var(--primary-surface)!important}.dsm-dashboard-quick-grid a span{color:var(--text-secondary)!important}.dsm-dashboard-activity .dsm-portal-list>div{border-color:var(--border)!important;background:var(--surface-secondary)!important}
/* Existing student/teacher PWA markup inherits the same tokens while its information architecture remains intact. */
:is(.students-pwa,.student-pwa-login,.student-pwa-denied,#school-teachers-app,.stpwa-login,.stpwa-denied) :is(h1,h2,h3,strong){color:var(--text-primary)}.students-pwa :is(p,span,small,dt),.student-pwa-login :is(p,span,small),.student-pwa-denied :is(p,span,small),#school-teachers-app :is(p,span,small),.stpwa-login :is(p,span,small),.stpwa-denied :is(p,span,small){color:var(--text-secondary)}.students-pwa :is(.student-pwa-card,.student-pwa-list>div),.student-pwa-login .student-pwa-card,.student-pwa-denied .student-pwa-card,#school-teachers-app :is(.stpwa-class,.stpwa-student,.stpwa-material-item,.stpwa-template,.stpwa-qr-box){border-color:var(--border);background:var(--surface);color:var(--text-primary);box-shadow:var(--shadow-sm)}.students-pwa .student-pwa-highlight{border-color:var(--primary);background:linear-gradient(135deg,var(--surface-raised),var(--surface))}.students-pwa .student-pwa-kicker,#school-teachers-app .stpwa-kicker,.stpwa-login .stpwa-kicker{color:var(--primary)}.students-pwa :is(.student-pwa-nav,.student-pwa-table th,.student-pwa-table td){border-color:var(--border)}.students-pwa :is(.student-pwa-nav button,.student-pwa-table th,.student-pwa-details dt,.student-pwa-empty){color:var(--text-secondary)!important}.students-pwa .student-pwa-nav button[aria-selected="true"]{border-color:var(--primary);color:var(--text-primary)!important}.students-pwa :is(.student-pwa-logout,#student-pwa-install){border-color:var(--border);background:var(--surface-secondary);color:var(--primary)}.students-pwa :is(.student-pwa-primary,.student-pwa-materials-list a){border-color:var(--primary);background:var(--primary);color:var(--text-on-primary)}.students-pwa :is(input,select,textarea),#school-teachers-app :is(input,select,textarea){border-color:var(--border);background:var(--surface-secondary);color:var(--text-primary)}#school-teachers-app .stpwa-header{border-color:var(--border)}#school-teachers-app .stpwa-class:hover{border-color:var(--primary);background:var(--surface-secondary)}#school-teachers-app :is(.stpwa-header button,.stpwa-qr,.stpwa-install-link,.stpwa-status button,.stpwa-note button){border-color:var(--border);background:var(--surface-secondary);color:var(--primary)}#school-teachers-app :is(.stpwa-status button.active,.stpwa-status button[aria-pressed="true"],.stpwa-note button:hover){border-color:var(--primary);background:var(--primary);color:var(--text-on-primary)}
.dsm-app-attention-item{color:var(--text-primary);text-decoration:none}.dsm-app-attention-item[href]:hover{border-color:var(--primary);background:var(--primary-surface)}.dsm-app-attention-item--clear i{background:var(--success-surface);color:var(--success)}.dsm-app-credit-total{display:flex;align-items:baseline;gap:var(--space-3);min-height:93px;padding:var(--space-4);border-radius:var(--radius-md);background:var(--primary-surface)}.dsm-app-credit-total strong{color:var(--primary);font-size:clamp(2.25rem,4vw,3.5rem);line-height:1;letter-spacing:-.05em}.dsm-app-credit-total span{color:var(--text-secondary);font-size:var(--text-sm);font-weight:700}.dsm-app-action-icon{display:grid;place-items:center;width:32px;height:32px;border-radius:var(--radius-sm);background:var(--surface);color:var(--primary)}.dsm-app-action-icon svg{width:20px;height:20px;stroke:currentColor;stroke-width:2;fill:none}
.dsm-dashboard-widget-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-5)}.dsm-dashboard-widget-grid>[data-dsm-widget-id="summary"],.dsm-dashboard-widget-grid>[data-dsm-widget-id="quota_usage"]{grid-column:1/-1}.dsm-dashboard-optional-widgets{display:none}.dsm-dashboard-toolbar{display:flex;justify-content:flex-end;margin-top:calc(var(--space-3) * -1)}.dsm-dashboard-edit-toggle{font-size:var(--text-sm)}.dsm-dashboard-editor{display:grid;gap:var(--space-4);padding:var(--space-5);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-secondary);box-shadow:var(--shadow-xs)}.dsm-dashboard-editor-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4)}.dsm-dashboard-editor-head strong{color:var(--text-primary);font-size:var(--text-lg)}.dsm-dashboard-editor-head p{margin:var(--space-1) 0 0;color:var(--text-secondary);font-size:var(--text-sm)}.dsm-dashboard-editor-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.dsm-dashboard-widget-palette{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-2)}.dsm-dashboard-palette-item{display:flex;align-items:center;gap:var(--space-2);min-height:42px;padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--text-primary);font-size:var(--text-sm);cursor:pointer}.dsm-dashboard-palette-item input{accent-color:var(--primary)}.dsm-dashboard-palette-icon{display:grid;place-items:center;width:24px;height:24px;border-radius:999px;background:var(--primary-surface);color:var(--primary);font-weight:800}.dsm-dashboard-editor-status{min-height:1.2em;margin:0;color:var(--text-secondary);font-size:var(--text-xs)}.dsm-dashboard-widget-controls{display:none}.is-dashboard-editing .dsm-dashboard-widget{position:relative}.is-dashboard-editing .dsm-dashboard-widget-controls{display:flex;align-items:center;gap:var(--space-2);margin:calc(var(--space-6) * -1) calc(var(--space-6) * -1) var(--space-4);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--border);background:var(--surface-secondary);color:var(--text-secondary);font-size:var(--text-xs);font-weight:750}.dsm-dashboard-widget-controls span{flex:1;min-width:0}.dsm-dashboard-widget-controls button{display:inline-grid;place-items:center;min-width:28px;min-height:28px;padding:0;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-primary);cursor:pointer}.dsm-dashboard-widget-controls .dsm-dashboard-drag-handle{cursor:grab;font-size:1.1em}.is-dashboard-dragging{opacity:.55}.dsm-dashboard-metric{display:block;color:var(--text-primary);font-size:clamp(1.6rem,3vw,2.25rem);line-height:1;letter-spacing:-.04em}.dsm-dashboard-optional-widget small{color:var(--text-secondary);font-size:var(--text-xs)}@media(max-width:720px){.dsm-dashboard-widget-grid{grid-template-columns:1fr}.dsm-dashboard-widget-grid>[data-dsm-widget-id="summary"],.dsm-dashboard-widget-grid>[data-dsm-widget-id="quota_usage"]{grid-column:auto}.dsm-dashboard-editor-head{flex-direction:column}.dsm-dashboard-editor-actions{width:100%}.dsm-dashboard-editor-actions button{flex:1}.dsm-dashboard-widget-palette{grid-template-columns:1fr}.dsm-dashboard-toolbar{justify-content:stretch}.dsm-dashboard-edit-toggle{width:100%}.is-dashboard-editing .dsm-dashboard-widget-controls{margin:calc(var(--space-5) * -1) calc(var(--space-5) * -1) var(--space-4)}}
@media(prefers-reduced-motion:reduce){.dsm-dashboard-widget{transition:none!important}}
.dsm-dashboard-editor[hidden]{display:none!important}
.dsm-dashboard-save-feedback{margin:0;padding:var(--space-3) var(--space-4);border:1px solid var(--success);border-radius:var(--radius-md);background:var(--success-surface);color:var(--text-primary);font-size:var(--text-sm);font-weight:700}.dsm-dashboard-save-feedback[hidden]{display:none!important}
@media(max-width:720px){.dsm-app-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3)}.dsm-app-kpi{min-width:0;min-height:136px;padding:var(--space-4)}.dsm-app-kpi span{line-height:1.35;overflow-wrap:anywhere}.dsm-app-kpi strong{font-size:clamp(1.5rem,8vw,2rem);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.dsm-app-kpi small{line-height:1.4;overflow-wrap:anywhere}}

/* Payment follow-up keeps the dashboard useful during daily reconciliation. */
.dsm-dashboard-payment-watch{display:grid;gap:var(--space-4)}.dsm-dashboard-payment-watch .dsm-app-panel-head{margin-bottom:0}.dsm-dashboard-payment-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-2);padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-secondary)}.dsm-dashboard-payment-summary span{min-width:0}.dsm-dashboard-payment-summary strong{display:block;color:var(--text-primary);font-size:1.1rem;font-variant-numeric:tabular-nums}.dsm-dashboard-payment-summary small{display:block;margin-top:2px;color:var(--text-secondary);font-size:var(--text-xs);line-height:1.25}.dsm-dashboard-payment-group{display:grid;gap:var(--space-2)}.dsm-dashboard-payment-group h4{margin:0;color:var(--text-secondary);font-size:var(--text-xs);font-weight:800;letter-spacing:.04em;text-transform:uppercase}.dsm-dashboard-payment-item{color:inherit;text-decoration:none}.dsm-dashboard-payment-item:hover{margin:0 calc(var(--space-2) * -1);padding-right:var(--space-2);padding-left:var(--space-2);border-radius:var(--radius-sm);background:var(--surface-secondary)}.dsm-dashboard-payment-item small{display:block;margin-top:4px;color:var(--text-tertiary);font-size:var(--text-xs);line-height:1.35}.dsm-dashboard-payment-item.is-paid b{color:var(--success)}.dsm-dashboard-payment-item.is-pending b{color:var(--warning)}.dsm-dashboard-payment-item.is-overdue b{color:var(--danger)}@media(max-width:720px){.dsm-dashboard-payment-summary{gap:var(--space-1);padding:var(--space-2)}.dsm-dashboard-payment-summary strong{font-size:1rem}.dsm-dashboard-payment-summary small{font-size:.68rem}.dsm-dashboard-payment-item{align-items:start}.dsm-dashboard-payment-item b{padding-top:2px}}
