.cs-trigger{display:inline-flex;align-items:center;gap:.45rem;height:38px;padding:0 .85rem 0 .4rem;border-radius:999px;border:1px solid var(--app-gold);background:var(--app-gold-tint);color:var(--app-ink);font:inherit;font-size:.8rem;font-weight:700;white-space:nowrap;cursor:pointer;transition:box-shadow .15s ease,transform .12s ease}.cs-trigger img{width:24px;height:24px;display:block}.cs-trigger:hover,.cs-trigger:focus-visible{box-shadow:0 0 0 3px var(--app-gold-tint);outline:none}.cs-trigger:hover img,.cs-trigger:focus-visible img{animation:cs-wobble .6s ease-in-out}.cs-trigger:active{transform:scale(.96)}@keyframes cs-wobble{25%{transform:rotate(-12deg)}75%{transform:rotate(12deg)}}@media (max-width: 880px){.cs-trigger{padding:0 .4rem}.cs-trigger-label{display:none}}.cs-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:grid;place-items:center;padding:1rem;background:#080e1e99}.cs-modal{position:relative;width:100%;max-width:640px;overflow:hidden;border-radius:16px;color:#e6ebf7;border:1px solid rgba(201,162,74,.6);background:radial-gradient(120% 90% at 100% 0,#1d3d78 0,#0f2347 55%,#0a1a38);box-shadow:0 20px 60px #00000080;animation:cs-pop .25s ease-out}@keyframes cs-pop{0%{transform:translateY(10px) scale(.97);opacity:0}}.cs-x{position:absolute;top:8px;right:12px;z-index:2;border:0;background:none;color:#fff;font-size:26px;line-height:1;cursor:pointer}.cs-body{display:grid;grid-template-columns:1fr auto;gap:26px;align-items:center;padding:26px 28px}.cs-eyebrow{font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:#c9a24a}.cs-title{margin:4px 0 8px;font:400 2.1rem/1.15 Segoe Script,Bradley Hand,Brush Script MT,cursive;color:#fff3cf}.cs-rule{width:56px;height:2px;margin:0 0 12px;border-radius:2px;background:#c9a24a}.cs-msg{margin:0 0 9px;font:italic 1rem/1.55 Iowan Old Style,Palatino Linotype,Palatino,Georgia,serif}.cs-actions{display:flex;align-items:center;flex-wrap:wrap;gap:14px;margin-top:14px}.cs-cta{display:flex;align-items:center;gap:8px;padding:8px 18px 8px 10px;border:0;border-radius:999px;background:#c9a24a;color:#0f2347;font:inherit;font-size:.88rem;font-weight:700;cursor:pointer;animation:cs-pulse 2.2s infinite}.cs-cta img{width:26px;padding:2px;border-radius:50%;background:#fff7e0}.cs-cta:hover{background:#d8b45c}@keyframes cs-pulse{0%{box-shadow:0 0 #c9a24a99}70%,to{box-shadow:0 0 0 10px #c9a24a00}}.cs-later{border:0;background:none;color:#a9b4cf;font:inherit;font-size:.8rem;text-decoration:underline;cursor:pointer}.cs-hint{min-height:1.1rem;margin:10px 0 0;font-size:.78rem;color:#a9b4cf}.cs-x:focus-visible,.cs-cta:focus-visible,.cs-later:focus-visible,.cs-stage:focus-visible{outline:3px solid #f3d27a;outline-offset:2px}.cs-stage{width:min(200px,36vh);aspect-ratio:200 / 290;perspective:800px;cursor:pointer;border-radius:14px}.cs-flip{position:relative;width:100%;height:100%;transition:transform .7s;transform-style:preserve-3d}.cs-flipped .cs-flip{transform:rotateY(180deg)}.cs-face{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;border-radius:14px;backface-visibility:hidden;-webkit-backface-visibility:hidden}.cs-face svg{display:block;width:100%;height:100%}.cs-back{transform:rotateY(180deg);background:#fff;border:2px solid #c9a24a}.cs-back img{display:block;width:100%;height:100%;object-fit:contain}.cs-eyes{transform-origin:152px 120px;animation:cs-blink 4s infinite}@keyframes cs-blink{0%,94%,to{transform:scaleY(1)}97%{transform:scaleY(.1)}}.cs-star{animation:cs-twinkle 2.5s infinite}@keyframes cs-twinkle{50%{opacity:.2}}.cs-code{animation:cs-code 2.4s infinite}@keyframes cs-code{50%{opacity:.25}}.cs-type{animation:cs-type .25s infinite alternate}@keyframes cs-type{to{transform:translateY(2px)}}.cs-steam{fill:none;stroke:#fff;stroke-width:2;stroke-linecap:round;opacity:0;animation:cs-steam 2.4s infinite}@keyframes cs-steam{0%{opacity:0;transform:translateY(4px)}40%{opacity:.7}to{opacity:0;transform:translateY(-8px)}}.cs-bubble{transform-origin:51px 73px;animation:cs-bubble 2s infinite}@keyframes cs-bubble{50%{transform:scale(1.07)}}.cs-cheers .cs-bubble{display:none}.cs-sparks circle{opacity:0}.cs-cheers .cs-sparks circle{animation:cs-spark .8s ease-out forwards}@keyframes cs-spark{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(var(--dx),var(--dy))}}@media (max-width: 600px){.cs-body{grid-template-columns:1fr;gap:12px;padding:22px 20px}.cs-stage{order:-1;justify-self:center;width:min(150px,24vh)}.cs-title{font-size:1.7rem}.cs-msg{font-size:.92rem}}@media (prefers-reduced-motion: reduce){.cs-modal,.cs-cta,.cs-eyes,.cs-star,.cs-code,.cs-type,.cs-steam,.cs-bubble,.cs-cheers .cs-sparks circle,.cs-trigger:hover img{animation:none!important}.cs-flip{transition:none}}@keyframes rft-fade{0%,55%{opacity:1}to{opacity:0}}@keyframes rft-rise{0%{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:none}}.rft-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:5000;display:grid;place-items:center;padding:16px;pointer-events:none;background:#0f2440;animation:rft-fade 1.5s ease-in-out both}.rft-card{display:grid;gap:6px;text-align:center;color:#fff;animation:rft-rise .35s ease-out both}.rft-card strong{font-size:1.3rem}.rft-card p{margin:0;opacity:.85}@media (prefers-reduced-motion: reduce){.rft-card{animation:none}}:root{--app-canvas-rgb: 246, 247, 245;--app-paper-rgb: 255, 255, 255;--app-canvas: rgba(var(--app-canvas-rgb), var(--panel-opacity));--app-paper: rgba(var(--app-paper-rgb), var(--panel-opacity));--app-ink: #0F2440;--app-ink-rgb: 15, 36, 64;--app-navy: #0F2440;--app-ink-soft: #173A5E;--app-ink-soft-rgb: 23, 58, 94;--app-slate: #4B5565;--app-slate-light: #8A93A3;--app-hairline: #DCE1E7;--app-hairline-rgb: 220, 225, 231;--app-gold: #B08D57;--app-gold-rgb: 176, 141, 87;--app-gold-deep: #8C6B3E;--app-gold-deep-rgb: 140, 107, 62;--app-gold-tint: rgba(176, 141, 87, .14);--panel-opacity: 1;--app-bg-image: none}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:#f1f5f9;color:#0f172a;font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif}h1,h2,h3,h4,button{font-family:inherit}a{color:inherit}.page-card{background:var(--app-paper);border:1px solid #e2e8f0;border-radius:1.25rem;box-shadow:0 20px 45px #0f172a0d;padding:1.25rem}.card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem}.card-header h3{margin:0 0 .25rem;color:#0f172a;font-size:1.05rem}.card-header p{margin:0;color:#64748b;font-size:.95rem}.primary-button,.secondary-button,.ghost-button{border:none;border-radius:10px;padding:.75rem 1.25rem;font-weight:700;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease,background .2s ease}.primary-button:hover,.secondary-button:hover,.ghost-button:hover{transform:translateY(-1px)}.primary-button{background:linear-gradient(135deg,var(--app-gold-deep) 0%,var(--app-gold) 100%);color:#fff;border:1px solid rgba(var(--app-gold-deep-rgb),.9);box-shadow:inset 0 1px #ffffff47,0 10px 24px rgba(var(--app-gold-deep-rgb),.32)}.secondary-button{background:var(--app-canvas);color:#0f2440;border:0}.ghost-button{background:transparent;color:#2563eb;padding:.45rem .7rem}.student-page{display:flex;flex-direction:column;gap:1rem}.student-assignment-hero,.student-attendance-hero{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.25rem;border-radius:1rem;background:linear-gradient(135deg,#2563eb,#0f172a);color:#fff}.student-assignment-hero strong,.student-attendance-hero strong{display:inline-block;margin-right:.5rem}.student-assignment-hero select,.student-attendance-hero select,.student-assignment-filters select,.student-assignment-filters input,.student-attendance-filters select,.student-attendance-filters input,.student-attendance-toolbar select,.student-attendance-toolbar input,.student-form-grid input,.student-form-grid select,.student-form-grid textarea,.attendance-form input,.attendance-form select,.attendance-form textarea{width:100%;border:1px solid #cbd5e1;border-radius:.8rem;background:#f8fafc;padding:.78rem .85rem;color:#0f172a;font:inherit}.student-assignment-filters,.student-attendance-filters,.student-attendance-toolbar{display:grid;gap:.9rem;margin-bottom:1rem}.student-assignment-filters{grid-template-columns:repeat(3,minmax(0,1fr))}.student-attendance-filters{grid-template-columns:repeat(4,minmax(0,1fr))}.student-attendance-toolbar{grid-template-columns:repeat(3,minmax(0,1fr))}.student-assignment-filters label,.student-attendance-filters label,.student-attendance-toolbar label,.student-form-grid label,.attendance-form label{display:flex;flex-direction:column;gap:.35rem;color:#334155;font-weight:600}.student-assignment-table-wrapper,.attendance-table-wrapper,.student-list-table-wrapper{overflow-x:auto;border:1px solid #e2e8f0;border-radius:1rem}.student-record-table,.attendance-table,.student-list-table{width:100%;border-collapse:collapse;min-width:720px}.student-record-table th,.student-record-table td,.attendance-table th,.attendance-table td,.student-list-table th,.student-list-table td{padding:.9rem .95rem;text-align:left;border-bottom:1px solid #e2e8f0}.student-record-table thead,.attendance-table thead,.student-list-table thead{background:#f8fafc}.student-record-table tbody tr:nth-child(odd),.attendance-table tbody tr:nth-child(odd),.student-list-table tbody tr:nth-child(odd){background:#fcfdff}.student-assignment-actions,.card-actions,.attendance-sheet-actions,.attendance-row-actions{display:flex;gap:.75rem;flex-wrap:wrap;align-items:center}.student-assignment-grid,.student-attendance-grid,.student-attendance-secondary-grid,.attendance-summary-grid{display:grid;gap:1rem}.student-assignment-grid,.student-attendance-grid,.student-attendance-secondary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.attendance-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.gradebook-list,.progress-list,.record-details,.attendance-history-list,.attendance-daily-list{display:flex;flex-direction:column;gap:.7rem}.gradebook-row,.progress-item,.record-group,.attendance-daily-row,.attendance-history-row,.stat-card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:.95rem;padding:.85rem .95rem}.gradebook-row,.progress-item,.attendance-daily-row,.attendance-history-row,.record-item,.record-summary{display:flex;justify-content:space-between;align-items:center;gap:.75rem}.record-group{display:flex;flex-direction:column;gap:.7rem}.record-group strong{color:#0f172a}.record-item{padding:.65rem 0;border-top:1px solid #e2e8f0}.record-summary{font-weight:700;color:#0f172a}.attendance-chip{display:inline-flex;align-items:center;justify-content:center;padding:.35rem .7rem;border-radius:999px;font-size:.8rem;font-weight:700;background:#ecfeff;color:#0369a1}.attendance-chip.status-absent{background:#fef2f2;color:#b91c1c}.attendance-chip.status-late{background:#fff7ed;color:#c2410c}.attendance-chip.status-excused{background:#f5f3ff;color:#6d28d9}.attendance-summary-row,.attendance-history-summary,.attendance-sheet-meta,.attendance-table-footer{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.75rem;margin-top:.9rem;color:#64748b}.student-summary-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem}.student-summary-card{background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff;border-radius:1rem;padding:1rem 1.1rem;box-shadow:0 12px 30px #2563eb26}.student-summary-card strong{display:block;font-size:.8rem;font-weight:700;letter-spacing:.08em;opacity:.85;text-transform:uppercase}.student-summary-card p{margin:.35rem 0 0;font-size:1.6rem;font-weight:700}.student-tabs{display:flex;flex-wrap:wrap;gap:.6rem;margin-bottom:1rem}.student-tab-button{border:1px solid #cbd5e1;border-radius:999px;background:#f8fafc;color:#334155;padding:.7rem .95rem;cursor:pointer}.student-tab-button.active{background:#2563eb;color:#fff;border-color:#1d4ed8}.student-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.student-form-grid .full-width{grid-column:1 / -1}.student-form-grid small{color:#64748b}.form-success{margin-top:.9rem;background:#ecfdf3;color:#166534;border:1px solid #a7f3d0;border-radius:.9rem;padding:.8rem .9rem}.attendance-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.attendance-form-grid .full-width,.attendance-form .full-width{grid-column:1 / -1}.attendance-status-options,.attendance-method-options{display:flex;flex-wrap:wrap;gap:.75rem}.attendance-status-option{display:inline-flex;align-items:center;gap:.35rem;padding:.55rem .75rem;border-radius:999px;background:#f8fafc;color:#334155}.stat-card{text-align:center}.stat-card h3{margin:0 0 .35rem;color:#64748b;font-size:.95rem}.stat-card p{margin:0;font-size:1.35rem;font-weight:700;color:#0f172a}@media (max-width: 960px){.student-assignment-grid,.student-attendance-grid,.student-attendance-secondary-grid,.attendance-summary-grid,.student-summary-cards,.student-assignment-filters,.student-attendance-filters,.student-attendance-toolbar,.student-form-grid,.attendance-form-grid{grid-template-columns:1fr}}@media screen and (max-width: 880px),screen and (pointer: coarse){.template-scroll-x{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}.template-scroll-x .template-min{min-width:1360px}.template-scroll-x .template-fit{min-width:max-content}}.app-shell{background-color:var(--app-canvas);background-image:var(--app-bg-image);background-size:cover;background-position:center;background-attachment:fixed}@keyframes modalLift{0%{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}@media (prefers-reduced-motion: reduce){[style*=modalLift]{animation:none!important}}[role=dialog],[aria-modal=true],[style*="position: fixed"]:not(.app-sidebar):not(.app-shell),.modal,.modal-backdrop,.modal-card,.modal-card-assignment,.program-modal-backdrop,.program-modal-card,.program-delete-dialog{--panel-opacity: 1;--app-canvas: rgba(var(--app-canvas-rgb), 1);--app-paper: rgba(var(--app-paper-rgb), 1)}html body .app-shell .primary-button,html body .app-shell .secondary-button{border-radius:10px;padding:.75rem 1.25rem;font-size:.95rem;font-weight:700}html body .app-shell .secondary-button{background:var(--app-canvas);color:var(--app-ink);border:0}html body .app-shell .student-toolbar{background:transparent}.action-icon-group{display:flex;align-items:center;gap:.4rem;white-space:nowrap}.action-icon-group button,button.action-icon-btn{border:0;border-radius:999px;width:2.2rem;height:2.2rem;padding:0;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;background:rgba(var(--app-hairline-rgb),.6);color:var(--app-slate);cursor:pointer;box-shadow:none;transition:background .2s ease,color .2s ease,transform .2s ease}.action-icon-group button:hover,button.action-icon-btn:hover{background:var(--app-hairline);color:var(--app-gold-deep);transform:translateY(-1px)}.action-icon-group button.action-icon-danger:hover,button.action-icon-btn.action-icon-danger:hover{color:#dc2626}.action-icon-group button:disabled,button.action-icon-btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.action-icon-group button:focus-visible,button.action-icon-btn:focus-visible{outline:2px solid var(--app-gold);outline-offset:2px}.action-icon-group button svg,button.action-icon-btn svg{width:.95rem;height:.95rem}@media screen and (max-width: 880px),screen and (pointer: coarse){.report-scroll{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}.report-scroll>.report-page-consolidated{min-width:1000px}.report-scroll>.report-page-nsr{min-width:1100px}}html body .app-shell .programs-toolbar .secondary-button,html body .app-shell .toolbar-inline-row .secondary-button,html body .app-shell .personnel-topbar-actions .secondary-button,html body .app-shell .toolbar-tools .secondary-button,html body .app-shell .toolbar-tools .sf9-toolbar-button,html body .app-shell .sf9-toolbar-group .sf9-toolbar-button{background:linear-gradient(135deg,var(--app-gold-deep) 0%,var(--app-gold) 100%);color:#fff;border:1px solid rgba(var(--app-gold-deep-rgb),.9);box-shadow:inset 0 1px #ffffff47,0 10px 24px rgba(var(--app-gold-deep-rgb),.32);padding:.75rem 1.25rem;font-size:.95rem;font-weight:700;white-space:nowrap}html body .app-shell .toolbar-tools .secondary-button[aria-pressed=true],html body .app-shell .toolbar-tools .sf9-toolbar-button.active,html body .app-shell .sf9-toolbar-group .sf9-toolbar-button.active,html body .app-shell .sf9-toolbar-group .sf9-toolbar-button.release-active{background:linear-gradient(135deg,var(--app-gold-deep) 0%,var(--app-gold) 100%);color:#fff;box-shadow:inset 0 0 0 2px #ffffffbf,0 10px 24px rgba(var(--app-gold-deep-rgb),.32)}html body .app-shell .toolbar-tools .secondary-button:disabled,html body .app-shell .toolbar-tools .sf9-toolbar-button:disabled{opacity:.5;cursor:not-allowed}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.table-footer-nav{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.75rem;margin-top:.75rem;padding-top:.75rem;border-top:1px solid #DCE1E7;font-family:inherit;font-size:.9rem;color:#4b5565}.pagination-controls{display:flex;align-items:center;gap:.35rem}.pagination-controls button{border:1px solid #DCE1E7;border-radius:6px;min-width:2.25rem;height:2.25rem;padding:0 .6rem;background:var(--app-paper);color:#4b5565;font-family:inherit;font-size:.85rem;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background .2s ease,color .2s ease,border-color .2s ease}.pagination-controls button:hover:not(:disabled){background:var(--app-canvas);border-color:#b08d57;color:#8c6b3e}.pagination-controls button:disabled{opacity:.45;cursor:not-allowed}.pagination-controls button.active{background:linear-gradient(135deg,#8c6b3e,#b08d57);border-color:transparent;color:#fff}.pagination-controls span.ellipsis{padding:0 .35rem;color:#94a3b8}html body .app-shell .print-button,.print-button{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;white-space:nowrap}.print-button .print-button-icon{flex:none}.print-button:disabled{opacity:.5;cursor:not-allowed;transform:none}html body .print-button.action-button--sm,html body .app-shell .print-button.action-button--sm{padding:6px 12px;font-size:12px;border-radius:6px;gap:.35rem}.print-button.action-button--sm .print-button-icon{width:13px;height:13px}
