@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Outfit:wght@400;500;600;700&display=swap";@keyframes cicp-spin{to{transform:rotate(360deg)}}:root{--primary:#7ba4db;--primary-light:#c5d9f1;--accent-gold:#f2a900;--bg-light:#fff;--bg-white:#fff;--text-main:#1e293b;--text-muted:#64748b;--border-light:#e2e8f0;--success:#10b981;--warning:#f59e0b;--danger:#ef4444;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--radius-md:8px;--radius-lg:12px;--radius-xl:16px}*{box-sizing:border-box;margin:0;padding:0}html,body,#app{max-width:100%;overflow-x:hidden}body{background-color:var(--bg-light);color:var(--text-main);-webkit-font-smoothing:antialiased;font-family:Inter,sans-serif;line-height:1.5}h1,h2,h3,h4,h5,h6{color:var(--primary);font-family:Outfit,sans-serif;font-weight:600}.app-container{min-height:100vh;display:flex}.sidebar{background:var(--bg-white);width:260px;color:var(--text-main);border-right:1px solid var(--border-light);flex-direction:column;padding:2rem 1.5rem;display:flex}.sidebar-logo{color:var(--primary);align-items:center;gap:.5rem;margin-bottom:2rem;font-family:Outfit,sans-serif;font-size:1.5rem;font-weight:700;text-decoration:none;display:flex}.nav-links{flex-direction:column;gap:.5rem;display:flex}.nav-item{border-radius:var(--radius-md);color:var(--text-muted);align-items:center;gap:.75rem;padding:.75rem 1rem;font-weight:500;text-decoration:none;transition:all .2s;display:flex}.nav-item:hover{color:var(--primary)}.nav-item.active{color:var(--primary);background:0 0;font-weight:600}.main-content{background:var(--bg-light);flex:1;padding:2rem 3rem;overflow-y:auto}.card{background:var(--bg-white);border-radius:var(--radius-xl);box-shadow:var(--shadow-md);border:1px solid var(--border-light);padding:2rem;transition:transform .2s,box-shadow .2s}.card:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px)}.btn{border-radius:var(--radius-md);cursor:pointer;border:none;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-family:Inter,sans-serif;font-weight:500;transition:all .2s;display:inline-flex}.btn-primary{background:var(--primary);color:var(--bg-white)}.btn-primary:hover{background:var(--primary-light);color:var(--primary);transform:translateY(-1px);box-shadow:0 4px 12px #7ba4db4d}.btn-outline{border:1px solid var(--primary);color:var(--primary);background:0 0}.btn-outline:hover{background:var(--primary-light)}.input-group{flex-direction:column;gap:.5rem;margin-bottom:1.5rem;display:flex}.input-label{color:var(--text-main);font-size:.875rem;font-weight:500}.input-field{border-radius:var(--radius-md);border:1px solid var(--border-light);background:var(--bg-light);padding:.75rem 1rem;font-family:Inter,sans-serif;transition:all .2s}.input-field:focus{border-color:var(--primary-navy);background:var(--bg-white);outline:none;box-shadow:0 0 0 3px #00205b1a}.table-wrapper{border-radius:var(--radius-lg);border:1px solid var(--border-light);background:var(--bg-white);overflow-x:auto}.modern-table{border-collapse:collapse;text-align:left;width:100%}.modern-table th{background:var(--bg-light);color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border-light);padding:1rem 1.5rem;font-size:.875rem;font-weight:600}.modern-table td{border-bottom:1px solid var(--border-light);color:var(--text-main);padding:1rem 1.5rem}.modern-table tbody tr{transition:background .2s}.modern-table tbody tr:hover{background:#f8fafccc}.badge{border-radius:9999px;padding:.25rem .75rem;font-size:.75rem;font-weight:600;display:inline-flex}.badge-present{color:var(--success);background:#10b9811a}.badge-excused{color:var(--warning);background:#f59e0b1a}.badge-unexcused{color:var(--danger);background:#ef44441a}.page-header{justify-content:space-between;align-items:center;margin-bottom:2rem;display:flex}.page-title{margin:0;font-size:2rem}.page-subtitle{color:var(--text-muted);margin-top:.5rem}.nav-group{margin-bottom:.25rem}.nav-group-header{cursor:pointer;width:100%;color:var(--text-main);border-radius:var(--radius-md);background:0 0;border:none;align-items:center;gap:.5rem;padding:.6rem .75rem;font-family:Outfit,sans-serif;font-size:.95rem;font-weight:600;transition:all .2s;display:flex}.nav-group-header:hover{background:var(--primary-light);color:var(--primary)}.nav-group-children{padding-left:.5rem}.nav-season-header{cursor:pointer;width:100%;color:var(--text-muted);border-radius:var(--radius-md);background:0 0;border:none;align-items:center;gap:.5rem;padding:.45rem .75rem;font-family:Inter,sans-serif;font-size:.875rem;font-weight:500;transition:all .15s;display:flex}.nav-season-header:hover{background:#7ba4db14}.nav-season-header.active{color:var(--primary)}.season-badge{border-radius:9999px;padding:.15rem .6rem;font-size:.8rem;font-weight:600}.season-badge[data-season=spring]{color:#065f46;background:#def7ec}.season-badge[data-season=fall]{color:#92400e;background:#fef3c7}.season-badge[data-season=winter]{color:#1e40af;background:#dbeafe}.season-badge[data-season=default]{color:#4b5563;background:#f3f4f6}.badge-absent{color:var(--danger);background:#ef44441a}.nav-season-children{margin-bottom:.25rem;padding-left:1rem}.nav-item-leaf{padding:.4rem .75rem;font-size:.85rem}.nav-divider{background:var(--border-light);height:1px;margin:1rem 0}.nav-section-label{text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);margin-bottom:.5rem;padding:0 .75rem;font-size:.7rem;font-weight:700}.sidebar-footer{border-top:1px solid var(--border-light);margin-top:1rem;padding-top:1rem}.user-info{align-items:center;gap:.75rem;margin-bottom:.75rem;display:flex}.user-avatar{background:var(--primary);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-size:.9rem;font-weight:700;display:flex}.user-name{color:var(--text-main);font-size:.875rem;font-weight:600}.user-role{color:var(--text-muted);font-size:.75rem}.btn-sm{width:100%;padding:.4rem .75rem;font-size:.8rem}.pagination{justify-content:center;align-items:center;gap:1rem;padding:1.25rem 0 .5rem;display:flex}.pagination-info{color:var(--text-muted);font-size:.85rem;font-weight:500}.pagination-btn{padding:.4rem 1rem;font-size:.85rem}.pagination-btn:disabled{opacity:.4;cursor:not-allowed}.sidebar{width:280px;overflow-y:auto}.mobile-topbar,.sidebar-overlay,.sidebar-close{display:none}@media (width<=900px){.main-content{padding:1.5rem}}@media (width<=768px){.app-container{flex-direction:column}.mobile-topbar{background:var(--bg-white);border-bottom:1px solid var(--border-light);z-index:30;align-items:center;gap:.75rem;padding:.7rem 1rem;display:flex;position:sticky;top:0}.hamburger{cursor:pointer;color:var(--primary);background:0 0;border:none;padding:.25rem;display:inline-flex}.mobile-logo{color:var(--primary);align-items:center;gap:.4rem;font-family:Outfit,sans-serif;font-size:1.1rem;font-weight:700;text-decoration:none;display:flex}.sidebar{z-index:50;width:82vw;max-width:320px;box-shadow:var(--shadow-md);transition:transform .25s;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%)}.sidebar.open{transform:translate(0)}.sidebar-overlay{z-index:45;background:#00000073;display:block;position:fixed;inset:0}.sidebar-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;align-self:flex-end;margin-bottom:.5rem;display:inline-flex}.main-content{padding:1rem}.card{padding:1.25rem}.page-title{font-size:1.4rem}.page-header{flex-direction:column;align-items:stretch;gap:.85rem}.page-header>div{width:100%}.page-header>div:last-child{flex-wrap:wrap;align-items:stretch;gap:.6rem;display:flex}.page-header select,.page-header input,.page-header>div:last-child>*{flex:100%;width:100%!important;min-width:0!important;max-width:100%!important}input,select,textarea,.input-field{max-width:100%}.modern-table th,.modern-table td{padding:.6rem .7rem}.btn{padding:.6rem 1rem}.modern-table .btn-sm,.modern-table .btn{min-height:38px}.attendance-roster thead{display:none}.attendance-roster,.attendance-roster tbody,.attendance-roster tr,.attendance-roster td{width:100%;display:block}.attendance-roster tr{border:1px solid var(--border-light);border-radius:var(--radius-md);background:var(--bg-white);margin-bottom:.75rem;padding:.85rem 1rem}.attendance-roster td{border:none;justify-content:space-between;align-items:center;gap:1rem;padding:.35rem 0;display:flex}.attendance-roster td:before{content:attr(data-label);color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em;font-size:.8rem;font-weight:600}.attendance-roster td[data-label=Student]{border-bottom:1px solid var(--border-light);margin-bottom:.4rem;padding-bottom:.5rem;font-size:1.05rem;font-weight:600}.attendance-roster td[data-label=Student]:before{display:none}.attendance-roster td[data-label=Note] input{width:60%!important}.attendance-roster .btn{min-height:40px}.card-table thead{display:none}.card-table,.card-table>tbody{width:100%;display:block}.card-table>tbody>tr{border:1px solid var(--border-light);border-radius:var(--radius-md);background:var(--bg-white);flex-direction:column;width:100%;margin-bottom:.75rem;padding:.85rem 1rem;display:flex}.card-table>tbody>tr>td{text-align:right;border:none;justify-content:space-between;align-items:center;gap:1rem;padding:.3rem 0;font-size:.9rem;display:flex}.card-table>tbody>tr>td:before{content:attr(data-label);color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em;text-align:left;white-space:nowrap;font-size:.72rem;font-weight:600}.card-table>tbody>tr>td[data-label=""]:before{content:""}.card-table>tbody>tr>td.card-title{text-align:left;border-bottom:1px solid var(--border-light);order:-1;justify-content:flex-start;margin-bottom:.3rem;padding-bottom:.5rem;font-size:1.05rem;font-weight:600}.card-table>tbody>tr>td.card-title:before{content:""}.card-table>tbody>tr.card-detail-row{background:0 0;border:none;margin:-.5rem 0 .75rem;padding:0 0 .75rem}.card-table>tbody>tr.card-detail-row>td.card-expand{text-align:left;padding:0;display:block}.card-table>tbody>tr.card-detail-row>td.card-expand:before{content:""}.card-table>tbody>tr:not(.card-detail-row){cursor:pointer}}
