:root{font:16px/1.5 Inter,"Segoe UI",Arial,sans-serif;color:#172b44;background:#f3f6fa}*{box-sizing:border-box}body{margin:0}h1{font-size:clamp(1.8rem,3vw,2.6rem);line-height:1.15;margin:.3rem 0}h2{font-size:1.22rem;margin:.15rem 0 .3rem}p{color:#596a7d;margin:.2rem 0 1.1rem}a{color:#15537a;text-decoration:none}a:hover{text-decoration:underline}.top{background:#112941;color:white;min-height:75px;display:flex;justify-content:space-between;align-items:center;padding:12px clamp(18px,4vw,58px);gap:16px;border-bottom:4px solid #d1a25a}.brand{display:flex;gap:12px;align-items:center;letter-spacing:.07em}.brand small{font-size:.68rem;display:block;color:#cfdae6}.mark{display:grid;place-items:center;background:#d1a25a;color:#112941;width:43px;height:43px;font-size:1.35rem;font-weight:800;border-radius:9px}.topright{display:flex;gap:18px;align-items:center;font-size:.87rem;color:#d8e4f2}main{max-width:1640px;margin:auto;padding:clamp(20px,3vw,48px)}.heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:22px}.eyebrow{color:#476c87;font-size:.72rem;font-weight:700;letter-spacing:.12em;margin:0 0 10px}.heading h1{margin:0 0 9px}.grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(310px,1fr);gap:20px;align-items:start}.stack{display:grid;gap:20px}.card{background:white;border:1px solid #dbe5ee;border-radius:12px;box-shadow:0 4px 20px rgba(15,42,67,.035);padding:clamp(20px,2.1vw,30px);min-width:0}.auth{max-width:470px;margin:8vh auto}.auth h1{margin:0 0 13px}.alert{background:#e7f5ef;color:#0a624e;border:1px solid #bfe6d4;border-radius:9px;padding:12px 16px;margin-bottom:16px}.alert.error{background:#fff0ee;color:#a02d27;border-color:#f3cac6}.sectionhead{display:flex;justify-content:space-between}.search{display:flex;gap:8px;margin:18px 0}label{display:block;font-size:.81rem;color:#476079;font-weight:650;margin:15px 0 0}input,select{display:block;width:100%;font:inherit;padding:10px 12px;margin:6px 0 0;color:#1c304a;background:#fcfdff;border:1px solid #bdcad7;border-radius:7px;min-height:43px}input:focus,select:focus{outline:2px solid #2f81af;outline-offset:1px}input[type=file]{padding:8px}.search input{margin:0}button,.button{display:inline-flex;align-items:center;justify-content:center;cursor:pointer;border:1px solid transparent;border-radius:7px;min-height:42px;padding:9px 16px;font-family:inherit;font-size:.87rem;font-weight:650;line-height:1.2;text-decoration:none;margin:14px 0 0}.button{margin:0}.primary{color:white;background:#135874}.primary:hover{background:#0c415b;text-decoration:none}.secondary{color:#145577;background:#e9f3f8;border-color:#d6e8f1}.secondary:hover{background:#d8ebf4}.danger{color:#a43837;border-color:#f0d5d4;background:#fff6f5}.quiet{color:#cfe3ef;background:transparent;padding:5px 9px;min-height:30px;margin:0}.card .quiet{color:#205b78}.check{display:flex;align-items:center;gap:9px}.check input{width:17px;height:17px;min-height:0;margin:0}.tablewrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;font-size:.86rem;min-width:600px}th{text-transform:uppercase;letter-spacing:.06em;color:#667e95;font-size:.71rem;background:#f5f8fb}td,th{border-bottom:1px solid #e8edf3;padding:13px 9px}tr:hover td{background:#f7fafc}.empty{text-align:center;color:#687f92;padding:32px}.pill{display:inline-block;border-radius:99px;padding:4px 9px;background:#f3f0e9;color:#8b681f;font-size:.72rem}.pill.green{background:#e0f4ec;color:#137052}.gallery{display:flex;flex-wrap:wrap;gap:10px}.gallery>div{width:108px}.gallery img{height:108px;width:108px;object-fit:cover;border:1px solid #dce5ed;border-radius:7px}.gallery button{font-size:.71rem}.small{font-size:.79rem;margin:10px 0 0}.token{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #edf0f4;margin-top:14px;padding-top:10px}.keybox{background:#e8f5ef;padding:11px;border-radius:6px;word-break:break-all;font-size:.82rem}.keybox code{display:block;font-size:.85rem;color:#064b31}footer{text-align:center;color:#8495a4;padding:18px}@media(max-width:1000px){.grid{grid-template-columns:1fr}.stack{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:700px){.stack{grid-template-columns:1fr}.heading{align-items:flex-start;flex-direction:column}.topright span{display:none}.card{padding:18px}main{padding:16px}}

.heading-actions{display:flex;flex-wrap:wrap;gap:10px}.headerlink{color:#e4f1fa}.capture-toolbar{margin-bottom:20px}.capture-toolbar .search{align-items:end;flex-wrap:wrap}.capture-toolbar .search label{margin:0;min-width:220px}.capture-toolbar .search button{margin:0}.capture-toolbar .quiet-link{margin:0;color:#195571}.captures-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(245px,1fr));gap:17px}.capture-tile{overflow:hidden;border:1px solid #dbe5ee;border-radius:11px;background:white;box-shadow:0 3px 17px rgba(15,42,67,.04)}.capture-img{display:block;width:100%;height:220px;object-fit:cover;background:#e8edf3}.capture-empty{display:grid;place-items:center;color:#61748b;font-size:.85rem}.capture-meta{padding:16px}.capture-meta h2{margin:12px 0 2px;overflow-wrap:anywhere}.capture-meta p{font-size:.82rem;margin:3px 0 13px}.capture-meta strong{color:#15627a;font-size:.89rem}.capture-no-results{grid-column:1/-1;text-align:center;padding:50px}

[hidden]{display:none!important}.grade-options{display:flex;flex-wrap:wrap;gap:8px 15px;border:1px solid #dbe5ee;border-radius:8px;margin:15px 0 2px;padding:10px 14px}.grade-options legend{color:#45637c;font-size:.82rem;font-weight:700}.grade-options .check{margin:0;white-space:nowrap}.account-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;padding:12px 0;border-top:1px solid #e6edf3}.account-row .teacher-assign{flex:1 0 100%}.teacher-assign .grade-options{margin:2px 0}.teacher-assign button{margin:7px 0}.account-row form:not(.teacher-assign) button{margin:0}
.sf2-main{max-width:1920px;padding:clamp(12px,2vw,32px)}.sf2-toolbar{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:14px;margin-bottom:16px}.sf2-filters{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.sf2-filters label{margin:0;min-width:185px}.sf2-filters button{margin:0}.sf2-paper{background:#fff;color:#172b44;border:1px solid #dce6ef;border-radius:10px;padding:clamp(12px,2vw,28px);box-shadow:0 4px 20px rgba(15,42,67,.04)}.sf2-title{text-align:center;padding-bottom:12px}.sf2-title h2{font-size:1.35rem;margin:4px 0}.sf2-title p{margin:0;color:#4e647a;font-size:.8rem}.sf2-title small{color:#688096}.sf2-head{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 22px;border-top:2px solid #173c5b;border-bottom:1px solid #cbd9e4;padding:12px 0;margin-bottom:16px;font-size:.85rem}.sf2-head>div{display:flex;gap:8px;align-items:baseline}.sf2-head strong{color:#58728c;font-size:.72rem;text-transform:uppercase}.sf2-head span{overflow-wrap:anywhere}.sf2-settings{padding:15px;margin:12px 0}.sf2-settings summary,.sf2-excluded summary{cursor:pointer;font-weight:700;color:#185b78}.sf2-settings-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:8px 14px;align-items:end}.sf2-settings-form label{margin:0}.sf2-settings-form button{margin:0}.sf2-note{padding:10px 14px;margin:14px 0;background:#f1f7fb;border-left:4px solid #147496;border-radius:5px;color:#3d5369;font-size:.81rem}.sf2-scroller{overflow:auto;max-height:min(72vh,950px);border:1px solid #b5c6d4}.sf2-table{border-collapse:collapse;table-layout:fixed;min-width:max-content;font-size:.72rem;line-height:1.25}.sf2-table th,.sf2-table td{border:1px solid #bdcbd8;padding:4px;text-align:center}.sf2-table th{background:#eaf2f7;color:#14354e;letter-spacing:0;text-transform:none}.sf2-table thead th{position:sticky;top:0;z-index:1}.sf2-table .sf2-student{position:sticky;left:28px;z-index:2;width:205px;min-width:205px;max-width:205px;text-align:left;background:#fff}.sf2-table thead .sf2-student{z-index:4;background:#eaf2f7}.sf2-table .sf2-number{position:sticky;left:0;z-index:2;min-width:28px;width:28px;background:#fff}.sf2-table thead .sf2-number{z-index:4;background:#eaf2f7}.sf2-table .sf2-student strong{display:block;overflow-wrap:anywhere}.sf2-table .sf2-student small{display:block;color:#648097;font-size:.66rem}.sf2-table .sf2-student a{font-size:.67rem}.sf2-table .sf2-date,.sf2-table .sf2-cell{min-width:38px;width:38px}.sf2-table .sf2-off{background:#eef1f4;color:#8092a3}.sf2-table .pending{background:#fffaea}.sf2-table .sf2-remarks{min-width:230px;width:230px;text-align:left;vertical-align:top}.sf2-table .sf2-remarks span{display:block;max-width:220px;overflow-wrap:anywhere}.sf2-table .sf2-remarks small{color:#687f95;display:block}.sf2-table .sf2-total{font-weight:700}.sf2-table .sf2-subtotal th,.sf2-table .sf2-subtotal td{background:#eef5fa;font-weight:700}.sf2-table .sf2-subtotal.combined th,.sf2-table .sf2-subtotal.combined td{background:#dcecf4}.sf2-table .screen-mark{font-weight:750;color:#184f6c;font-size:.82rem}.sf2-table .pending .screen-mark{color:#a2781a}.day-toggle{min-height:0;padding:0;margin:0;border:0;background:transparent;color:#164862;font-size:.77rem}.mark-form{margin:0;height:1px;position:relative;top:-3px}.mark-select{display:block;border:0;opacity:.15;padding:0;width:38px;height:16px;min-height:16px;margin:0;cursor:pointer;font-size:.6rem}.mark-select:focus,.mark-select:hover{opacity:1;outline:2px solid #17729a;width:145px;position:relative;z-index:5;background:white}.sf2-cell:hover .mark-select{opacity:1}.roster-form{min-width:210px}.roster-form label{font-size:.69rem;margin:7px 0}.roster-form input,.roster-form select,.roster-form textarea{min-height:32px;font-size:.78rem;padding:5px}.roster-form button{margin:7px 0}.sf2-lower{display:grid;grid-template-columns:1fr 1fr;gap:24px;padding:20px 0}.sf2-lower h3{font-size:.95rem;margin:0 0 8px}.sf2-lower p{font-size:.78rem}.sf2-summary{display:grid;grid-template-columns:1fr auto;margin:0;font-size:.77rem;gap:3px 10px}.sf2-summary dt,.sf2-summary dd{margin:0;padding:4px;border-bottom:1px solid #e5edf2}.sf2-summary dd{text-align:right;font-weight:700}.sf2-signatures{display:flex;justify-content:space-around;gap:20px;text-align:center;padding:18px 0 5px;border-top:1px solid #d9e5ed}.sf2-signatures p{font-size:.73rem}.sf2-signatures strong{display:inline-block;min-height:25px;margin-top:9px}.sf2-excluded{margin-top:20px}.print-only{display:none}
@media(max-width:900px){.sf2-head{grid-template-columns:repeat(2,minmax(0,1fr))}.sf2-lower{grid-template-columns:1fr}}@media(max-width:600px){.sf2-head{grid-template-columns:1fr}.sf2-title h2{font-size:1.1rem}.sf2-filters label{min-width:100%}}
@page{size:A3 landscape;margin:9mm}@media print{body{background:#fff;color:#000;font:8px/1.2 Arial,sans-serif}.no-print,header.top,footer,.sf2-toolbar,.sf2-settings,.mark-form,.day-toggle,.sf2-student a,.sf2-remarks details,.screen-mark,.sf2-note{display:none!important}.print-only{display:inline!important}main.sf2-main{max-width:none;padding:0}.sf2-paper{padding:0;border:0;border-radius:0;box-shadow:none}.sf2-title h2{font-size:14px}.sf2-title p,.sf2-title small{font-size:8px}.sf2-head{grid-template-columns:repeat(3,1fr);gap:2px;padding:5px 0;margin-bottom:5px;font-size:8px}.sf2-head strong{font-size:7px}.sf2-scroller{max-height:none;overflow:visible;border:0}.sf2-table{table-layout:fixed;min-width:0;width:100%;font-size:6px}.sf2-table thead{display:table-header-group}.sf2-table th,.sf2-table td{padding:1px;border:1px solid #333;color:#000}.sf2-table tr{break-inside:avoid}.sf2-table .sf2-number{position:static;width:24px;min-width:0}.sf2-table .sf2-student{position:static;width:166px;min-width:0;max-width:none;background:white}.sf2-table .sf2-student small{font-size:5px}.sf2-table .sf2-date,.sf2-table .sf2-cell{min-width:0;width:auto}.sf2-table .sf2-remarks{min-width:0;width:148px}.sf2-table .sf2-remarks span{max-width:none}.sf2-table .sf2-off{background:#e7e7e7!important}.sf2-table .pending{background:white}.sf2-lower{grid-template-columns:1fr 1fr;gap:10px;padding:6px 0}.sf2-lower h3{font-size:8px;margin:0}.sf2-lower p,.sf2-summary,.sf2-signatures p{font-size:7px;margin:3px 0}.sf2-summary dt,.sf2-summary dd{padding:1px}.sf2-signatures{padding:5px 0}.sf2-signatures strong{min-height:20px}}
.sf2-summary-table{min-width:0;width:100%;font-size:.72rem}.sf2-summary-table th,.sf2-summary-table td{border:1px solid #d6e2ea;padding:4px 6px;text-align:center}.sf2-summary-table th:first-child{text-align:left}.sf2-summary-table thead th{background:#eaf2f7}@media print{.sf2-summary-table{min-width:0;font-size:6px}.sf2-summary-table th,.sf2-summary-table td{padding:1px 3px;border-color:#333}}
.account-reset{flex:1 0 100%;display:flex;align-items:end;gap:10px}.account-reset label{flex:1;margin:0}.account-reset button{margin:0!important;min-width:130px}
@media print{.sf2-table thead th{position:static}.sf2-table .sf2-off{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
