*{box-sizing:border-box}.product-gantt{margin-bottom:18px}.gantt-board{display:grid;gap:10px}.gantt-head,.gantt-row{display:grid;grid-template-columns:minmax(150px,.75fr) minmax(360px,1.7fr) minmax(120px,.45fr);gap:14px;align-items:center}.gantt-head{color:#64748b;font-weight:900}.gantt-title b,.gantt-title span{display:block}.gantt-title span,.gantt-row>strong,.gantt-bar em{color:#64748b;font-size:.78rem;font-style:normal;font-weight:900}.gantt-track{position:relative;height:42px;overflow:hidden;border:1px solid #e2e8f0;border-radius:8px;background:repeating-linear-gradient(90deg,#fff 0 19%,#f8fafc 19% 20%)}.gantt-axis{position:relative;min-height:24px}.gantt-axis b{position:absolute;transform:translate(-50%);white-space:nowrap}.gantt-bar{position:absolute;top:8px;bottom:8px;display:flex;justify-content:flex-end;align-items:center;min-width:52px;overflow:hidden;border-radius:999px;background:#2563eb}.gantt-bar i{position:absolute;inset:0 auto 0 0;min-width:4px;background:#ffffff6b}.gantt-bar em{position:relative;z-index:1;padding:0 10px;color:#fff}.gantt-bar.green{background:#16a34a}.gantt-bar.amber{background:#f59e0b}.gantt-bar.rose{background:#e11d48}@media(max-width:760px){.gantt-head{display:none}.gantt-row{grid-template-columns:1fr}}.attendance-heatmap{overflow:hidden}.heatmap-board{display:grid;gap:8px;overflow-x:auto;padding-bottom:2px}.heatmap-head,.heatmap-row{display:grid;grid-template-columns:minmax(128px,.9fr) repeat(5,minmax(88px,1fr)) 70px;gap:8px;align-items:stretch;min-width:760px}.heatmap-head{color:#64748b;font-size:.78rem;font-weight:900}.heatmap-row>b{display:flex;align-items:center;color:#0f172a;font-size:.88rem;line-height:1.2;overflow-wrap:anywhere}.heatmap-row>em{display:grid;place-items:center;border-radius:8px;background:#f8fafc;color:#0f172a;font-style:normal;font-weight:900}.heatmap-cell{display:grid;gap:3px;place-items:center;min-height:62px;border:1px solid #dbeafe;border-radius:8px;background:#eff6ff;color:#1e3a8a}.heatmap-cell strong{font-size:1rem;line-height:1}.heatmap-cell small{color:#0f172aad;font-size:.72rem;font-weight:900}.heatmap-cell.heatmap-high{border-color:#86efac;background:#d1fae5;color:#14532d}.heatmap-cell.heatmap-mid{border-color:#93c5fd;background:#dbeafe;color:#1e3a8a}.heatmap-cell.heatmap-low{border-color:#fdba74;background:#fff7ed;color:#9a3412}.heatmap-cell.heatmap-critical{border-color:#fca5a5;background:#fef2f2;color:#991b1b}.heatmap-cell.heatmap-empty{border-color:#cbd5e1;border-style:dashed;background:#f8fafc;color:#94a3b8}.class-fee-chart{display:grid;gap:12px}.class-fee-results{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.class-fee-results div{border:1px solid #e2e8f0;border-radius:8px;padding:10px;background:#f8fafc}.class-fee-results span,.fee-axis,.fee-class-column small,.class-fee-legend{color:#64748b;font-size:.76rem;font-weight:900}.class-fee-results strong{display:block;margin-top:4px;color:#0f172a;font-size:1.16rem}.class-fee-legend{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.class-fee-legend span{display:flex;align-items:center;gap:6px}.class-fee-legend i{width:10px;height:10px;border-radius:3px;background:#38bdf8}.class-fee-legend i.received{background:#16a34a}.class-fee-legend i.due{background:#e11d48}.class-fee-plot{display:grid;grid-template-columns:54px minmax(0,1fr);gap:10px;min-height:214px}.fee-axis{display:flex;flex-direction:column;justify-content:space-between;align-items:flex-end;padding:9px 0 32px}.fee-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(54px,1fr));gap:8px;align-items:end;border-bottom:1px solid #94a3b8;background:repeating-linear-gradient(to bottom,#fff 0 48px,#e2e8f0 49px 50px);padding-top:8px}.fee-class-column{display:grid;grid-template-rows:158px auto auto;gap:6px;min-width:0;text-align:center}.fee-bars{display:flex;align-items:end;justify-content:center;gap:5px;height:158px}.fee-bars i{width:min(18px,28%);border-radius:5px 5px 0 0;background:#38bdf8}.fee-bars i.received{background:#16a34a}.fee-bars i.due{background:#e11d48}.fee-class-column strong{color:#0f172a;font-size:.72rem;line-height:1.15;overflow-wrap:anywhere}@media(max-width:760px){.class-fee-results{grid-template-columns:1fr}.class-fee-plot{grid-template-columns:1fr;overflow-x:auto}.fee-axis{display:none}.fee-columns{min-width:520px}}.transport-student-backdrop{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:18px;background:#0f172a6b}.transport-student-modal{width:min(860px,100%);max-height:min(720px,calc(100vh - 36px));overflow:auto;border-radius:12px;padding:18px;background:#fff;box-shadow:0 24px 70px #0f172a47}.transport-modal-heading,.transport-student-detail-head,.transport-student-detail-row{display:grid;gap:12px}.transport-modal-heading{grid-template-columns:minmax(0,1fr) auto;align-items:start;margin-bottom:14px}.transport-modal-heading h2{margin:4px 0}.transport-modal-heading span{color:#64748b;font-weight:800}.transport-student-detail-head,.transport-student-detail-row{grid-template-columns:1fr 1.3fr 1fr .7fr 1fr .8fr;padding:12px 10px}.transport-student-detail-head{color:#475569;font-weight:900;border-bottom:1px solid #e2e8f0}.transport-student-detail-row{color:#0f172a;font-weight:700;border-bottom:1px solid #f1f5f9}@media(max-width:1100px){.transport-student-detail-head,.transport-student-detail-row{grid-template-columns:1fr}}.room-tile{position:relative}.room-tile:not(.all-room){padding-right:52px}.room-tile-main{width:100%;border:0;padding:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.room-edit-btn{position:absolute;top:10px;right:10px}.room-tile strong{display:block}body{margin:0;font-family:Inter,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:#efefefba;overflow-x:hidden}body.school-watermark :where(.shell,.module-shell):has(app-school-sidebar) :where(.content,.content-area){position:relative}body.school-watermark :where(.shell,.module-shell):has(app-school-sidebar) :where(.content,.content-area):before{content:"";position:fixed;inset:0 0 0 260px;z-index:10;pointer-events:none;background-image:var(--school-watermark-image);background-repeat:no-repeat;background-position:center;background-size:min(44vw,520px);opacity:.075;mix-blend-mode:multiply}@media print{body.school-watermark :where(.shell,.module-shell):has(app-school-sidebar) :where(.content,.content-area):before{display:none}}a{color:inherit}:where(.content,.content-area) a:not(.primary-btn):not(.ghost-btn):not(.action-icon-btn):not(.danger-btn):not(.warning-btn){color:var(--school-list-link)}:where(.content,.content-area) a:not(.primary-btn):not(.ghost-btn):not(.action-icon-btn):not(.danger-btn):not(.warning-btn):hover,:where(.content,.content-area) a:not(.primary-btn):not(.ghost-btn):not(.action-icon-btn):not(.danger-btn):not(.warning-btn):focus-visible{color:var(--school-list-link-hover)}.action-icon-btn{position:relative;display:inline-grid;place-items:center;width:36px;min-width:36px;height:36px;border:1px solid #cbd5e1;border-radius:8px;padding:0;background:#fff;color:#1e40af;font:inherit;font-size:0;font-weight:900;line-height:1;text-decoration:none;cursor:pointer;overflow:visible;transition:background-color .16s ease,border-color .16s ease,box-shadow .16s ease,color .16s ease}.action-icon-btn:before{content:attr(data-icon);font-size:1rem}.action-icon-btn.icon-text:before{font-size:.68rem;letter-spacing:0}.action-icon-btn[aria-label]:after{content:attr(aria-label);position:absolute;bottom:calc(100% + 8px);left:50%;z-index:1000;width:max-content;max-width:min(220px,70vw);transform:translate(-50%,4px);border-radius:6px;padding:7px 9px;background:#111827;color:#fff;font-size:.75rem;font-weight:800;line-height:1.2;text-align:center;white-space:normal;overflow-wrap:anywhere;opacity:0;pointer-events:none;box-shadow:0 12px 28px #0f172a38;transition:opacity .1s ease,transform .1s ease}.action-icon-btn[aria-label]:hover:after,.action-icon-btn[aria-label]:focus-visible:after,.action-icon-btn[aria-label]:active:after{transform:translate(-50%);opacity:1}.action-icon-btn:hover:not(:disabled),.action-icon-btn:focus-visible{border-color:#2563eb;background:#eff6ff;color:#1d4ed8;box-shadow:0 0 0 3px #2563eb24;outline:none}.action-icon-btn.danger{color:#b91c1c}.action-icon-btn.danger:hover:not(:disabled),.action-icon-btn.danger:focus-visible{border-color:#ef4444;background:#fef2f2;color:#b91c1c;box-shadow:0 0 0 3px #ef444424}.action-icon-btn.warning{color:#b45309}.action-icon-btn.warning:hover:not(:disabled),.action-icon-btn.warning:focus-visible{border-color:#f59e0b;background:#fffbeb;color:#92400e;box-shadow:0 0 0 3px #f59e0b29}.action-icon-btn.success,.action-icon-btn.ready{color:#047857}.action-icon-btn.success:hover:not(:disabled),.action-icon-btn.success:focus-visible,.action-icon-btn.ready:hover:not(:disabled),.action-icon-btn.ready:focus-visible{border-color:#10b981;background:#ecfdf5;color:#047857;box-shadow:0 0 0 3px #10b98124}.action-icon-btn:disabled,.action-icon-btn[aria-disabled=true]{cursor:not-allowed;opacity:.5;box-shadow:none}:where(.row-actions,.action-buttons,.client-actions,.receipt-buttons,.actions,.topbar-actions) .action-icon-btn{flex:0 0 auto}@media(max-width:900px){body.school-watermark :where(.shell,.module-shell):has(app-school-sidebar) :where(.content,.content-area):before{left:0;background-size:min(70vw,320px);opacity:.055}:where(.shell,.module-shell):has(app-school-sidebar){grid-template-columns:minmax(0,1fr)!important}.modal-panel .modal-grid,.modal-panel .import-results{grid-template-columns:1fr}}:root{--field-border: #cbd5e1;--field-border-focus: #2563eb;--field-bg: #ffffff;--field-text: #0f172a;--field-muted: #64748b;--school-list-link: #0f766e;--school-list-link-hover: #0d9488;--school-list-link-bg: #ecfdf5}html body input[type=date],html body input[type=time],html body input[type=datetime-local],html body input[type=month]{min-height:46px;appearance:none;border:1px solid var(--field-border);border-radius:8px;padding:10px 13px;background:var(--field-bg);color:var(--field-text);font-family:inherit;font-size:1rem;font-weight:700;line-height:1.2;outline:none;box-shadow:inset 0 1px #0f172a08;transition:border-color .16s ease,box-shadow .16s ease,background-color .16s ease}html body input[type=date]:hover,html body input[type=time]:hover,html body input[type=datetime-local]:hover,html body input[type=month]:hover{border-color:#94a3b8;background:#f8fafc}html body input[type=date]:focus,html body input[type=time]:focus,html body input[type=datetime-local]:focus,html body input[type=month]:focus{border-color:var(--field-border-focus);background:#fff;box-shadow:0 0 0 3px #2563eb29}html body input[type=date]:disabled,html body input[type=time]:disabled,html body input[type=datetime-local]:disabled,html body input[type=month]:disabled{cursor:not-allowed;background:#eef2f7;color:var(--field-muted)}html body input[type=date]::-webkit-calendar-picker-indicator,html body input[type=time]::-webkit-calendar-picker-indicator,html body input[type=datetime-local]::-webkit-calendar-picker-indicator,html body input[type=month]::-webkit-calendar-picker-indicator{width:22px;height:22px;cursor:pointer;border-radius:6px;padding:4px;opacity:.72}html body input[type=date]::-webkit-calendar-picker-indicator:hover,html body input[type=time]::-webkit-calendar-picker-indicator:hover,html body input[type=datetime-local]::-webkit-calendar-picker-indicator:hover,html body input[type=month]::-webkit-calendar-picker-indicator:hover{background:#e0ecff;opacity:1}html body input[type=time]{font-variant-numeric:tabular-nums}.modal-backdrop{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:20px;background:#0f172a7a}.modal-panel{width:min(560px,100%);max-height:calc(100vh - 40px);overflow:auto;background:#fff;border-radius:20px;padding:20px;box-shadow:0 28px 80px #0f172a4d}.modal-header,.modal-actions,.modal-panel .toggle-field{display:flex;align-items:center;gap:12px}.modal-header{justify-content:space-between;margin-bottom:18px}.modal-header h2{margin:6px 0 0;color:#0f172a}.modal-panel .icon-btn{width:44px;padding:0}.modal-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}.modal-panel .toggle-field{min-height:44px;align-self:end;color:#0f172a;font-weight:800}.modal-panel .selected-file{margin:10px 0 0;color:#475569;font-weight:800}.modal-panel .import-results{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin:12px 0}.modal-panel .import-results span{border-radius:12px;background:#f8fafc;padding:10px;color:#475569}.modal-panel .import-results b{display:block;color:#0f172a}.modal-actions{justify-content:flex-end;flex-wrap:wrap;margin-top:16px}app-dashboard .shell{grid-template-columns:260px minmax(0,1fr);overflow-x:hidden}app-dashboard .content,app-dashboard .head,app-dashboard .ha,app-dashboard .ph,app-dashboard .kpi,app-dashboard .panel,app-dashboard .bar{min-width:0}app-dashboard .content{overflow-x:hidden}app-dashboard .kpis{grid-template-columns:repeat(4,minmax(0,1fr))}app-dashboard .grid{grid-template-columns:minmax(0,1.35fr) minmax(0,.9fr) minmax(0,.9fr)}app-dashboard .bars{grid-template-columns:repeat(7,minmax(0,1fr));min-width:0}app-dashboard .bar small,app-dashboard .bar em,app-dashboard .sr b,app-dashboard .status b,app-dashboard .date-chip,app-dashboard .pill{overflow-wrap:anywhere}app-dashboard .sr{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr)}app-dashboard .coverage{grid-template-columns:150px minmax(0,1fr)}app-dashboard .status,app-dashboard .quick{grid-template-columns:repeat(2,minmax(0,1fr))}@media(max-width:760px){app-dashboard .shell,app-dashboard .kpis,app-dashboard .grid,app-dashboard .status,app-dashboard .quick,app-dashboard .coverage,app-dashboard .sr{grid-template-columns:minmax(0,1fr)}app-dashboard .content{padding:16px}app-dashboard .ha{align-items:stretch}app-dashboard .ha>*{width:100%;text-align:center}app-dashboard .panel{padding:14px}app-dashboard .kpi strong{font-size:1.45rem}app-dashboard .bars{height:240px;gap:6px}app-dashboard .track{padding:4px}app-dashboard .date-chip,app-dashboard .pill{border-radius:8px}app-dashboard .legend div{display:grid;gap:3px}app-dashboard .donut{width:min(150px,70vw);justify-self:center}}@media screen and (max-width:760px){html body.native-mobile-tables .mobile-data-table{overflow:visible!important}html body.native-mobile-tables .mobile-data-header{display:none!important}html body.native-mobile-tables .mobile-data-row{display:block!important;grid-template-columns:none!important;min-width:0!important;margin:0 0 12px!important;padding:12px 14px!important;border:1px solid #e2e8f0!important;border-radius:12px!important;background:#fffffff5!important;box-shadow:0 10px 22px #0f172a0f!important}html body.native-mobile-tables .mobile-data-row:last-child{margin-bottom:0!important}html body.native-mobile-tables .mobile-data-row>*{display:grid!important;grid-template-columns:minmax(96px,36%) minmax(0,1fr)!important;gap:10px!important;align-items:start!important;min-width:0!important;padding:9px 0!important;border-bottom:1px solid #eef2f7!important;overflow-wrap:anywhere!important}html body.native-mobile-tables .mobile-data-row>*:last-child{border-bottom:0!important}html body.native-mobile-tables .mobile-data-row>*:before{content:attr(data-label);color:#64748b;font-size:.78rem;font-weight:900;line-height:1.35;text-transform:uppercase}html body.native-mobile-tables .mobile-data-row>.row-actions,html body.native-mobile-tables .mobile-data-row>.actions,html body.native-mobile-tables .mobile-data-row>[class*=action]{display:flex!important;flex-wrap:wrap!important;gap:8px!important}html body.native-mobile-tables .mobile-data-row>.row-actions:before,html body.native-mobile-tables .mobile-data-row>.actions:before,html body.native-mobile-tables .mobile-data-row>[class*=action]:before{flex:0 0 100%}html body.native-mobile-tables .mobile-data-row a,html body.native-mobile-tables .mobile-data-row button{max-width:100%;white-space:normal!important}html body.native-mobile-tables .mobile-native-table{overflow:visible!important}html body.native-mobile-tables .mobile-native-table table,html body.native-mobile-tables table.mobile-native-table{width:100%!important;min-width:0!important;border-collapse:separate!important;border-spacing:0 12px!important}html body.native-mobile-tables .mobile-native-table thead,html body.native-mobile-tables table.mobile-native-table thead{display:none!important}html body.native-mobile-tables .mobile-native-table tbody,html body.native-mobile-tables .mobile-native-table tr,html body.native-mobile-tables table.mobile-native-table tbody,html body.native-mobile-tables table.mobile-native-table tr{display:block!important;width:100%!important}html body.native-mobile-tables .mobile-native-table tbody tr,html body.native-mobile-tables table.mobile-native-table tbody tr{margin:0 0 12px!important;padding:12px 14px!important;border:1px solid #e2e8f0!important;border-radius:12px!important;background:#fffffff5!important;box-shadow:0 10px 22px #0f172a0f!important}html body.native-mobile-tables .mobile-native-table tbody tr:last-child,html body.native-mobile-tables table.mobile-native-table tbody tr:last-child{margin-bottom:0!important}html body.native-mobile-tables .mobile-native-table td,html body.native-mobile-tables table.mobile-native-table td{display:grid!important;grid-template-columns:minmax(96px,36%) minmax(0,1fr)!important;gap:10px!important;align-items:start!important;width:100%!important;min-width:0!important;padding:9px 0!important;border:0!important;border-bottom:1px solid #eef2f7!important;color:#0f172a!important;overflow-wrap:anywhere!important}html body.native-mobile-tables .mobile-native-table td:last-child,html body.native-mobile-tables table.mobile-native-table td:last-child{border-bottom:0!important}html body.native-mobile-tables .mobile-native-table td[data-label]:before,html body.native-mobile-tables table.mobile-native-table td[data-label]:before{content:attr(data-label);color:#64748b;font-size:.78rem;font-weight:900;line-height:1.35;text-transform:uppercase}html body.native-mobile-tables .mobile-native-table td[colspan],html body.native-mobile-tables table.mobile-native-table td[colspan]{display:block!important;text-align:center!important}html body.native-mobile-tables .mobile-native-table td[colspan]:before,html body.native-mobile-tables table.mobile-native-table td[colspan]:before{display:none!important}html body.native-mobile-tables .mobile-native-table td:has(button),html body.native-mobile-tables table.mobile-native-table td:has(button){display:flex!important;flex-wrap:wrap!important;gap:8px!important}html body.native-mobile-tables .mobile-native-table td:has(button):before,html body.native-mobile-tables table.mobile-native-table td:has(button):before{flex:0 0 100%}html body.native-mobile-tables .mobile-native-table td button,html body.native-mobile-tables .mobile-native-table td a,html body.native-mobile-tables table.mobile-native-table td button,html body.native-mobile-tables table.mobile-native-table td a{max-width:100%;white-space:normal!important}}
