.tch-shell{background:linear-gradient(180deg, color-mix(in srgb, var(--color-primary) 5%, var(--color-app-bg)) 0, var(--color-app-bg) 210px);min-height:100dvh;color:var(--color-text)}.tch-shell__main{width:100%;max-width:var(--container-max);padding:var(--sp-16) var(--sp-12) calc(84px + env(safe-area-inset-bottom,0px));margin:0 auto}.tch-topbar{z-index:var(--z-header);justify-content:space-between;align-items:center;gap:var(--sp-12);min-height:62px;padding:calc(var(--sp-8) + env(safe-area-inset-top,0px)) var(--sp-12) var(--sp-8);border-bottom:1px solid color-mix(in srgb, var(--color-border-light) 88%, transparent);background:var(--color-surface-translucent);-webkit-backdrop-filter:blur(var(--blur-header));display:flex;position:sticky;top:0}.tch-brand,.tch-profile-link,.tch-top-nav__link,.tch-bottom-nav__link,.tch-btn,.tch-text-link{text-decoration:none}.tch-brand{align-items:center;gap:var(--sp-10);min-width:0;color:var(--color-text);display:flex}.tch-brand__mark{background:color-mix(in srgb, var(--color-primary) 90%, var(--color-info));width:40px;height:40px;color:var(--color-text-on-accent);font-size:var(--text-body);box-shadow:0 10px 20px color-mix(in srgb, var(--color-primary) 20%, transparent);border-radius:8px;flex:none;justify-content:center;align-items:center;font-weight:900;display:inline-flex}.tch-brand strong,.tch-brand small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.tch-brand strong{font-size:var(--text-body);font-weight:900;line-height:1.1}.tch-brand small{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:3px}.tch-top-nav{display:none}.tch-profile-link{justify-content:center;align-items:center;gap:var(--sp-6);min-height:38px;padding:0 var(--sp-10);border:1px solid var(--color-border-light);background:var(--color-surface);color:var(--color-text-secondary);font-size:var(--text-xs);box-shadow:var(--shadow-sm);border-radius:8px;flex:none;font-weight:800;display:inline-flex}.tch-profile-link span{display:none}.tch-bottom-nav{z-index:var(--z-header);min-height:calc(64px + env(safe-area-inset-bottom,0px));padding:4px var(--sp-6) env(safe-area-inset-bottom,0px);border-top:1px solid var(--color-border-light);background:var(--color-surface-translucent);-webkit-backdrop-filter:blur(16px);grid-template-columns:repeat(4,minmax(0,1fr));display:grid;position:fixed;bottom:0;left:0;right:0}.tch-bottom-nav__link{min-width:0;min-height:58px;color:var(--color-text-muted);flex-direction:column;justify-content:center;align-items:center;gap:3px;font-size:.66rem;font-weight:700;line-height:1;display:inline-flex;position:relative}.tch-bottom-nav__link:before{content:"";background:var(--color-primary);width:24px;height:2.5px;transition:transform var(--dur-normal) var(--ease-spring);border-radius:999px;position:absolute;top:0;left:50%;transform:translate(-50%)scaleX(0)}.tch-bottom-nav__link--active{color:var(--color-primary)}.tch-bottom-nav__link--active:before{transform:translate(-50%)scaleX(1)}.tch-page{gap:var(--sp-16);flex-direction:column;display:flex}.tch-page-head{gap:var(--sp-14);padding:var(--sp-20) 0 var(--sp-8);flex-direction:column;display:flex}.tch-page-head h1{font-size:var(--text-h3);color:var(--color-text);font-weight:850;line-height:var(--lh-tight);letter-spacing:0;word-break:keep-all;margin:0}.tch-page-head p{margin:var(--sp-8) 0 0;max-width:720px;color:var(--color-text-secondary);font-size:var(--text-small);line-height:var(--lh-normal)}.tch-page-head__actions{align-items:center;gap:var(--sp-8);flex-wrap:wrap;display:flex}.tch-eyebrow{margin:0 0 var(--sp-6);color:var(--color-primary);font-size:var(--text-xs);letter-spacing:0;text-transform:uppercase;font-weight:900}.tch-btn{justify-content:center;align-items:center;gap:var(--sp-8);min-height:40px;padding:0 var(--sp-12);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);font-family:inherit;font-size:var(--text-small);box-shadow:var(--shadow-sm);cursor:pointer;transition:border-color var(--dur-fast) var(--ease-out), background-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);border-radius:8px;font-weight:800;line-height:1;display:inline-flex}.tch-btn:hover:not(:disabled){border-color:color-mix(in srgb, var(--color-primary) 28%, var(--color-border));box-shadow:var(--shadow-md);transform:translateY(-1px)}.tch-btn:disabled{cursor:not-allowed;opacity:.56}.tch-btn--compact{min-height:32px;padding:0 var(--sp-10);font-size:var(--text-xs)}.tch-btn--primary{background:color-mix(in srgb, var(--color-primary) 92%, var(--color-info));color:var(--color-text-on-accent);border-color:#0000}.tch-text-link{min-height:32px;color:var(--color-primary);font-family:inherit;font-size:var(--text-small);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;padding:0;font-weight:850;display:inline-flex}.tch-card{border:1px solid var(--color-border-light);background:var(--color-surface);box-shadow:var(--shadow-sm);border-radius:8px}.tch-metrics{gap:var(--sp-10);grid-template-columns:repeat(auto-fit,minmax(150px,1fr));display:grid}.tch-metric{gap:var(--sp-6);min-height:118px;padding:var(--sp-14);display:grid}.tch-metric span,.tch-metric small{color:var(--color-text-muted);font-size:var(--text-xs);font-weight:800}.tch-metric strong{color:var(--color-text);font-size:var(--text-h3);font-weight:900;line-height:var(--lh-tight);overflow-wrap:anywhere}.tch-metric--primary{border-color:color-mix(in srgb, var(--color-primary) 26%, var(--color-border-light));background:color-mix(in srgb, var(--color-primary) 7%, var(--color-surface))}.tch-metric--blue,.tch-metric--info{border-color:color-mix(in srgb, var(--color-info) 24%, var(--color-border-light));background:color-mix(in srgb, var(--color-info) 6%, var(--color-surface))}.tch-metric--success{border-color:color-mix(in srgb, var(--color-success) 24%, var(--color-border-light));background:color-mix(in srgb, var(--color-success) 6%, var(--color-surface))}.tch-metric--warning{border-color:color-mix(in srgb, var(--color-warning) 26%, var(--color-border-light));background:color-mix(in srgb, var(--color-warning) 7%, var(--color-surface))}.tch-metric--danger{border-color:color-mix(in srgb, var(--color-danger) 24%, var(--color-border-light));background:color-mix(in srgb, var(--color-danger) 6%, var(--color-surface))}.tch-message{align-items:center;gap:var(--sp-8);padding:var(--sp-12) var(--sp-14);border:1px solid var(--color-border-light);background:var(--color-surface);color:var(--color-text-secondary);font-size:var(--text-small);font-weight:700;line-height:var(--lh-normal);border-radius:8px;flex-wrap:wrap;display:flex}.tch-message strong{color:var(--color-text)}.tch-message--info{border-color:color-mix(in srgb, var(--color-info) 24%, var(--color-border-light));background:color-mix(in srgb, var(--color-info) 6%, var(--color-surface))}.tch-message--success{border-color:color-mix(in srgb, var(--color-success) 24%, var(--color-border-light));background:color-mix(in srgb, var(--color-success) 6%, var(--color-surface))}.tch-message--warning{border-color:color-mix(in srgb, var(--color-warning) 28%, var(--color-border-light));background:color-mix(in srgb, var(--color-warning) 8%, var(--color-surface))}.tch-message--danger{border-color:color-mix(in srgb, var(--color-danger) 26%, var(--color-border-light));background:color-mix(in srgb, var(--color-danger) 7%, var(--color-surface))}.tch-loading{align-items:center;gap:var(--sp-10);min-height:58px;padding:var(--sp-14);color:var(--color-text-secondary);font-size:var(--text-small);font-weight:800;display:flex}.tch-section{gap:var(--sp-12);padding-top:var(--sp-6);flex-direction:column;display:flex}.tch-section__head{justify-content:space-between;align-items:flex-end;gap:var(--sp-12);display:flex}.tch-section__head h2{color:var(--color-text);font-size:var(--text-h4);font-weight:850;line-height:var(--lh-tight);letter-spacing:0;word-break:keep-all;margin:0}.tch-count,.tch-empty-line{color:var(--color-text-muted);font-size:var(--text-small);font-weight:750}.tch-empty-line{padding:var(--sp-14);border:1px dashed var(--color-border);background:color-mix(in srgb, var(--color-surface) 72%, transparent);border-radius:8px;margin:0}.tch-class-grid,.tch-attendance-grid{gap:var(--sp-10);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));display:grid}.tch-class-card,.tch-attendance-card,.tch-readiness-card{padding:var(--sp-14)}.tch-class-card{gap:var(--sp-10);display:grid}.tch-class-card div{justify-content:space-between;align-items:center;gap:var(--sp-8);flex-wrap:wrap;display:flex}.tch-class-card strong,.tch-attendance-card strong,.tch-readiness-card strong,.tch-list__item strong,.tch-student-card strong,.tch-edit-block strong{color:var(--color-text);font-size:var(--text-body);font-weight:850;line-height:var(--lh-tight)}.tch-class-card span{color:var(--color-primary);font-size:var(--text-xs);font-weight:850}.tch-class-card p,.tch-attendance-card p,.tch-readiness-card p{color:var(--color-text-secondary);font-size:var(--text-small);line-height:var(--lh-normal);margin:0}.tch-list{gap:var(--sp-8);display:grid}.tch-list__item{justify-content:space-between;align-items:center;gap:var(--sp-12);min-height:68px;padding:var(--sp-12);border:1px solid var(--color-border-light);background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-sm);border-radius:8px;text-decoration:none;display:flex}.tch-list__item span:not(.tch-badge),.tch-list__meta small,.tch-student-card span:not(.tch-badge),.tch-edit-block span:not(.tch-badge){color:var(--color-text-muted);font-size:var(--text-xs);margin-top:3px;font-weight:700;display:block}.tch-list__meta{text-align:right;flex:none;justify-items:end;gap:2px;display:grid}.tch-list__meta span{color:var(--color-text-secondary);font-size:var(--text-xs);font-weight:850}.tch-filter{gap:var(--sp-8);padding:var(--sp-12);border:1px solid var(--color-border-light);background:var(--color-surface);box-shadow:var(--shadow-sm);border-radius:8px;grid-template-columns:1fr;display:grid}.tch-search{display:block;position:relative}.tch-search .u-icon{top:50%;left:var(--sp-12);color:var(--color-text-muted);pointer-events:none;position:absolute;transform:translateY(-50%)}.tch-search input{padding-left:calc(var(--sp-12) + 22px)}.tch-filter input,.tch-filter select,.tch-edit-block input,.tch-edit-block select,.tch-edit-block textarea,.tch-list-editor input,.tch-list-editor select,.tch-list-editor textarea{border:1px solid var(--color-border);background:var(--color-surface);width:100%;min-height:42px;color:var(--color-text);font:inherit;font-size:var(--text-small);letter-spacing:0;border-radius:8px}.tch-filter input,.tch-filter select,.tch-edit-block input,.tch-edit-block select,.tch-list-editor input,.tch-list-editor select{padding:0 var(--sp-12)}.tch-edit-block textarea,.tch-list-editor textarea{min-height:104px;padding:var(--sp-10) var(--sp-12);line-height:var(--lh-normal);resize:vertical}.tch-filter input:focus,.tch-filter select:focus,.tch-edit-block input:focus,.tch-edit-block select:focus,.tch-edit-block textarea:focus,.tch-list-editor input:focus,.tch-list-editor select:focus,.tch-list-editor textarea:focus{border-color:var(--color-primary);box-shadow:var(--focus-ring);outline:none}.tch-filter input:disabled,.tch-filter select:disabled,.tch-edit-block input:disabled,.tch-edit-block select:disabled,.tch-edit-block textarea:disabled,.tch-list-editor input:disabled,.tch-list-editor select:disabled,.tch-list-editor textarea:disabled{cursor:not-allowed;background:var(--color-surface-muted);color:var(--color-text-muted)}.tch-table-wrap{border:1px solid var(--color-border-light);background:var(--color-surface);box-shadow:var(--shadow-sm);border-radius:8px;overflow-x:auto}.tch-table{border-collapse:collapse;width:100%;min-width:760px}.tch-table th,.tch-table td{padding:var(--sp-12);border-bottom:1px solid var(--color-border-light);text-align:left;font-size:var(--text-small);vertical-align:middle}.tch-table th{color:var(--color-text-muted);font-size:var(--text-xs);background:color-mix(in srgb, var(--color-primary) 4%, var(--color-surface));font-weight:900}.tch-table td{color:var(--color-text-secondary);font-weight:700}.tch-table td>strong,.tch-table td>span:not(.tch-badge){display:block}.tch-table td>strong{color:var(--color-text);font-weight:850}.tch-table td>span:not(.tch-badge){color:var(--color-text-muted);font-size:var(--text-xs);margin-top:2px}.tch-table tr:last-child td{border-bottom:0}.tch-student-cards,.tch-weekly-summary-cards{display:none}.tch-student-card{gap:var(--sp-12);padding:var(--sp-14);display:grid}.tch-student-card__top,.tch-student-card__meta,.tch-inline-actions{justify-content:space-between;align-items:center;gap:var(--sp-8);flex-wrap:wrap;display:flex}.tch-student-card__meta{justify-content:flex-start}.tch-student-card__meta span{min-height:28px;padding:6px var(--sp-8);background:var(--color-surface-muted);color:var(--color-text-secondary);font-size:var(--text-xs);border-radius:999px;margin:0;font-weight:800}.tch-inline-badges,.tch-parent-list{align-items:center;gap:var(--sp-6);flex-wrap:wrap;display:flex}.tch-parent-list span,.tch-muted-text{color:var(--color-text-secondary);font-size:var(--text-xs);font-weight:800}.tch-muted-text{color:var(--color-text-muted)}.tch-weekly-summary-table{min-width:1210px}.tch-weekly-list-page{align-content:start}.tch-weekly-list-filter .tch-search,.tch-weekly-list-filter select,.tch-weekly-detail-filter select,.tch-weekly-summary-metrics .tch-metric{min-width:0}.tch-weekly-summary-table td:nth-child(3){min-width:320px}.tch-weekly-summary-table td:nth-child(8){min-width:150px}.tch-weekly-summary-actions{align-items:center;gap:var(--sp-8);flex-wrap:wrap;display:flex}.tch-weekly-summary-actions .tch-text-link{white-space:nowrap}.tch-weekly-summary-card{gap:var(--sp-12);padding:var(--sp-14);display:grid}.tch-weekly-summary-card .tch-btn{width:100%}.tch-badge{min-height:28px;padding:0 var(--sp-8);font-size:var(--text-xs);white-space:nowrap;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;font-weight:900;line-height:1;display:inline-flex}.tch-badge--default,.tch-badge--info,.tch-badge--blue{border-color:color-mix(in srgb, var(--color-info) 24%, transparent);background:color-mix(in srgb, var(--color-info) 9%, var(--color-surface));color:var(--color-info)}.tch-badge--success{border-color:color-mix(in srgb, var(--color-success) 24%, transparent);background:color-mix(in srgb, var(--color-success) 9%, var(--color-surface));color:var(--color-success)}.tch-badge--warning{border-color:color-mix(in srgb, var(--color-warning) 26%, transparent);background:color-mix(in srgb, var(--color-warning) 12%, var(--color-surface));color:var(--color-warning)}.tch-badge--danger{border-color:color-mix(in srgb, var(--color-danger) 24%, transparent);background:color-mix(in srgb, var(--color-danger) 9%, var(--color-surface));color:var(--color-danger)}.tch-weekly-layout{gap:var(--sp-16);display:grid}.tch-qt-grid{gap:var(--sp-10);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));display:grid}.tch-grid{gap:var(--sp-10);display:grid}.tch-grid--2{grid-template-columns:1fr}.tch-edit-block{gap:var(--sp-12);padding:var(--sp-14);display:grid}.tch-edit-block__head{justify-content:space-between;align-items:flex-start;gap:var(--sp-10);display:flex}.tch-edit-block label{gap:var(--sp-6);color:var(--color-text-secondary);font-size:var(--text-xs);font-weight:850;display:grid}.tch-list-editor,.tch-deleted-list{gap:var(--sp-10);display:grid}.tch-list-editor__item{gap:var(--sp-10);padding:var(--sp-14);grid-template-columns:1fr;display:grid}.tch-attendance-card{align-items:flex-start;gap:var(--sp-12);display:flex}.tch-attendance-card .u-icon{color:var(--color-primary);flex:none}.tch-readiness-card{gap:var(--sp-10);display:grid}.tch-readiness-card ul{gap:var(--sp-8);padding-left:var(--sp-20);color:var(--color-text-secondary);font-size:var(--text-small);font-weight:750;line-height:var(--lh-normal);margin:0;display:grid}@media (max-width:720px){.tch-section__head,.tch-list__item{flex-direction:column;align-items:flex-start}.tch-list__meta{text-align:left;justify-items:start}.tch-table-wrap{display:none}.tch-student-cards,.tch-weekly-summary-cards{gap:var(--sp-10);display:grid}}@media (min-width:721px){.tch-shell__main{padding-bottom:var(--sp-32)}.tch-topbar{padding-left:var(--sp-20);padding-right:var(--sp-20)}.tch-top-nav{align-items:center;gap:var(--sp-6);min-width:0;padding:var(--sp-4);border:1px solid var(--color-border-light);background:color-mix(in srgb, var(--color-surface) 86%, transparent);border-radius:8px;display:flex}.tch-top-nav__link{justify-content:center;align-items:center;gap:var(--sp-6);min-height:36px;padding:0 var(--sp-10);color:var(--color-text-secondary);font-size:var(--text-xs);white-space:nowrap;border-radius:7px;font-weight:850;display:inline-flex}.tch-top-nav__link--active{background:color-mix(in srgb, var(--color-primary) 10%, var(--color-surface));color:var(--color-primary)}.tch-profile-link span{display:inline}.tch-bottom-nav{display:none}.tch-page-head{flex-direction:row;justify-content:space-between;align-items:flex-end}.tch-page-head__actions{flex:none;justify-content:flex-end}.tch-filter{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));align-items:center}.tch-filter .tch-search{grid-column:span 2;min-width:min(100%,260px)}.tch-filter .tch-btn{white-space:nowrap}.tch-weekly-list-filter{grid-template-columns:minmax(150px,180px) repeat(3,minmax(96px,auto))}.tch-weekly-list-filter .tch-search{grid-column:1/-1}.tch-weekly-detail-filter{grid-template-columns:minmax(220px,1fr) minmax(150px,180px) repeat(3,minmax(96px,auto))}.tch-weekly-summary-metrics,.tch-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:980px){.tch-shell__main{padding-left:var(--sp-20);padding-right:var(--sp-20)}.tch-page{gap:var(--sp-20)}.tch-list-editor__item{grid-template-columns:minmax(140px,180px) minmax(0,1fr)}.tch-list-editor__item:has(input){grid-template-columns:minmax(140px,180px) minmax(160px,220px) minmax(0,1fr)}.tch-list-editor__item .tch-inline-actions{grid-column:1/-1}.tch-weekly-list-filter{grid-template-columns:minmax(150px,180px) repeat(3,minmax(96px,auto)) minmax(220px,1fr) minmax(140px,170px) minmax(150px,190px)}.tch-weekly-list-filter .tch-search{grid-column:auto}.tch-weekly-detail-filter{grid-template-columns:minmax(260px,1fr) minmax(150px,180px) repeat(3,minmax(96px,auto))}}@media (min-width:1180px){.tch-weekly-summary-metrics{grid-template-columns:repeat(5,minmax(0,1fr))}}
