*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--brown-900: #3e2723;--brown-800: #4e342e;--brown-700: #5d4037;--brown-600: #6d4c41;--brown-500: #795548;--brown-400: #8d6e63;--brown-300: #a1887f;--brown-200: #bcaaa4;--brown-100: #d7ccc8;--brown-50: #efebe9;--gold-600: #a68a3e;--gold-500: #c9a84c;--gold-400: #d4b95e;--gold-300: #e0ca7e;--gold-200: #ecdaa4;--gold-100: #f5ecd0;--gold-50: #faf6eb;--green-600: #2e7d32;--green-100: #c8e6c9;--red-600: #c62828;--red-100: #ffcdd2;--yellow-100: #fff9c4;--yellow-600: #f9a825;--white: #fff;--gray-100: #f5f5f5;--gray-200: #eee;--gray-300: #e0e0e0;--gray-500: #9e9e9e;--gray-700: #616161;--text: var(--brown-900);--text-muted: var(--brown-400);--bg: var(--gold-50);--bg-card: var(--white);--border: var(--brown-100);--accent: var(--brown-700);--accent-hover: var(--brown-600);--radius: 8px;--shadow: 0 1px 3px rgba(0, 0, 0, .08);--shadow-md: 0 4px 12px rgba(0, 0, 0, .1)}html{font-size:16px;-webkit-font-smoothing:antialiased}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:var(--text);background:var(--bg);line-height:1.5;min-height:100vh}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.shell{display:flex;flex-direction:column;min-height:100vh}.topbar{background:var(--brown-800);color:var(--gold-100);padding:.75rem 1.5rem;display:flex;align-items:center;justify-content:space-between;box-shadow:var(--shadow-md)}.topbar h1{font-size:1.25rem;font-weight:600;letter-spacing:.02em}.topbar nav{display:flex;gap:1rem;align-items:center}.topbar a{color:var(--gold-200);font-size:.85rem;font-weight:500;padding:.35rem .7rem;border-radius:var(--radius);background:#ffffff0a;border:1px solid rgba(255,255,255,.06);transition:background .15s,color .15s,border-color .15s}.topbar a:hover{color:var(--gold-100);text-decoration:none;background:#ffffff1f;border-color:#ffffff2e}.topbar a.topbar-title{padding:0;background:none;border:none;color:var(--gold-100)}.topbar a.topbar-title:hover{background:none;border:none;opacity:.85}.topbar .user-info{color:var(--brown-200);font-size:.85rem}.active-teacher-badge{display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .8rem;background:var(--gold-500);color:var(--brown-900);border-radius:999px;font-weight:700;font-size:.85rem;letter-spacing:.01em;white-space:nowrap}.topbar .btn-logout{background:#ffffff1a;color:var(--gold-200);border:1px solid rgba(255,255,255,.15)}.topbar .btn-logout:hover{background:#fff3;color:var(--white)}.main-content{flex:1;padding:1rem;max-width:1100px;width:100%;margin:0 auto}@media(min-width:768px){.main-content{padding:1.25rem 1.5rem}}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;box-shadow:var(--shadow)}@media(min-width:768px){.card{padding:1.25rem}}.card+.card{margin-top:.75rem}.card h2{font-size:1.1rem;color:var(--brown-700);margin-bottom:.75rem}.btn{display:inline-flex;align-items:center;justify-content:center;text-align:center;gap:.4rem;padding:.5rem 1rem;border:none;border-radius:var(--radius);font-size:.9rem;font-family:inherit;cursor:pointer;transition:background .15s,box-shadow .15s}.btn-primary{background:var(--accent);color:var(--white)}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{background:var(--brown-50);color:var(--brown-800)}.btn-secondary:hover{background:var(--brown-200)}.btn-danger{background:var(--red-600);color:var(--white)}.btn-danger:hover{background:#b71c1c}.btn-sm{padding:.3rem .7rem;font-size:.8rem}label{display:block;font-size:.85rem;font-weight:500;color:var(--brown-700);margin-bottom:.25rem}input[type=text],input[type=email],input[type=password],input[type=number],select,textarea{width:100%;padding:.5rem .75rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.9rem;font-family:inherit;background:var(--white);color:var(--text);transition:border-color .15s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px #5d403726}.form-group{margin-bottom:1rem}.form-row{display:flex;gap:1rem}.form-row>*{flex:1}.badge{display:inline-block;padding:.15rem .5rem;border-radius:999px;font-size:.75rem;font-weight:600}.badge-success{background:var(--green-100);color:var(--green-600)}.badge-warning{background:var(--yellow-100);color:var(--brown-600)}.badge-danger{background:var(--red-100);color:var(--red-600)}.badge-muted{background:var(--gray-200);color:var(--gray-700)}table{width:100%;border-collapse:collapse}th,td{padding:.6rem .75rem;text-align:left;border-bottom:1px solid var(--gray-200)}th{font-size:.8rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}tr:hover td{background:var(--gold-50)}.text-muted{color:var(--text-muted)}.text-center{text-align:center}.mt-1{margin-top:.5rem}.mt-2{margin-top:1rem}.mt-3{margin-top:1.5rem}.mb-1{margin-bottom:.5rem}.mb-2{margin-bottom:1rem}.flex{display:flex}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-1{gap:.5rem}.gap-2{gap:1rem}.alert{padding:.65rem .85rem;border-radius:var(--radius);font-size:.9rem;margin-bottom:.85rem}.alert-error{background:var(--red-100);color:var(--red-600)}.alert-success{background:var(--green-100);color:var(--green-600)}.alert-info{background:var(--gold-100);color:var(--brown-800);border-left:3px solid var(--gold-500)}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.page-header h2,.page-title{font-size:1.3rem;color:var(--brown-800)}.subtitle{color:var(--text-muted);font-size:.9rem}.header-actions{display:flex;gap:.5rem}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.card-header h2{margin-bottom:0}.card-meta{color:var(--text-muted);margin-top:.5rem;font-size:.9rem}.card-badge-row{display:flex;gap:.5rem;margin-bottom:1rem}.status-row{display:flex;gap:.5rem;align-items:center}.empty-state{text-align:center;padding:2rem}.empty-state p{color:var(--text-muted)}.form-actions{margin-top:1.5rem}.form-actions .btn{width:100%}.account-menu{position:relative}.account-menu-trigger{border:none;font-family:inherit;cursor:pointer}.account-menu-trigger:hover{background:var(--gold-400)}.account-menu-trigger:focus-visible{outline:2px solid var(--brown-900);outline-offset:2px}.account-menu-trigger svg{width:1em;height:1em}.account-menu-panel{position:absolute;right:0;top:calc(100% + .5rem);z-index:60;width:20rem;max-width:calc(100vw - 2rem);max-height:min(32rem,85vh);overflow-y:auto;padding:1rem;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-md);color:var(--text)}.account-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding-bottom:.6rem;margin-bottom:.6rem;border-bottom:1px solid var(--border)}.account-row-name{font-size:.85rem;color:var(--text-muted)}.account-row-actions{display:flex;gap:.35rem}.account-menu-section{display:flex;align-items:center;justify-content:space-between;margin:.75rem 0 .5rem;font-size:.85rem;font-weight:600;color:var(--brown-700)}.inline-form{margin:.75rem 0 0;padding:.85rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--gold-50)}.inline-form-compact{margin-top:0}.inline-form-row{display:flex;gap:.75rem;align-items:flex-end;flex-wrap:wrap}.inline-form-field{flex:1 1 16rem;margin-bottom:0}.inline-form-actions{display:flex;gap:.5rem;flex-wrap:wrap}.danger-form{background:#fff7f7;border-color:#f0b6b6}.warning-copy{margin:0 0 .85rem;color:var(--red-600)}.teacher-list{list-style:none;padding:0;margin:0 0 .5rem}.teacher-list-item{display:flex;align-items:center;gap:.5rem;padding:.35rem .6rem;border-bottom:1px solid var(--gray-200);flex-wrap:wrap;border-radius:var(--radius)}.teacher-list-item:last-child{border-bottom:none}.teacher-list-name{font-weight:500;display:flex;align-items:center;gap:.4rem;min-width:0}.teacher-list-item.teacher-switchable{cursor:pointer}.teacher-list-item.teacher-switchable:hover{background:var(--gold-100)}.teacher-list-actions{margin-left:auto;display:flex;gap:.35rem}.teacher-active-badge{font-size:.7rem}.teacher-list-item .inline-form{width:100%;margin:0 0 .35rem}.login-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;box-shadow:var(--shadow);max-width:400px;margin:2rem auto}.login-card h2{font-size:1.1rem;color:var(--brown-700);margin-bottom:.75rem}.topbar-title{color:inherit;text-decoration:none}.topbar-title:hover{text-decoration:none;opacity:.85}.class-section{margin-top:.75rem}.class-section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.6rem;flex-wrap:wrap;gap:.5rem}.class-section-header h2{margin-bottom:0;font-size:1.05rem}.class-section-tools{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.student-table th,.student-table td{padding:.45rem .6rem}.student-table th:last-child,.student-table td:last-child{white-space:nowrap;text-align:right}.student-table tr.row-link{cursor:pointer}.student-table tr.row-link:hover td{background:var(--gold-100)}.student-table tr.inline-table-row td,.student-table tr.inline-table-row:hover td{background:transparent}.student-table tbody tr td:first-child{border-top-left-radius:var(--radius);border-bottom-left-radius:var(--radius)}.student-table tbody tr td:last-child{border-top-right-radius:var(--radius);border-bottom-right-radius:var(--radius)}.table-actions{display:flex;gap:.4rem;justify-content:flex-end}.btn-icon{display:inline-flex;align-items:center;justify-content:center;padding:.35rem .5rem}.btn-icon svg{width:1.35em;height:1.35em}@media(max-width:600px){.student-table th:nth-child(4),.student-table td:nth-child(4),.student-table th:nth-child(5),.student-table td:nth-child(5){display:none}.inline-form-actions{width:100%}.inline-form-actions .btn{flex:1 1 auto}}.date-picker{display:flex;gap:.4rem;align-items:center}input[type=date]{width:auto;padding:.55rem .85rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--white);color:var(--text);font-family:inherit;font-size:1rem;line-height:1.2;transition:border-color .15s;cursor:pointer;min-height:2.5rem}input[type=date]:hover{border-color:var(--brown-300)}input[type=date]:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px #5d403726}input[type=date]::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.55;filter:invert(20%) sepia(30%) saturate(600%) hue-rotate(340deg);transition:opacity .15s}input[type=date]::-webkit-calendar-picker-indicator:hover{opacity:1}.date-picker input[type=date]{font-size:1rem}.segmented{display:inline-flex;border:1px solid var(--border);border-radius:var(--radius);background:var(--gold-50);padding:2px;gap:2px}.segmented input[type=radio]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.segmented-option{display:inline-flex;align-items:center;justify-content:center;padding:.4rem 1rem;min-width:5.5rem;border-radius:calc(var(--radius) - 2px);font-size:.85rem;font-weight:500;color:var(--text-muted);cursor:pointer;user-select:none;margin-bottom:0;transition:background .15s,color .15s,box-shadow .15s}.segmented-option:hover{color:var(--brown-700)}.segmented input[type=radio]:checked+.segmented-present{background:var(--green-100);color:var(--green-600);box-shadow:var(--shadow)}.segmented input[type=radio]:checked+.segmented-absent{background:var(--red-100);color:var(--red-600);box-shadow:var(--shadow)}.segmented input[type=radio]:focus-visible+.segmented-option{outline:2px solid var(--accent);outline-offset:1px}.sections-grid{display:grid;grid-template-columns:1fr;gap:.75rem}@media(min-width:900px){.sections-grid{grid-template-columns:repeat(2,1fr)}.sections-grid>.section-card:first-child{grid-column:1 / -1}}.entry-fieldset{border:none;padding:0;margin:0}.entry-fieldset.is-disabled{opacity:.5}.attendance-row{display:flex;flex-wrap:wrap;gap:.75rem 1.25rem;align-items:flex-end;margin-bottom:1rem}.attendance-row>.form-group{margin-bottom:0}.absent-note{margin:0;padding-bottom:.5rem;color:var(--text-muted);font-style:italic;font-size:.9rem}.score-hint{color:var(--text-muted);font-weight:400}.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}@media(max-width:600px){.topbar{padding:.6rem .85rem;flex-wrap:wrap;gap:.5rem}.topbar nav{gap:.65rem;flex-wrap:wrap}.topbar h1{font-size:1.1rem}}.student-settings-form .settings-subhead{margin:.85rem 0 .4rem;font-size:.9rem;font-weight:600;color:var(--brown-700)}.expectations-table{width:100%;border-collapse:collapse;margin-bottom:.85rem}.expectations-table th,.expectations-table td{padding:.3rem .5rem;border-bottom:1px solid var(--border);text-align:left;font-size:.85rem}.expectations-table thead th{color:var(--text-muted);font-weight:500}.expectations-table input[type=number],.expectations-table select{width:100%;max-width:8rem;padding:.3rem .5rem;font-size:.85rem}.report-controls{margin-bottom:1rem}.report-pickers{display:flex;gap:.75rem;align-items:flex-end;flex-wrap:wrap}.picker-inline{display:flex;flex-direction:column;gap:.2rem;margin-bottom:0}.picker-inline span{font-size:.8rem;color:var(--text-muted);font-weight:500}.picker-inline input[type=month]{min-width:9rem;padding:.4rem .6rem;font-size:.9rem}input[type=month]{width:auto;padding:.55rem .85rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--white);color:var(--text);font-family:inherit;font-size:1rem;cursor:pointer;min-height:2.5rem}.report-sheet{background:var(--white);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;box-shadow:var(--shadow);max-width:820px;margin:0 auto}.report-header{text-align:center;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}.report-header .report-month{font-size:1.5rem;font-weight:700;color:var(--brown-900);margin-bottom:.35rem}.report-header .report-line{font-size:.95rem;color:var(--brown-700)}.report-header .report-student{font-size:1.2rem;font-weight:600;color:var(--brown-900);margin:.25rem 0}.report-section{margin-bottom:1.75rem}.report-section:last-of-type{margin-bottom:.75rem}.report-section-title{font-size:.85rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--brown-600);margin-bottom:.65rem}.expectation-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:.75rem}.expectation-card{background:var(--gold-50);border:1px solid var(--gold-200);border-radius:var(--radius);padding:.85rem 1rem;display:flex;flex-direction:column;gap:.4rem}.expectation-card-title{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--brown-600)}.expectation-card-qty{display:flex;align-items:baseline;gap:.35rem}.expectation-card-qty-n{font-size:1.85rem;font-weight:700;color:var(--brown-900);line-height:1}.expectation-card-qty-u{font-size:.85rem;color:var(--text-muted)}.expectation-card-mistakes{font-size:.8rem;color:var(--brown-700);display:flex;align-items:center;gap:.35rem}.expectation-card-mistakes .dot{color:var(--gold-600);font-size:.7rem}.stat-list{display:flex;flex-direction:column;gap:.85rem}.stat-item{display:flex;flex-direction:column;gap:.3rem}.stat-item.stat-empty .stat-bar-fill{background:var(--gray-300)}.stat-head{display:flex;justify-content:space-between;align-items:baseline;gap:.75rem;font-size:.9rem}.stat-label{color:var(--brown-800)}.stat-value{font-weight:600;color:var(--brown-900);white-space:nowrap}.stat-bar{height:.65rem;background:var(--gray-200);border-radius:999px;overflow:hidden}.stat-bar-fill{height:100%;border-radius:999px;transition:width .25s ease-out}.stat-bar-good .stat-bar-fill{background:var(--green-600)}.stat-bar-bad .stat-bar-fill{background:var(--red-600)}.stat-bar-neutral .stat-bar-fill{background:var(--brown-500)}.position-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:.75rem}.position-cell{background:var(--gold-50);border:1px solid var(--gold-200);border-radius:var(--radius);padding:.65rem .85rem}.position-label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--brown-600);margin-bottom:.2rem}.position-value{font-size:1.05rem;font-weight:600;color:var(--brown-900)}.report-footnote{font-size:.8rem;margin-top:.5rem}@media print{.no-print,.topbar{display:none!important}body{background:var(--white)}.main-content{padding:0;max-width:none}.report-sheet{border:none;box-shadow:none;padding:0;max-width:none}.expectation-card,.position-cell{background:#faf6eb!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.stat-bar,.stat-bar-fill{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
