*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:system-ui,sans-serif;color:#1a1a1a;height:100vh;display:flex;flex-direction:column}#app{display:flex;flex-direction:column;flex:1;overflow:hidden}#site-header{padding:.75rem 1rem;background:#1a1a1a;color:#fff;font-size:1.1rem;font-weight:700;flex-shrink:0}#site-body{display:flex;flex:1;overflow:hidden}#sidebar{width:180px;border-right:1px solid #e5e7eb;padding:1rem;flex-shrink:0;overflow-y:auto}#sidebar ul{list-style:none;padding:0;margin:0}#sidebar li{padding:.3rem 0;border-bottom:none}#sidebar a{text-decoration:none;color:inherit}#sidebar a[aria-current=page]{font-weight:700}#main-content{flex:1;padding:1.5rem;overflow-y:auto}#main-content h1{font-size:2rem;margin-top:0;margin-bottom:1.5rem}#main-content h2{font-size:1.25rem;margin-top:2rem}#main-content ul{list-style:none;padding:0}#main-content li{padding:.5rem 0;border-bottom:1px solid #e5e7eb}th.sortable{cursor:pointer;user-select:none;white-space:nowrap}.att-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem;margin-bottom:1.25rem;padding:.85rem 1rem;background:#f9fafb;border:1px solid #e5e7eb;border-radius:10px}.att-toolbar label{display:flex;align-items:center;gap:.4rem;font-size:.9rem;color:#374151}.att-toolbar input[type=date]{padding:.35rem .5rem;border:1px solid #d1d5db;border-radius:6px;font-size:.9rem;font-family:inherit}.att-program-group{display:flex;align-items:center;gap:.5rem;padding-right:.85rem;margin-right:.35rem;border-right:1px solid #d1d5db}.att-program-label{font-size:.95rem;font-weight:700;color:#1a1a1a}.att-program-select{padding:.45rem .75rem;border:1px solid #9ca3af;border-radius:6px;font-size:1rem;font-weight:600;font-family:inherit;background:#fff}.att-btn{padding:.4rem .85rem;border-radius:6px;border:1px solid #d1d5db;background:#fff;font-size:.85rem;cursor:pointer}.att-btn:hover{background:#f3f4f6}.att-week-label{font-weight:600;color:#1a1a1a}.att-spacer{flex:1}.att-mark-btn{border-color:#93c5fd;color:#1e40af;background:#eff6ff}.att-mark-btn:hover{background:#dbeafe}.att-mark-btn.active{background:#1e40af;color:#fff;border-color:#1e40af}.att-days-btn{border-color:#c4b5fd;color:#5b21b6;background:#f5f3ff}.att-days-btn:hover{background:#ede9fe}.att-days-btn.active{background:#5b21b6;color:#fff;border-color:#5b21b6}.att-table-wrap{border:1px solid #9ca3af;overflow-x:auto}.att-table{width:100%;border-collapse:collapse}.att-table th,.att-table td{border:1px solid #d1d5db}.att-table th{text-align:center;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:#6b7280;background:#f9fafb;padding:.6rem .75rem}.att-table th:first-child{text-align:left}.att-table th.att-header-off{background:#e5e7eb;color:#9ca3af}.att-table td{padding:.5rem .6rem;font-size:.9rem;text-align:center;height:3.25rem}.att-student-cell{text-align:left;font-weight:600;white-space:nowrap;background:#f9fafb}.att-table td small{font-weight:400;font-size:.7rem}.att-status-present{background:#dcfce7;color:#166534;font-weight:600}.att-status-late{background:#fef3c7;color:#92400e;font-weight:600}.att-status-absent{background:#fee2e2;color:#991b1b;font-weight:600}.att-status-explained{background:#ede9fe;color:#5b21b6;font-weight:600}.att-status-pending{background:#f3f4f6;color:#9ca3af}.att-status-unrecorded{background:#dbeafe;color:#1e40af;font-weight:600}.att-status-off{background:#f9fafb}.att-mark-action-btn,.att-revert-btn{padding:.3rem .7rem;border-radius:999px;font-size:.78rem;cursor:pointer;border:1px solid transparent}.att-mark-action-btn{border-color:#93c5fd;background:#eff6ff;color:#1e40af}.att-mark-action-btn:hover{background:#dbeafe}.att-revert-btn{border-color:#fca5a5;background:#fef2f2;color:#991b1b}.att-revert-btn:hover{background:#fee2e2}.att-legend{display:flex;flex-wrap:wrap;gap:1.25rem;margin-top:1rem;font-size:.82rem;color:#6b7280}.att-legend-item{display:flex;align-items:center;gap:.4rem}.att-legend-swatch{width:.7rem;height:.7rem;border-radius:3px;display:inline-block}.reg-match-indicator{color:#92400e;font-size:.85rem;margin:.35rem 0 0}#registration-validation-form input[readonly]{background:#f3f4f6;color:#6b7280}.fin-summary{border-radius:12px;padding:1.25rem 1.5rem;margin-bottom:2rem;border-left:6px solid #9ca3af;background:#f8f9fa;box-shadow:0 1px 3px #00000014}.fin-summary-alert{border-left-color:#dc2626;background:#fef2f2}.fin-summary-warn{border-left-color:#d97706;background:#fffbeb}.fin-summary-ok{border-left-color:#16a34a;background:#f0fdf4}.fin-summary-label{font-size:.85rem;text-transform:uppercase;letter-spacing:.04em;color:#6b7280}.fin-summary-label-total{font-size:1.1rem;font-weight:700;color:#1f2937}.fin-summary-amount{font-size:2.25rem;font-weight:700;margin:.15rem 0}.fin-summary-sub{font-size:.9rem;color:#6b7280;margin-top:.5rem}.fin-year{margin-top:1.5rem}.fin-year:first-of-type{margin-top:.5rem}.fin-year-heading{font-size:1rem;font-weight:600;margin-bottom:.5rem;cursor:pointer;user-select:none}.fin-year-heading::marker{color:#6b7280}.fin-table-wrap{border:1px solid #e5e7eb;border-radius:10px;overflow:hidden;box-shadow:0 1px 2px #0000000a;margin-bottom:1.5rem}.fin-row-past{color:#aaadb2}.fin-row-carry{font-style:italic;background:#f9fafb}.fin-table{width:100%;border-collapse:collapse}.fin-table th{text-align:left;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:#6b7280;background:#f9fafb;padding:.4rem .65rem;border-bottom:1px solid #e5e7eb}.fin-table td{padding:.4rem .65rem;border-bottom:1px solid #f1f2f4;font-size:.92rem}.fin-table tr:last-child td{border-bottom:none}.fin-table th,.fin-table td{border-right:1px solid #e5e7eb}.fin-table th:last-child,.fin-table td:last-child{border-right:none}.fin-table .fin-col-amount{text-align:right;font-weight:600}.fin-table .fin-col-status{text-align:center;font-weight:600}.fin-table .fin-col-download{text-align:center;width:1%;white-space:nowrap}.fin-desc{font-weight:600}.fin-amount-overdue{color:#dc2626}.fin-amount-payment{color:#16a34a}.fin-download-btn{padding:.35rem .75rem;border-radius:6px;border:1px solid #d1d5db;background:#f3f4f6;color:#9ca3af;font-size:.8rem;cursor:not-allowed}.badge-paid{background:#dcfce7;color:#166534}.badge-overdue{background:#fee2e2;color:#991b1b}.badge-pending{background:#fef9c3;color:#854d0e}.badge-payment{background:#dbeafe;color:#1e40af}.badge-credit{background:#ede9fe;color:#5b21b6}.doc-list{display:flex;flex-direction:column;gap:.75rem}.doc-card{display:flex;align-items:center;justify-content:space-between;border:1px solid #e5e7eb;border-radius:10px;padding:1rem 1.25rem;box-shadow:0 1px 2px #0000000a}.doc-name{font-weight:600}.doc-desc{font-size:.85rem;color:#6b7280;margin-top:.15rem}.doc-download-btn{flex-shrink:0;margin-left:1rem;padding:.5rem 1rem;border-radius:8px;background:#1a1a1a;color:#fff;text-decoration:none;font-size:.9rem;font-weight:600}.doc-download-btn:hover{background:#333}.full-form-page{flex:1;overflow-y:auto;display:flex;justify-content:center;padding:2rem 1rem}.full-form-page>*{width:100%;max-width:480px}.kiosk-container{background:#fff;border-radius:12px;box-shadow:0 8px 32px #00000026;overflow:hidden}.kiosk-header{background:linear-gradient(135deg,#4caf50,#45a049);color:#fff;text-align:center;padding:30px 20px;margin:0}.kiosk-header h1{margin:0;font-size:28px;font-weight:600;letter-spacing:.5px}.kiosk-header p{margin:8px 0 0;font-size:16px;opacity:.9;font-weight:300}.kiosk-container form{padding:10px 30px}.kiosk-form-section{margin-top:20px}.kiosk-form-title{font-size:18px;font-weight:600;color:#333;margin-bottom:5px;padding-bottom:8px;border-bottom:2px solid #4caf50;display:flex;align-items:center}.kiosk-step-number{background:#4caf50;color:#fff;width:24px;height:24px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;margin-right:10px;flex-shrink:0}.kiosk-container label{display:block;margin-bottom:8px;margin-top:12px;font-weight:500;color:#555;font-size:14px}.kiosk-container select{width:100%;padding:12px;border:2px solid #e0e0e0;border-radius:6px;font-size:16px;box-sizing:border-box;background-color:#fff;transition:border-color .3s ease;font-family:inherit}.kiosk-container select:focus{outline:none;border-color:#4caf50;box-shadow:0 0 0 3px #4caf501a}.kiosk-pin-container{margin-top:16px;margin-bottom:20px}.kiosk-pin-inputs{display:flex;gap:10px;justify-content:center;margin-top:10px}.kiosk-pin-digit{width:50px;height:50px;text-align:center;font-size:20px;font-weight:700;border:2px solid #e0e0e0;border-radius:8px;background-color:#fafafa;transition:all .3s ease}.kiosk-pin-digit:focus{outline:none;border-color:#4caf50;background-color:#fff;box-shadow:0 0 0 3px #4caf501a;transform:scale(1.05)}.kiosk-pin-digit:disabled{background-color:#f1f2f4;cursor:not-allowed}.kiosk-pin-error{color:#f44336;font-size:14px;text-align:center;margin-top:10px;opacity:0;transition:opacity .3s ease}.kiosk-pin-error.show{opacity:1}@keyframes kiosk-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-5px)}20%,40%,60%,80%{transform:translate(5px)}}.kiosk-pin-inputs.shake{animation:kiosk-shake .5s ease-in-out}.kiosk-container button[type=submit]{background:linear-gradient(135deg,#4caf50,#45a049);color:#fff;border:none;padding:14px 30px;border-radius:6px;margin:20px 0;cursor:pointer;font-size:16px;font-weight:600;width:100%;transition:all .3s ease;text-transform:uppercase;letter-spacing:.5px;display:flex;align-items:center;justify-content:center;min-height:50px}.kiosk-container button[type=submit]:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #4caf504d}.kiosk-container button[type=submit]:active:not(:disabled){transform:translateY(0)}.kiosk-container button[type=submit]:disabled{background:#ccc;cursor:not-allowed;transform:none;box-shadow:none}.kiosk-loading-spinner{width:20px;height:20px;border:2px solid #ffffff;border-top:2px solid transparent;border-radius:50%;display:inline-block;animation:kiosk-spin 1s linear infinite;margin-right:8px;flex-shrink:0}@keyframes kiosk-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.kiosk-success-message{background:linear-gradient(135deg,#4caf50,#45a049);color:#fff;padding:15px 20px;border-radius:8px;margin:20px 0;text-align:center;font-weight:600;box-shadow:0 4px 12px #4caf504d;display:none;animation:kiosk-slide-down .5s ease-out}@keyframes kiosk-slide-down{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.kiosk-success-message.show{display:block}.kiosk-success-message .kiosk-check-icon{font-size:20px;margin-right:8px}@media (max-width: 480px){.kiosk-container form{padding:20px}.kiosk-pin-digit{width:45px;height:45px;font-size:18px}.kiosk-pin-inputs{gap:8px}}.acct-add-link{display:inline-block;margin-bottom:.75rem;padding:.5rem 1rem;border-radius:8px;background:#1a1a1a;color:#fff;text-decoration:none;font-size:.9rem;font-weight:600}.acct-table{border-collapse:collapse;width:100%}.acct-table th{background:#f9fafb;text-align:left}.acct-back-link{display:inline-block;margin-bottom:.75rem;color:#4b5563;font-size:.9rem}.acct-contact-section{border:1px solid #e5e7eb;border-radius:10px;padding:1rem 1.25rem}.acct-linked-info{font-size:.85rem;color:#6b7280;margin:.35rem 0 0}.mystudents-list{display:flex;flex-direction:column;gap:.75rem}.mystudents-card{border:1px solid #e5e7eb;border-radius:10px;padding:1rem 1.25rem;box-shadow:0 1px 2px #0000000a}.mystudents-name{font-weight:600;font-size:1.05rem}.mystudents-relationship{font-size:.85rem;color:#6b7280;margin-top:.1rem}.mystudents-details{margin-top:.6rem;display:flex;flex-wrap:wrap;gap:.4rem 1.5rem;font-size:.9rem}.mystudents-details dt{color:#6b7280;display:inline}.mystudents-details dd{display:inline;margin-left:.35rem;font-weight:600}.programs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.25rem}.programs-card{border:1px solid #e5e7eb;border-radius:10px;overflow:hidden;box-shadow:0 1px 2px #0000000a;display:flex;flex-direction:column}.programs-card img{width:100%;height:150px;object-fit:cover;display:block}.programs-card-body{padding:1rem 1.25rem;display:flex;flex-direction:column;flex:1}.programs-card-body h3{margin:0 0 .4rem}.programs-card-body p{color:#6b7280;font-size:.9rem;flex:1}.programs-back-link{display:inline-block;margin-bottom:1rem}.programs-form input[readonly]{background:#f3f4f6;color:#6b7280}.myaccount-section{border:1px solid #e5e7eb;border-radius:10px;padding:1.25rem 1.5rem;margin-bottom:1rem;box-shadow:0 1px 2px #0000000a;max-width:480px}#main-content .myaccount-section h2{margin-top:0;font-size:1.1rem}.myaccount-fields{margin:0;display:flex;flex-direction:column;gap:.4rem}.myaccount-fields dt{color:#6b7280;font-size:.85rem;display:inline}.myaccount-fields dd{display:inline;margin:0 0 0 .5rem;font-weight:600}.myaccount-form{display:flex;flex-direction:column;gap:.75rem}.myaccount-form label{display:flex;flex-direction:column;gap:.3rem;font-size:.9rem;color:#374151}.myaccount-form input{padding:.5rem .6rem;border:1px solid #d1d5db;border-radius:6px;font-size:.95rem}.myaccount-save-btn,.myaccount-action-btn{align-self:flex-start;padding:.5rem 1rem;border-radius:8px;border:none;background:#1a1a1a;color:#fff;font-size:.9rem;font-weight:600;cursor:pointer}.myaccount-save-btn:hover,.myaccount-action-btn:hover{background:#333}.myaccount-status{font-size:.85rem;color:#6b7280;margin:.5rem 0 0}.myaccount-toggle{display:flex;align-items:center;gap:.5rem;font-size:.95rem}.courses-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1.25rem}.courses-card{display:block;border:1px solid #e5e7eb;border-radius:10px;padding:1rem 1.25rem;box-shadow:0 1px 2px #0000000a;text-decoration:none;color:inherit}.courses-card:hover{border-color:#9ca3af;background:#f9fafb}.courses-card-name{font-weight:600;font-size:1.1rem}.courses-card-meta{font-size:.85rem;color:#6b7280;margin-top:.2rem}.courses-detail-meta{color:#6b7280;margin-top:-.75rem}.courses-section{margin-top:1.5rem}.courses-section-heading{font-size:1.1rem;font-weight:600;cursor:pointer;user-select:none;padding:.25rem 0}.courses-section-heading::marker{color:#6b7280}.courses-note-text{white-space:pre-wrap;margin-bottom:.5rem}.courses-note-textarea{width:100%;max-width:480px;font-family:inherit;font-size:.95rem;padding:.5rem;border:1px solid #d1d5db;border-radius:6px;margin-bottom:.5rem}.courses-table-wrap{border:1px solid #e5e7eb;border-radius:10px;overflow:hidden;box-shadow:0 1px 2px #0000000a}.courses-table{width:100%;border-collapse:collapse}.courses-table th{text-align:left;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:#6b7280;background:#f9fafb;padding:.6rem .85rem;border-bottom:1px solid #e5e7eb}.courses-table td{padding:.55rem .85rem;border-bottom:1px solid #f1f2f4;font-size:.92rem}.courses-table tbody tr:last-child td{border-bottom:none}.courses-table tbody tr:hover td{background:#fafafa}.courses-col-grade,.courses-col-status{text-align:center;width:1%;white-space:nowrap}.courses-name-link{font-weight:600;color:#1a1a1a;text-decoration:none}.courses-name-link:hover{text-decoration:underline}.courses-note-preview{color:#6b7280}.courses-contact-name{font-weight:600}
