:root,.td-app,.td-login-shell,.td-site{color:var(--td-ink);font-family:Inter,"Segoe UI",Arial,sans-serif;font-size:14px;line-height:1.45;box-sizing:border-box;--td-ink:#1b2733;--td-muted:#6b7886;--td-line:#e4e8ee;--td-paper:#f4f6f9;--td-wash:#f4f6f9;--td-card:#fff;--td-chip:#eef2f7;--td-input:#fbfcfd;--td-navy:#1f3b5a;--td-blue:#2f6db3;--td-amber:#f2b33d;--td-teal:#2e9e6a;--td-red:#d94b4b;--td-okbg:#e3f5ec;--td-warnbg:#fdf0d8;--td-badbg:#fdecec;--td-r:16px;--td-sh:0 1px 2px rgba(20,30,50,.06),0 4px 14px rgba(20,30,50,.06);--td-green:#2f6db3;--td-dark:#1f3b5a;--td-lime:#f2b33d}.td-app *,.td-login-shell *{box-sizing:border-box}.td-app{min-height:780px;background:var(--td-wash);display:flex;border:1px solid var(--td-line);border-radius:14px;overflow:hidden;box-shadow:0 10px 40px #1c222d0b}.td-app h1,.td-app h2,.td-app h3,.td-login-shell h1,.td-login-shell h2{font-family:inherit;color:var(--td-ink);letter-spacing:-.035em}.td-app a{text-decoration:none}.td-sidebar{width:245px;flex:0 0 245px;padding:24px 16px 14px;background:#ffffff;border-right:1px solid var(--td-line);display:flex;flex-direction:column;min-height:780px}.td-brand{display:flex;gap:10px;align-items:center;padding:0 6px 28px;color:var(--td-ink);font-size:17px;font-weight:800;letter-spacing:-.04em}.td-brand strong{color:var(--td-green)}.td-brand small{display:block;color:#9c9ea1;font-size:8px;letter-spacing:1.35px;margin-top:4px}.td-brand-mark{width:39px;height:39px;border-radius:13px;background:var(--td-navy);color:var(--td-amber);display:grid;place-items:center;font-size:13px;letter-spacing:0}.td-nav-label{padding:0 10px 9px;font-size:9px;letter-spacing:1.5px;font-weight:800;color:#a4a6a9}.td-admin-label{margin-top:18px}.td-nav{display:grid;gap:4px}.td-nav a{padding:10px 11px;display:flex;align-items:center;gap:11px;border-radius:9px;color:#76787b;font-size:12px;font-weight:650}.td-nav a>span{width:20px;text-align:center;font-size:17px;color:#8e9092}.td-nav a:hover{background:#f8f7f5;color:var(--td-ink)}.td-nav a.active{background:#eaeef5;color:var(--td-blue)}.td-nav a.active>span{color:var(--td-blue)}.td-sidebar-bottom{margin-top:auto}.td-term{background:#f5f6f7;border:1px solid #eaebec;padding:12px;border-radius:11px;margin:0 0 13px}.td-term small,.td-term b,.td-term span{display:block}.td-term small{font-size:8px;letter-spacing:1px;color:#8b8d90}.td-term b{font-size:12px;margin-top:5px}.td-term span{font-size:10px;color:var(--td-green);margin-top:3px}.td-profile{border-top:1px solid var(--td-line);padding:13px 2px 0;display:flex;align-items:center;gap:8px}.td-avatar,.td-top-avatar{width:34px;height:34px;flex:0 0 auto;border-radius:50%;display:grid;place-items:center;background:#e4eaf2;color:var(--td-blue);font-size:10px;font-weight:800}.td-profile>div{min-width:0;flex:1}.td-profile b,.td-profile small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.td-profile b{font-size:10px}.td-profile small{font-size:9px;color:var(--td-muted);margin-top:2px}.td-profile>a{font-size:9px;color:#74777b}.td-main{min-width:0;flex:1;display:flex;flex-direction:column;background:var(--td-wash)}.td-topbar{height:60px;flex:0 0 60px;padding:0 27px;background:#fcfcfa;border-bottom:1px solid var(--td-line);display:flex;align-items:center;justify-content:space-between}.td-topbar>div:first-child{display:flex;gap:9px;align-items:center;color:#898b8e;font-size:10px}.td-topbar>div:first-child b{font-weight:400;color:#c4c5c6}.td-topbar strong{color:#444952;font-weight:700}.td-top-right{display:flex;align-items:center;gap:12px}.td-schoolday{border:1px solid #e6e7e9;background:#ffffff;border-radius:18px;padding:6px 10px;color:#76787b;font-size:9px}.td-schoolday i{width:6px;height:6px;border-radius:50%;display:inline-block;background:var(--td-teal);margin-right:5px}.td-top-avatar{width:29px;height:29px;font-size:9px}.td-content{width:100%;max-width:1320px;padding:27px 29px 40px;margin:0 auto;flex:1}.td-footer{display:flex;justify-content:space-between;border-top:1px solid var(--td-line);padding:12px 28px;background:#fcfcfa;color:#87898b;font-size:9px}.td-footer span{color:#c3c4c6}.td-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin:0 0 20px}.td-heading small,.td-kicker{color:#757d85;font-size:8px;font-weight:800;letter-spacing:1.45px}.td-heading h1{font-size:27px;line-height:1.15;margin:5px 0 5px;font-weight:760}.td-heading p{font-size:11px;color:var(--td-muted);margin:0}.td-actions,.td-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.td-btn{min-height:36px;padding:8px 12px;border:1px solid #e2e4e6;border-radius:8px;background:#ffffff;color:#575c62;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:10px;font-weight:750;cursor:pointer;text-decoration:none}.td-btn:hover{border-color:#b4bbc3;background:#f8f9fa;color:#2c3648}.td-btn.primary{background:var(--td-green);border-color:var(--td-green);color:#ffffff}.td-btn.primary:hover{background:var(--td-dark)}.td-btn.td-danger{color:var(--td-red);border-color:#f0d8d5}.td-toolbar{background:#ffffff;border:1px solid var(--td-line);padding:9px;border-radius:10px;margin-bottom:14px}.td-toolbar form{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.td-toolbar label{font-size:9px;color:var(--td-muted);display:flex;gap:6px;align-items:center}.td-toolbar input,.td-class-picker select,.td-inline-label select{border:1px solid #e3e4e6;border-radius:7px;padding:7px 9px;background:#ffffff;color:var(--td-ink);font-size:10px;min-height:33px}.td-grow{flex:1}.td-class-picker{display:flex;align-items:center;gap:7px}.td-class-picker label{font-size:8px;letter-spacing:1px;font-weight:800;color:#8e9093}.td-panel{background:#ffffff;border:1px solid var(--td-line);border-radius:12px;padding:17px;margin:0 0 14px;box-shadow:0 3px 14px #252a3405}.td-panel h2{font-size:15px;margin:0 0 5px}.td-panel h3{font-size:12px;margin:16px 0 8px}.td-panel p{color:#6b6d71;font-size:11px;line-height:1.6}.td-panel-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px}.td-panel-head h2{margin:0}.td-panel-head p{margin:4px 0 0;color:var(--td-muted);font-size:9px}.td-panel-head>a{font-size:9px;color:var(--td-green);font-weight:700}.td-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:15px}.td-metric{background:white;border:1px solid var(--td-line);border-radius:11px;padding:15px}.td-metric>div{font-size:10px;font-weight:700;color:#7a7c7f}.td-metric strong{display:block;font-size:27px;letter-spacing:-1px;margin:9px 0 3px}.td-metric small{color:#8b8d90;font-size:9px}.td-two-col{display:grid;grid-template-columns:1.25fr .75fr;gap:14px}.td-activity{display:flex;align-items:center;gap:11px;padding:10px 0;border-top:1px solid #eeeff0;color:var(--td-ink)}.td-date{width:36px;height:39px;display:grid;align-content:center;justify-items:center;border-radius:8px;background:#f7f5ee;flex:0 0 auto}.td-date b{font-size:13px}.td-date small{font-size:8px;color:var(--td-muted)}.td-activity>span:nth-child(2){flex:1}.td-activity>span:nth-child(2) b,.td-activity>span:nth-child(2) small{display:block}.td-activity>span:nth-child(2) b{font-size:10px}.td-activity>span:nth-child(2) small{font-size:9px;color:var(--td-muted);margin-top:3px}.td-activity em{font-size:9px;color:var(--td-green);font-style:normal}.td-quick{display:grid;grid-template-columns:1fr 1fr;gap:8px}.td-quick .td-btn{min-height:42px}.td-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.td-scheme-card{background:#ffffff;border:1px solid var(--td-line);border-radius:12px;padding:16px}.td-card-top{display:flex;align-items:center;justify-content:space-between;color:#8f9193;font-size:8px;font-weight:800;letter-spacing:.8px}.td-card-top em{font-style:normal;color:#69717a;background:#f7f3e7;border-radius:16px;padding:4px 7px;font-size:8px;letter-spacing:0}.td-scheme-card h2{font-size:15px;margin:12px 0 4px}.td-scheme-card>p{min-height:33px;margin:10px 0;font-size:10px}.td-subject{font-size:9px;color:#6b737b}.td-book-grid{display:grid;grid-template-columns:1.3fr .8fr .8fr;border:1px solid #eff0f1;border-radius:8px;padding:9px;margin:12px 0}.td-book-grid>div{min-width:0;padding:0 7px;border-right:1px solid #eff0f1}.td-book-grid>div:last-child{border:0}.td-book-grid small,.td-book-grid b{display:block}.td-book-grid small{color:#8f9194;font-size:7px;letter-spacing:.8px;font-weight:800}.td-book-grid b{font-size:9px;margin-top:4px;overflow-wrap:anywhere}.td-progress-label{display:flex;justify-content:space-between;color:#7d7f82;font-size:8px;margin:12px 0 5px}.td-progress{height:5px;border-radius:8px;background:#eeeff1;overflow:hidden}.td-progress i{display:block;height:100%;border-radius:8px;background:var(--td-teal)}.td-entry-form{margin-top:12px}.td-entry-details{margin:13px 0}.td-entry-details>summary,.td-edit-details>summary{list-style:none;cursor:pointer;width:max-content}.td-entry-details>summary::-webkit-details-marker,.td-edit-details>summary::-webkit-details-marker{display:none}.td-edit-details{margin:12px 0 4px}.td-edit-details>summary{font-size:9px;color:var(--td-green);font-weight:750}.td-form{margin:0}.td-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:12px 0}.td-field{display:grid;gap:5px;font-size:9px;color:#65676a;font-weight:700}.td-field input,.td-field select,.td-field textarea,.td-search{width:100%;min-height:37px;border:1px solid #e2e3e5;border-radius:7px;padding:8px 9px;background:#fdfdfb;color:#2c3038;font:inherit;font-size:10px}.td-field textarea{min-height:76px;resize:vertical}.td-wide{grid-column:1/-1}.td-check{display:flex;align-items:center;gap:7px;font-size:9px;color:#65676b;margin:9px 0}.td-check input{accent-color:var(--td-green)}.td-form-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px;color:var(--td-muted);font-size:9px}.td-lesson-list{display:grid}.td-lesson-row{display:flex;align-items:center;gap:11px;padding:11px 0;border-top:1px solid #eeeff0;color:var(--td-ink)}.td-lesson-row>span:nth-child(2){flex:1}.td-lesson-row>span:nth-child(2) b,.td-lesson-row>span:nth-child(2) small{display:block}.td-lesson-row>span:nth-child(2) b{font-size:10px}.td-lesson-row>span:nth-child(2) small{font-size:9px;color:var(--td-muted);margin-top:3px}.td-open{font-size:9px;color:var(--td-green)}.td-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.td-detail-block{border:1px solid #eeeff0;border-radius:8px;padding:10px}.td-detail-block small{font-size:7px;letter-spacing:1px;color:#888a8d;font-weight:800}.td-detail-block p{margin:5px 0 0;white-space:pre-wrap}.td-reference{padding:10px;background:#f9f7f1;border-radius:8px;font-size:9px;margin:10px 0}.td-detail-section{padding:13px 0;border-top:1px solid #eeeff0;margin-top:12px}.td-detail-section h3{margin:0;font-size:12px}.td-homework-ref,.td-muted{font-size:9px;color:var(--td-muted)}.td-homework-row{display:flex;justify-content:space-between;gap:14px;padding:13px 0;border-bottom:1px solid #eeeff0}.td-homework-row h3{margin:5px 0}.td-homework-row p{margin:4px 0}.td-homework-row>div:first-child>small:first-child{font-size:8px;color:#8a8c8f;letter-spacing:.8px}.td-tag{display:inline-flex;border-radius:14px;padding:4px 8px;background:#e6f8f5;color:#0f7a70;font-size:8px;font-weight:750}.td-tag.warn{background:#fff8e3;color:#b08d2c}.td-attendance-chips{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:10px 0}.td-attendance-chips>span{display:flex;justify-content:space-between;gap:7px;background:#f9f8f6;border-radius:6px;padding:6px 8px;font-size:9px}.td-attendance-chips b{font-size:8px;color:#606a76}.td-attendance-chips b.absent{color:#b65f58}.td-attendance-chips b.late{color:#b18d2c}.td-register{border-top:1px solid #eeeff0}.td-register-row{min-height:55px;display:grid;grid-template-columns:1.1fr 1fr minmax(110px,.55fr);align-items:center;gap:12px;border-bottom:1px solid #eeeff0;padding:7px 2px}.td-student{display:flex;align-items:center;gap:9px;font-size:10px}.td-student i{width:29px;height:29px;border-radius:50%;display:grid;place-items:center;background:#f4f1e7;color:#5a6571;font-size:8px;font-style:normal;font-weight:800}.td-status-buttons{display:flex;gap:4px}.td-status{cursor:pointer}.td-status input{position:absolute;opacity:0;pointer-events:none}.td-status span{display:block;border:1px solid #e6e7e8;border-radius:18px;padding:6px 8px;font-size:8px;color:#77797b}.td-status input:checked+span{background:#e6f8f5;border-color:#8fd9d0;color:#0f7a70;font-weight:800}.td-status.absent input:checked+span{background:#fff0ed;border-color:#e9bcb7;color:#ac5048}.td-status.late input:checked+span{background:#fff8e5;border-color:#f5dc96;color:#a3801f}.td-att-note{width:100%;border:1px solid #eeeff0;border-radius:6px;padding:7px;font-size:8px}.td-table-scroll{overflow:auto}.td-table{border-collapse:collapse;width:100%;font-size:10px}.td-table th{text-align:left;color:#87898b;font-size:8px;letter-spacing:.6px;font-weight:800;padding:10px;border-bottom:1px solid #eaebed;white-space:nowrap}.td-table td{padding:10px;border-bottom:1px solid #eeeff0;vertical-align:middle}.td-table td small{display:block;color:#898b8e;font-size:8px}.td-link{border:0;background:none;padding:4px;color:var(--td-green);font-size:9px;font-weight:750;cursor:pointer}.td-inline-edit{display:inline-block;vertical-align:middle}.td-inline-edit>summary{list-style:none;cursor:pointer}.td-inline-edit>summary::-webkit-details-marker{display:none}.td-inline-edit[open]{position:absolute;z-index:9;background:#ffffff;padding:13px;border:1px solid var(--td-line);box-shadow:0 12px 32px #21252d23;border-radius:9px;max-width:min(500px,90vw)}.td-inline-edit .td-entry-details[open]{position:static}.td-student-form{margin:12px 0}.td-student-detail{border-top:1px solid #eeeff0;padding:8px 0;font-size:10px}.td-student-detail summary{cursor:pointer;color:#3b4455;font-weight:750}.td-mark-row{display:flex;justify-content:space-between;padding:7px;border-bottom:1px solid #eeeff0;font-size:9px}.td-mark-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:12px 0}.td-mark-grid label{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:9px}.td-mark-grid input{width:74px;min-height:34px;border:1px solid var(--td-line);border-radius:6px;padding:5px}.td-timetable{border-collapse:collapse;min-width:650px;width:100%;font-size:9px}.td-timetable th,.td-timetable td{border:1px solid #eaebed;padding:9px;text-align:left;vertical-align:top;min-width:90px}.td-timetable th{background:#f5f6f7;color:#66686b}.td-timetable td small,.td-timetable td b{display:block}.td-timetable td small{color:#87898b;font-size:8px;margin-top:3px}.td-inline-label{display:inline-flex;gap:7px;align-items:center;font-size:9px}.td-list>div{display:flex;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid #eeeff0}.td-list small{font-size:9px;color:#86888b}.td-empty{padding:22px;background:#ffffff;border:1px dashed #e1e3e5;border-radius:10px;color:#888a8d;font-size:10px;text-align:center}.td-notice{padding:10px 12px;border-radius:8px;background:#f8f4e8;color:#515c69;font-size:10px;margin-bottom:12px}.td-search{max-width:220px}.td-archive-form{display:inline}.td-audit{font-size:9px}
.td-login-shell{min-height:680px;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(360px,.9fr);background:#f6f5f3;border:1px solid var(--td-line);border-radius:15px;overflow:hidden}.td-login-story{position:relative;min-height:680px;padding:90px clamp(30px,7vw,90px);display:flex;flex-direction:column;justify-content:center;background:radial-gradient(ellipse at 82% 76%,#394255 0,transparent 47%),linear-gradient(145deg,#171b24,#202733 65%,#293141);color:#eff1f3}.td-login-story .td-brand{position:absolute;top:30px;left:clamp(30px,7vw,90px);color:white;padding:0}.td-login-story .td-brand strong{color:#f0d690}.td-login-story .td-brand-mark{background:var(--td-amber);color:var(--td-navy)}.td-kicker{color:#e6d4a1;margin:0 0 15px;text-transform:uppercase}.td-login-story h1{font-size:clamp(38px,5vw,60px);line-height:1.08;letter-spacing:-.06em;color:#ffffff;margin:0}.td-login-story h1 em{font-style:normal;color:#f0d690}.td-login-copy{max-width:470px;color:#cbced2;font-size:13px;line-height:1.7;margin:18px 0 28px}.td-feature{display:flex;align-items:center;gap:11px;margin:9px 0}.td-feature>span{width:30px;height:30px;display:grid;place-items:center;border:1px solid #f0d69055;border-radius:9px;color:#f8de96;font-size:9px;font-weight:800}.td-feature b,.td-feature small{display:block}.td-feature b{font-size:10px;color:#f5f6f7}.td-feature small{font-size:9px;color:#b1b6bc;margin-top:2px}.td-login-card{align-self:center;justify-self:center;width:min(100% - 36px,440px);margin:20px;background:#ffffff;border:1px solid #e8e9eb;border-radius:16px;box-shadow:0 20px 60px #1c222e12;padding:32px}.td-login-card>.td-pill{display:inline-block;border-radius:18px;background:#f8f3e5;color:#54616f;padding:6px 9px;font-size:8px;letter-spacing:1px;font-weight:800}.td-login-card h2{font-size:25px;margin:19px 0 5px}.td-login-card>p{font-size:10px;color:var(--td-muted);margin:0 0 18px}.td-login-card #td-loginform p{margin:0 0 12px}.td-login-card #td-loginform label{display:block;font-size:9px;font-weight:750;color:#585a5d;margin-bottom:5px}.td-login-card #td-loginform input[type=text],.td-login-card #td-loginform input[type=password]{width:100%;height:40px;border:1px solid #e1e3e5;border-radius:8px;padding:0 10px;background:#fcfcfa;font-size:11px}.td-login-card #td-loginform .login-remember label{display:flex;gap:6px;align-items:center;font-weight:500}.td-login-card #td-loginform input[type=submit]{width:100%;height:42px;background:var(--td-green);border:0;border-radius:8px;color:#ffffff;font-weight:800;cursor:pointer}.td-login-card>small{display:block;color:#95979a;font-size:8px;line-height:1.5;margin-top:14px}
@media(max-width:950px){.td-sidebar{width:205px;flex-basis:205px}.td-content{padding:20px}.td-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.td-login-shell{grid-template-columns:1fr}.td-login-story{min-height:440px}.td-login-card{margin:25px auto}}
@media(max-width:650px){.td-app{display:block;min-height:0}.td-sidebar{width:100%;min-height:0;padding:12px;position:static;border-right:0;border-bottom:1px solid var(--td-line)}.td-sidebar>.td-brand{padding:0 5px 10px}.td-nav{display:flex;overflow:auto;gap:4px;padding-bottom:3px}.td-nav-label,.td-sidebar-bottom{display:none}.td-nav a{flex:0 0 auto;padding:8px 9px;font-size:9px;gap:6px}.td-nav a>span{font-size:13px;width:auto}.td-main{min-height:620px}.td-topbar{height:48px;padding:0 13px}.td-topbar>div:first-child{font-size:8px}.td-schoolday{font-size:8px}.td-content{padding:15px 12px 26px}.td-heading{align-items:flex-start;flex-direction:column;margin-bottom:14px}.td-heading h1{font-size:23px}.td-heading p{font-size:10px}.td-metrics{gap:7px}.td-metric{padding:11px}.td-metric strong{font-size:22px}.td-metric small{font-size:8px}.td-two-col,.td-card-grid{grid-template-columns:1fr}.td-panel{padding:13px}.td-toolbar{gap:6px;padding:7px}.td-toolbar .td-btn{flex:1;font-size:9px;padding:7px}.td-class-picker{width:100%}.td-class-picker select{flex:1}.td-register-row{grid-template-columns:1fr;gap:7px;padding:10px 2px}.td-status-buttons{justify-content:flex-start}.td-status span{padding:7px 10px}.td-att-note{min-height:33px}.td-form-grid,.td-detail-grid{grid-template-columns:1fr}.td-wide{grid-column:auto}.td-homework-row{flex-direction:column}.td-footer{padding:10px 12px;font-size:8px;gap:8px;flex-direction:column}.td-login-shell{min-height:0}.td-login-story{min-height:350px;padding:76px 22px 25px}.td-login-story .td-brand{left:22px;top:22px}.td-login-story h1{font-size:39px}.td-login-copy{font-size:11px;margin:12px 0 14px}.td-feature{display:none}.td-login-card{padding:24px;margin:18px auto;width:calc(100% - 28px)}.td-login-card h2{font-size:22px}.td-toolbar form{width:100%}.td-toolbar form label{flex:1}.td-toolbar form input{max-width:135px}.td-mark-grid{grid-template-columns:1fr}.td-attendance-chips{grid-template-columns:1fr}}
@media print{.td-app{display:block;min-height:0;border:0;box-shadow:none}.td-sidebar,.td-topbar,.td-footer,.td-toolbar,.td-actions,.td-entry-details,.td-edit-details,.td-student-form,.td-inline-edit,.td-entry-form form button,.td-homework-row form,.td-btn,.td-search{display:none!important}.td-main{margin:0}.td-content{max-width:none;padding:0}.td-panel,.td-metric,.td-scheme-card{box-shadow:none;break-inside:avoid}.td-card-grid{grid-template-columns:1fr 1fr}.td-table{font-size:8px}.td-login-shell{display:none}}
.td-delete-form{display:inline-block;margin:0 0 0 6px}.td-delete-form .td-form{display:inline}.td-delete-form .td-btn{min-height:28px;padding:5px 8px;font-size:8px}.td-timetable td .td-delete-form{display:block;margin:7px 0 0}.td-list>div .td-delete-form{flex:0 0 auto;align-self:center}.td-edit-details .td-delete-form{display:block;margin:8px 0 0}
/* The workspace usually sits inside a theme content column that is much narrower than the
   window, so lay out against the container width rather than the viewport. Viewport media
   queries above still apply, and browsers without container queries keep the old behaviour. */
.td-app,.td-login-shell{container-type:inline-size;max-width:100%}
.td-app{container-name:tdapp;flex-wrap:wrap}
.td-login-shell{container-name:tdlogin;grid-template-columns:repeat(auto-fit,minmax(min(360px,100%),1fr))}
.td-sidebar{max-width:100%}
.td-main{min-width:0}
.td-login-story{padding:clamp(26px,5cqi,90px) clamp(20px,5cqi,90px);min-height:0}
.td-login-story h1{font-size:clamp(28px,7cqi,60px);overflow-wrap:break-word}
.td-login-copy,.td-heading h1,.td-heading p,.td-panel h2,.td-scheme-card h2,.td-detail-block p{overflow-wrap:break-word;min-width:0}
@container tdlogin (max-width:760px){.td-login-story{min-height:0;padding:38px 26px 26px}.td-login-story h1{font-size:clamp(26px,9cqi,42px)}.td-feature{display:none}.td-login-copy{margin:14px 0 4px}.td-login-card{width:min(100% - 32px,440px);margin:22px auto}}
@container tdapp (max-width:860px){.td-sidebar{flex:0 0 100%;width:100%;min-height:0;padding:12px;border-right:0;border-bottom:1px solid var(--td-line)}.td-sidebar>.td-brand{padding:0 5px 10px}.td-nav{display:flex;overflow:auto;gap:4px;padding-bottom:3px}.td-nav a{flex:0 0 auto;padding:8px 9px;font-size:9px;gap:6px}.td-nav a>span{font-size:13px;width:auto}.td-nav-label,.td-sidebar-bottom{display:none}.td-main{flex:1 1 100%;min-height:0}.td-content{padding:16px 14px 26px}.td-topbar{height:48px;padding:0 13px}.td-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.td-two-col,.td-card-grid,.td-detail-grid,.td-form-grid{grid-template-columns:1fr}.td-wide{grid-column:auto}.td-heading{flex-direction:column;align-items:flex-start;gap:10px}.td-heading h1{font-size:23px}}
@container tdapp (max-width:560px){.td-metrics,.td-mark-grid,.td-attendance-chips,.td-quick{grid-template-columns:1fr}.td-register-row{grid-template-columns:1fr;gap:7px}.td-homework-row{flex-direction:column}.td-toolbar .td-btn{flex:1}}

/* Full-window mode: the plugin renders the whole document, so the app owns the viewport. */
.td-fullwindow,.td-fullwindow body{height:100%;margin:0}
.td-fullwindow .td-app{min-height:100vh;min-height:100dvh;border:0;border-radius:0;box-shadow:none}
.td-fullwindow .td-sidebar{min-height:100vh;min-height:100dvh}
.td-fullwindow .td-main{min-height:100vh;min-height:100dvh}
.td-fullwindow .td-content{max-width:1600px}
.td-fullwindow .td-login-shell{min-height:100vh;min-height:100dvh;border:0;border-radius:0}
.td-fullwindow .td-login-story{min-height:0}
@container tdapp (max-width:860px){.td-fullwindow .td-sidebar,.td-fullwindow .td-main{min-height:0}}
.td-fs{padding:6px 9px;min-height:29px;font-size:12px;line-height:1}
@media print{.td-fs{display:none!important}}

/* Brand accents */
.td-btn.primary{background:var(--td-blue);border-color:var(--td-blue)}
.td-btn.primary:hover{background:var(--td-navy);border-color:var(--td-navy)}
.td-brand strong{color:var(--td-blue)}
.td-heading small,.td-kicker{color:var(--td-blue)}
.td-pill{background:#eaeef5;color:var(--td-blue)}
.td-metric strong{color:var(--td-navy)}
.td-tag.warn{background:#fff6e0;color:#95701a}
.td-notice{background:#e6f8f5;color:#0f7a70}
.td-login-story{background:radial-gradient(ellipse at 82% 76%,#3c5170 0,transparent 47%),linear-gradient(145deg,#181f2f,#253147 65%,#344662)}
.td-login-story h1 em{color:var(--td-amber);font-style:normal}
.td-progress{background:#eaeef5}
/* Brand icons */
.td-i{width:18px;height:18px;display:block}
.td-nav a>span{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;background:#eaeef5;color:var(--td-blue);flex:0 0 auto;font-size:0}
.td-nav a.active>span{background:var(--td-blue);color:#ffffff}
.td-fs{padding:6px 8px}.td-fs .td-i{width:14px;height:14px}
.td-profile>a{font-size:9px;color:var(--td-blue);margin-left:8px;white-space:nowrap}
.td-feature>span{width:34px;height:34px;flex:0 0 auto;border-radius:10px;display:grid;place-items:center;background:#374660;color:var(--td-amber)}
.td-feature>span .td-i{width:19px;height:19px}
/* Sign-in */
.td-login-btn{width:100%;min-height:44px;margin-top:4px}
.td-notice.td-error{background:#fdecea;color:#9c3a33}
.td-login-card small a{color:var(--td-blue)}
/* Product page */
.td-site-body{background:var(--td-paper)}
.td-site{font-family:Inter,"Segoe UI",Arial,sans-serif;color:var(--td-navy);max-width:1120px;margin:0 auto;padding:0 20px 56px}
.td-site-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:22px 0}
.td-hero{text-align:center;padding:34px 0 10px}
.td-hero h1{font-size:clamp(32px,6cqi,58px);line-height:1.05;letter-spacing:-.045em;margin:10px 0 14px;color:var(--td-navy)}
.td-hero h1 em{font-style:normal;color:var(--td-blue)}
.td-hero-copy{font-size:15px;color:#555d6d;margin:0 auto 22px;max-width:620px}
.td-hero-actions{display:flex;gap:12px;align-items:center;justify-content:center;flex-wrap:wrap}
.td-badge{background:var(--td-amber);color:var(--td-navy);border-radius:20px;padding:9px 16px;font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}
.td-feature-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));gap:14px;margin:34px 0 0}
.td-feature-card{display:flex;gap:14px;align-items:flex-start;background:#ffffff;border:1px solid var(--td-line);border-radius:14px;padding:16px}
.td-feature-card h3{margin:0 0 4px;font-size:14px;color:var(--td-navy)}
.td-feature-card p{margin:0;font-size:12px;line-height:1.55;color:#656d7d}
.td-feature-icon{width:42px;height:42px;flex:0 0 auto;border-radius:12px;display:grid;place-items:center;background:#eaeef5;color:var(--td-blue)}
.td-feature-icon .td-i{width:22px;height:22px}
.td-feature-card:nth-child(4n+2) .td-feature-icon{background:#fff4d6;color:#8a6a06}
.td-feature-card:nth-child(4n+3) .td-feature-icon{background:#e2f7f4;color:#0f7a70}
.td-roles{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));gap:14px;margin-top:16px}
.td-roles>div{background:#ffffff;border:1px solid var(--td-line);border-radius:14px;padding:16px}
.td-roles b{display:block;font-size:12px;letter-spacing:.07em;text-transform:uppercase;color:var(--td-blue)}
.td-roles small{display:block;margin-top:5px;font-size:12px;color:#656d7d}
.td-site-foot{margin-top:34px;padding:22px;border-radius:16px;background:var(--td-navy);color:#ffffff;display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap}
.td-site-foot b{font-size:15px}
.td-site-foot a{color:var(--td-amber)}
@media(max-width:650px){.td-site-head{flex-direction:column;align-items:flex-start}.td-site-foot{flex-direction:column;align-items:flex-start}}
/* School settings */
.td-letterhead{display:flex;align-items:center;gap:14px;background:#ffffff;border:1px solid var(--td-line);border-radius:12px;padding:14px 16px;margin:0 0 14px}
.td-letterhead img{height:46px;width:auto;max-width:150px;object-fit:contain}
.td-letterhead b{display:block;font-size:14px;color:var(--td-navy)}
.td-letterhead i{display:block;font-size:10px;color:var(--td-blue);font-style:normal;margin-top:2px}
.td-letterhead small{display:block;font-size:9px;color:var(--td-muted);margin-top:3px}
.td-term-rows{display:grid;gap:8px;margin:10px 0}
.td-term-row{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:8px}
.td-logo-preview{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.td-logo-preview img{height:40px;width:auto;max-width:130px;object-fit:contain;border:1px solid var(--td-line);border-radius:7px;padding:4px;background:#ffffff}
@container tdapp (max-width:860px){.td-term-row{grid-template-columns:1fr}}
@media print{.td-letterhead{break-inside:avoid}}
/* The foot of a printed document, matching the letterhead at the top. */
.td-doc-footer{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;margin:18px 0 0;padding:12px 16px 0;border-top:2px solid var(--td-line);color:var(--td-muted)}
.td-doc-footer b{display:block;font-size:12px;color:var(--td-navy)}
.td-doc-footer span{display:block;font-size:9px;margin-top:2px}
.td-doc-footer small{display:block;font-size:9px;margin-top:3px}
@media print{.td-doc-footer{break-inside:avoid}}
/* Larger, more comfortable type on desktop screens. Phones keep the compact scale. */
@media (min-width:1000px){
 .td-app,.td-login-shell{font-size:15.5px}
 .td-nav a{font-size:12.5px;padding:11px 12px}
 .td-nav a>span{width:30px;height:30px}
 .td-nav-label{font-size:9.5px}
 .td-i{width:19px;height:19px}
 .td-heading h1{font-size:30px}
 .td-heading p{font-size:12.5px}
 .td-heading small,.td-kicker{font-size:9.5px}
 .td-metric>div{font-size:11.5px}
 .td-metric strong{font-size:31px}
 .td-metric small{font-size:10.5px}
 .td-panel h2,.td-scheme-card h2{font-size:17px}
 .td-panel h3{font-size:13.5px}
 .td-panel p{font-size:12.5px}
 .td-panel-head p{font-size:10.5px}
 .td-panel-head>a{font-size:10.5px}
 .td-btn{font-size:11.5px;min-height:38px;padding:9px 14px}
 .td-table{font-size:11.5px}
 .td-table th{font-size:9.5px}
 .td-table td small{font-size:9.5px}
 .td-link{font-size:10.5px}
 .td-field{font-size:10.5px}
 .td-field input,.td-field select,.td-field textarea,.td-search{font-size:11.5px;min-height:39px}
 .td-toolbar input,.td-class-picker select,.td-inline-label select{font-size:11.5px;min-height:36px}
 .td-toolbar label,.td-class-picker label{font-size:9.5px}
 .td-list small,.td-muted,.td-homework-ref,.td-empty,.td-notice{font-size:11px}
 .td-list>div b{font-size:11.5px}
 .td-activity>span:nth-child(2) b,.td-lesson-row>span:nth-child(2) b{font-size:11.5px}
 .td-activity>span:nth-child(2) small,.td-lesson-row>span:nth-child(2) small{font-size:10.5px}
 .td-activity em,.td-open{font-size:10.5px}
 .td-topbar>div:first-child{font-size:11.5px}
 .td-schoolday{font-size:10.5px}
 .td-profile b{font-size:11.5px}.td-profile small{font-size:10px}.td-profile>a{font-size:10.5px}
 .td-term small{font-size:9px}.td-term b{font-size:13px}.td-term span{font-size:11px}
 .td-brand{font-size:19px}.td-brand small{font-size:8.5px}
 .td-tag,.td-status span{font-size:9.5px}
 .td-student{font-size:11.5px}
 .td-footer{font-size:10.5px}
 .td-subject,.td-scheme-card>p{font-size:11.5px}
 .td-book-grid b{font-size:10.5px}.td-book-grid small{font-size:8px}
 .td-detail-block small{font-size:8.5px}.td-detail-block p{font-size:11.5px}
 .td-mark-grid label,.td-mark-row,.td-student-detail{font-size:11px}
 .td-letterhead b{font-size:15.5px}.td-letterhead small{font-size:10px}
 .td-feature-card h3{font-size:15px}.td-feature-card p{font-size:12.5px}
}
/* Parent Connect */
.td-recipients{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:4px;margin:4px 0 12px;max-height:240px;overflow:auto;padding:8px;border:1px solid var(--td-line);border-radius:10px;background:#fcfdfe}
.td-recipients .td-check{margin:0;padding:4px 2px}
.td-recipients .td-check small{display:block;color:var(--td-muted);font-size:9px}
.td-panel code{background:#eaeef5;color:var(--td-navy);border-radius:4px;padding:1px 5px;font-size:10px}
.td-key{background:var(--td-navy);color:#e1e8f4;border-radius:9px;padding:12px 14px;font:600 11px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;overflow-x:auto;white-space:pre;margin:10px 0}
.td-panel pre.td-key{max-width:100%}
.td-back-to-app{display:flex;align-items:center;gap:11px;padding:10px 11px;margin:14px 0 2px;border-radius:9px;background:#eaeef5;color:var(--td-blue);font-size:12px;font-weight:700}
.td-back-to-app>span{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;background:var(--td-blue);color:#ffffff;flex:0 0 auto}
.td-net-good b{color:#0f7a70}
.td-net-bad b{color:var(--td-red)}
/* Incidents */
.td-sev{display:inline-flex;border-radius:12px;padding:3px 8px;font-size:9px;font-weight:800}
.td-sev-low{background:#e6f8f5;color:#0f7a70}
.td-sev-medium{background:#fff6e0;color:#95701a}
.td-sev-high{background:#fdecea;color:#9c3a33}
.td-role{margin-left:8px;border:1px solid var(--td-line);border-radius:6px;padding:2px 5px;font-size:9px;background:#ffffff}
.td-recipients .td-check>span{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%}

/* ------------------------------------------------------------------
   Unified with the mobile app: same tokens, type, shape and chrome.
   The app is the anchor; these screens follow it. Layout stays as it is,
   because a roster table and a phone card list are not the same job.
   ------------------------------------------------------------------ */
.td-app,.td-login-shell,.td-site{font-family:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
.td-app{background:var(--td-paper)}

/* cards: the app has no borders, it has a soft shadow */
.td-panel,.td-metric,.td-scheme-card,.td-feature-card,.td-roles>div,.td-letterhead,.td-empty{
  border:0;border-radius:var(--td-r);box-shadow:var(--td-sh);background:var(--td-card)}
.td-empty{box-shadow:none;background:var(--td-chip);color:var(--td-muted)}
.td-toolbar{border:0;border-radius:var(--td-r);box-shadow:var(--td-sh)}
.td-table-scroll,.td-list{border-radius:0}

/* the top bar is the app's navy header */
.td-topbar{background:var(--td-navy);border-bottom:0;color:#fff}
.td-topbar>div:first-child{color:#cdd8e6}
.td-topbar>div:first-child b{color:#7f93ad}
.td-topbar strong{color:#fff}
.td-schoolday{background:rgba(255,255,255,.14);border:0;border-radius:999px;color:#eaf0f7}
.td-schoolday i{background:var(--td-teal)}
.td-fs{background:rgba(255,255,255,.14);border:0;color:#fff}
.td-fs:hover{background:rgba(255,255,255,.24)}
.td-top-avatar{background:rgba(255,255,255,.18);color:#fff}

/* buttons, in the app's shape */
.td-btn{border-radius:12px;padding:10px 15px;font-weight:700;font-size:11.5px;border:1px solid var(--td-line);background:var(--td-card);color:var(--td-ink)}
.td-btn:hover{background:var(--td-chip);border-color:var(--td-line);color:var(--td-ink)}
.td-btn.primary{background:var(--td-blue);border-color:var(--td-blue);color:#fff}
.td-btn.primary:hover{background:var(--td-navy);border-color:var(--td-navy)}
.td-btn.td-danger{background:var(--td-badbg);border-color:var(--td-badbg);color:var(--td-red)}

/* pills, as the app draws them */
.td-tag,.td-sev,.td-badge,.td-pill{border-radius:999px}
.td-tag{background:var(--td-chip);color:var(--td-muted);font-size:10px;padding:3px 9px}
.td-tag.warn{background:var(--td-warnbg);color:#8a6418}
.td-notice{border-radius:12px;background:var(--td-okbg);color:#1c6b4a}
.td-notice.td-error{background:var(--td-badbg);color:#a33a33}
.td-sev-low{background:var(--td-okbg);color:#1c6b4a}
.td-sev-medium{background:var(--td-warnbg);color:#8a6418}
.td-sev-high{background:var(--td-badbg);color:#a33a33}

/* inputs */
.td-field input,.td-field select,.td-field textarea,.td-search,.td-toolbar input,.td-class-picker select,.td-inline-label select,.td-att-note{
  background:var(--td-input);border-color:var(--td-line);border-radius:11px}
.td-field{color:var(--td-muted)}

/* navigation keeps its shape but takes the app's colours */
.td-sidebar{background:var(--td-card);border-right:1px solid var(--td-line)}
.td-nav a{color:var(--td-muted);border-radius:11px}
.td-nav a>span{background:var(--td-chip);color:var(--td-blue)}
.td-nav a:hover{background:var(--td-chip);color:var(--td-ink)}
.td-nav a.active{background:var(--td-chip);color:var(--td-ink)}
.td-nav a.active>span{background:var(--td-blue);color:#fff}
.td-back-to-app{background:var(--td-chip);color:var(--td-ink)}
.td-back-to-app>span{background:var(--td-blue)}
.td-term{background:var(--td-chip);border:0;border-radius:12px}
.td-brand-mark{background:var(--td-navy);color:var(--td-amber)}
.td-brand strong{color:var(--td-blue)}
.td-avatar{background:var(--td-chip);color:var(--td-blue)}

/* headings and rows */
.td-heading h1{font-weight:800}
.td-heading small,.td-kicker{color:var(--td-muted);letter-spacing:.08em}
.td-metric strong{color:var(--td-ink)}
.td-progress{background:var(--td-chip)}
.td-progress i{background:var(--td-teal)}
.td-status input:checked+span{background:var(--td-okbg);border-color:#9fd9bd;color:#1c6b4a}
.td-status.absent input:checked+span{background:var(--td-badbg);border-color:#efb9b9;color:#a33a33}
.td-status.late input:checked+span{background:var(--td-warnbg);border-color:#e8ca8a;color:#8a6418}
.td-login-story{background:linear-gradient(150deg,#16293f,#1f3b5a 60%,#27496e)}
.td-feature>span{background:rgba(255,255,255,.12);color:var(--td-amber)}
.td-feature-icon{background:var(--td-chip);color:var(--td-blue)}
.td-feature-card:nth-child(4n+2) .td-feature-icon{background:var(--td-warnbg);color:#8a6418}
.td-feature-card:nth-child(4n+3) .td-feature-icon{background:var(--td-okbg);color:#1c6b4a}
.td-site-foot{background:var(--td-navy)}
.td-site-foot a{color:var(--td-amber)}
/* Pupil pickers: search, live count, clear */
.td-picker-head{display:flex;align-items:center;gap:10px;margin:6px 0 6px}
.td-picker-head .td-search{max-width:260px;flex:1}
.td-picker-count{font-size:10px;font-weight:700;color:var(--td-muted);white-space:nowrap}
.td-picker-count[data-some="1"]{color:var(--td-blue)}
.td-recipients[data-empty="1"]::after{content:'No pupil matches that search.';display:block;padding:10px 4px;font-size:11px;color:var(--td-muted)}
.td-picker-class{border:1px solid var(--td-line);border-radius:11px;padding:8px 10px;background:var(--td-input);font-size:11px;color:var(--td-ink);min-height:36px}
.td-recipients-wide{grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));max-height:300px}
.td-recipients-wide .td-check>span{display:flex;align-items:center;gap:8px;width:100%}
.td-recipients-wide .td-check>span b{font-size:11px;font-weight:700}
.td-recipients-wide .td-check>span small{color:var(--td-muted);font-size:9px;white-space:nowrap}
.td-recipients-wide .td-role{margin-left:auto}
/* ------------------------------------------------------------------
   The product page is a marketing page, not a dense workspace. It had
   inherited the app's compact scale, which reads as small next to the
   rest of the site. These sizes only apply to .td-site and the public
   sign-in screens; the workspace keeps its own scale.
   ------------------------------------------------------------------ */
.td-site-body,.td-site{font-size:17px;line-height:1.6}
.td-site .td-kicker{font-size:12px;letter-spacing:.14em}
.td-site .td-btn{font-size:14px;padding:13px 22px;min-height:48px;border-radius:13px}
.td-site-head{padding:26px 0}
.td-site .td-brand{font-size:21px}
.td-site .td-brand small{font-size:10px}
.td-hero{padding:46px 0 18px}
.td-hero h1{font-size:clamp(36px,7cqi,64px);line-height:1.04}
.td-hero-copy{font-size:19px;line-height:1.55;max-width:660px}
.td-badge{font-size:13px;padding:11px 20px}
.td-feature-grid{gap:16px;margin-top:40px}
.td-feature-card{padding:20px;gap:16px}
.td-feature-card h3{font-size:18px;margin-bottom:6px}
.td-feature-card p{font-size:15.5px;line-height:1.55}
.td-feature-icon{width:50px;height:50px;border-radius:14px}
.td-feature-icon .td-i{width:26px;height:26px}
.td-roles{gap:16px;margin-top:20px}
.td-roles>div{padding:20px}
.td-roles b{font-size:13px;letter-spacing:.1em}
.td-roles small{font-size:15.5px;margin-top:7px}
.td-site-foot{padding:26px;margin-top:40px}
.td-site-foot b{font-size:19px}
.td-site-foot span,.td-site-foot a{font-size:15.5px}
@media (max-width:650px){
  .td-site-body,.td-site{font-size:16px}
  .td-hero-copy{font-size:17px}
  .td-feature-card p,.td-roles small{font-size:15px}
}
/* the public sign-in, register and reset screens are public-facing too */
.td-login-body .td-login-card h2{font-size:27px}
.td-login-body .td-login-card>p{font-size:15px;line-height:1.55}
.td-login-body .td-field{font-size:12px}
.td-login-body .td-field input{font-size:16px;min-height:46px}
.td-login-body .td-login-btn{font-size:15px;min-height:50px}
.td-login-body .td-login-card small{font-size:13.5px}
.td-login-body .td-check{font-size:13.5px}
.td-login-body .td-notice{font-size:14px}
/* The sign-in, register and reset screens are public pages. Their supporting text
   was sized for the workspace (8-10px) against a 60px headline, which reads as an
   afterthought. These are the only places a teacher meets the product. */
.td-login-body .td-kicker{font-size:13px;letter-spacing:.12em;line-height:1.5}
.td-login-body .td-login-story h1{font-size:clamp(34px,6cqi,58px);line-height:1.08}
.td-login-body .td-login-copy{font-size:17px;line-height:1.6;max-width:520px;margin:20px 0 30px}
.td-login-body .td-feature{gap:14px;margin:14px 0}
.td-login-body .td-feature>span{width:40px;height:40px;border-radius:12px}
.td-login-body .td-feature>span .td-i{width:21px;height:21px}
.td-login-body .td-feature b{font-size:15px;line-height:1.35}
.td-login-body .td-feature small{font-size:13.5px;line-height:1.45;margin-top:3px}
.td-login-body .td-pill{font-size:11.5px;letter-spacing:.1em;padding:7px 13px}
.td-login-body .td-login-card{padding:38px}
.td-login-body .td-login-card h2{margin:18px 0 7px}
.td-login-body .td-check{margin:12px 0}
.td-login-body .td-field{margin-bottom:4px}
@media (max-width:650px){
  .td-login-body .td-login-copy{font-size:16px}
  .td-login-body .td-login-card{padding:26px}
}
