:root{--background:#f8fafc;--surface:#fff;--foreground:#0f172a;--muted:#64748b;--border:#e2e8f0;--accent:#2563eb;--accent-hover:#1d4ed8;--danger:#b91c1c;--focus:#3b82f6;--dorm-rating-excellent-color:#6f927e;--dorm-rating-excellent-soft:#e7eee9;--dorm-rating-excellent-border:#b8cbbd;--dorm-rating-excellent-text:#4e6b59;--dorm-rating-normal-color:#6f879f;--dorm-rating-normal-soft:#e7edf2;--dorm-rating-normal-border:#b7c6d3;--dorm-rating-normal-text:#4f667c;--dorm-rating-needs-rectification-color:#a9786f;--dorm-rating-needs-rectification-soft:#f2e6e3;--dorm-rating-needs-rectification-border:#d8b9b2;--dorm-rating-needs-rectification-text:#7c534c}*{box-sizing:border-box;margin:0;padding:0}html,body{min-height:100%}body{background:var(--background);color:var(--foreground);letter-spacing:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-size:15px;line-height:1.5}button,input,select,textarea{font:inherit;letter-spacing:0;line-height:1.35}button{cursor:pointer}button:disabled{cursor:wait;opacity:.65}.auth-page{align-items:center;min-height:100vh;padding:32px 20px;display:flex}.login-panel{background:var(--surface);border:1px solid var(--border);border-radius:8px;width:100%;max-width:420px;margin:0 auto;padding:32px}.brand-mark{background:var(--accent);color:#fff;border-radius:12px;justify-content:center;align-items:center;width:36px;height:36px;margin-bottom:16px;font-size:14px;font-weight:700;display:flex}.product-name,.section-label{color:var(--muted);font-size:13px;font-weight:600;line-height:1.35}.login-panel h1{margin:6px 0 28px;font-size:24px;line-height:1.25}.login-form,.field-group{flex-direction:column;display:flex}.login-form{gap:18px}.field-group{gap:7px}.field-group label{font-size:14px;font-weight:600;line-height:1.4}.field-group input{color:var(--foreground);background:#fff;border:1px solid #cbd5e1;border-radius:10px;width:100%;height:42px;padding:0 12px;line-height:1.35}.field-group input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #2563eb24}.login-remember-row{align-items:center;gap:10px;min-height:44px;display:flex}.login-remember-row input[type=checkbox]{accent-color:var(--accent);flex:none;width:18px;height:18px;margin:0}.login-remember-row label{color:var(--muted);cursor:pointer;font-size:14px;line-height:1.4}.form-error{color:var(--danger);min-height:20px;font-size:13px}.primary-button,.secondary-button{border-radius:10px;align-items:center;gap:8px;min-height:40px;padding:8px 16px;font-size:14px;font-weight:600;line-height:1.35;display:inline-flex}.primary-button{background:var(--accent);border:1px solid var(--accent);color:#fff;width:100%}.primary-button:hover:not(:disabled){background:var(--accent-hover)}.danger-button{color:var(--danger);background:#fff5f3;border:1px solid #fecaca;border-radius:10px;align-items:center;gap:8px;min-height:40px;padding:8px 16px;font-size:14px;font-weight:600;line-height:1.35;display:inline-flex}.danger-button:hover:not(:disabled){background:#fee9e6}.secondary-button{color:var(--foreground);background:#fff;border:1px solid #cbd5e1}.secondary-button:hover{background:#f8fafc}.primary-button:focus-visible,.secondary-button:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.app-shell{width:100%;min-width:0;min-height:100vh;display:flex}.app-main-shell{flex-direction:column;flex:1;min-width:0;display:flex}.app-sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex:0 0 288px;min-width:0;min-height:100vh;padding:24px 16px;display:flex;position:sticky;top:0}.app-sidebar-brand{align-items:center;gap:12px;padding:0 8px;display:flex}.app-sidebar-logo{color:var(--accent);background:#eff6ff;border:1px solid #dbeafe;border-radius:999px;flex:none;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.app-sidebar-logo-icon{width:20px;height:20px}.app-sidebar-system-name{color:var(--foreground);font-size:14px;font-weight:700;line-height:1.25}.app-sidebar-system-subtitle{color:var(--muted);margin-top:3px;font-size:12px}.app-sidebar-account{border-bottom:1px solid var(--border);margin:24px 8px 0;padding:0 0 20px}.app-sidebar-account-label{color:var(--muted);font-size:12px;display:block}.app-sidebar-account-name{color:var(--foreground);margin-top:4px;font-size:14px;font-weight:600;display:block}.app-sidebar-nav{gap:4px;margin-top:24px;display:grid}.app-sidebar-link{color:var(--muted);border-radius:10px;align-items:center;gap:12px;min-height:44px;padding:10px 12px;font-size:14px;font-weight:600;text-decoration:none;transition:background-color .15s,color .15s;display:flex}.app-sidebar-link:hover,.app-sidebar-link:focus-visible,.app-sidebar-link.is-active{color:#1d4ed8;background:#eff6ff}.app-sidebar-link:focus-visible{outline-offset:2px;outline:3px solid #3b82f647}.app-sidebar-icon{flex:none;width:18px;height:18px}.app-header{background:var(--surface);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;min-height:72px;padding:14px 32px;display:flex}.app-nav{width:100%;min-width:0;display:none}.app-nav-inner{min-width:0;padding:8px max(16px, env(safe-area-inset-left)) 8px max(16px, env(safe-area-inset-right));align-items:center;gap:6px;display:flex;overflow-x:auto}.app-nav-link{color:var(--muted);white-space:nowrap;border-radius:8px;flex:none;align-items:center;gap:8px;min-height:44px;padding:10px 12px;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}.app-nav-label{line-height:1.25}.app-nav-icon{flex:none;width:18px;height:18px}.app-content{flex:1;min-width:0}.app-nav-link:hover,.app-nav-link:focus-visible,.text-link:hover,.text-link:focus-visible,.table-primary-link:hover,.table-primary-link:focus-visible{color:var(--accent)}.app-nav-link:hover,.app-nav-link:focus-visible{text-decoration:none}.signed-in-user{margin-top:2px;font-size:14px;font-weight:600}.dashboard-page{max-width:1120px;margin:0 auto;padding:40px 24px}.workspace-page{max-width:1280px;margin:0 auto;padding:32px 32px 56px}.workspace-heading{justify-content:space-between;align-items:flex-start;gap:24px;display:flex}.workspace-heading h1{margin-top:4px;font-size:28px;line-height:1.25}.heading-actions,.pagination-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.workspace-panel{background:var(--surface);border:1px solid var(--border);border-radius:16px;margin-top:24px;padding:24px;box-shadow:0 1px 2px #0f172a0a}.growth-analytics-dashboard{gap:18px;margin-top:24px;display:grid}.growth-analytics-heading{justify-content:space-between;align-items:end;gap:18px;display:flex}.growth-analytics-heading h2{margin-top:4px;font-size:20px;line-height:1.3}.growth-analytics-grid{grid-template-columns:minmax(0,1.25fr) minmax(280px,.75fr);align-items:stretch;gap:18px;display:grid}.growth-analytics-panel{margin-top:0}.growth-radar{gap:8px;display:grid}.growth-radar-heading{justify-content:space-between;align-items:center;gap:16px;display:flex}.growth-radar-heading h3{margin-top:4px;font-size:18px;line-height:1.3}.growth-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.growth-stat-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;gap:8px;min-height:144px;padding:18px;display:grid}.growth-stat-card strong{color:var(--foreground);font-size:32px;line-height:1}.growth-stat-card small{color:var(--muted);font-size:12px}.panel-heading{justify-content:space-between;align-items:center;gap:16px;display:flex}.panel-heading h2{font-size:18px;line-height:1.3}.compact-heading{justify-content:flex-start;margin-bottom:20px}.inline-button{justify-content:center;width:auto;text-decoration:none;display:inline-flex}.student-filter-form{border-bottom:1px solid var(--border);grid-template-columns:minmax(180px,2fr) repeat(3,minmax(120px,1fr)) auto;align-items:end;gap:14px;margin-top:22px;padding-bottom:22px;display:grid}.talk-filter-form{border-bottom:1px solid var(--border);grid-template-columns:minmax(220px,1fr) auto auto;align-items:end;gap:14px;margin-top:22px;padding-bottom:22px;display:grid}.talk-detail-sections{gap:20px;display:grid}.talk-detail-section{border-top:1px solid var(--border);padding-top:18px}.talk-detail-section:first-child{border-top:0;padding-top:0}.talk-detail-section h3{font-size:16px;line-height:1.4}.talk-detail-section p{overflow-wrap:anywhere;white-space:pre-wrap;margin-top:8px}.field-group select,.field-group textarea{color:var(--foreground);background:#fff;border:1px solid #cbd5e1;border-radius:10px;width:100%;min-height:42px;padding:8px 12px;line-height:1.35}.field-group textarea{line-height:1.6}.field-group select:focus,.field-group textarea:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #2563eb24}.filter-submit{white-space:nowrap;min-height:42px}.filter-clear{grid-column:1/-1}.text-link,.table-primary-link{color:var(--accent);text-decoration:none}.table-wrap{overflow-x:auto}.student-table{border-collapse:collapse;width:100%;min-width:720px}.student-table th,.student-table td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:14px 10px}.student-table th{color:var(--muted);font-size:13px;font-weight:600}.student-table tr:last-child td{border-bottom:0}.table-primary-link,.table-secondary-text{display:block}.table-primary-link{font-weight:700}.table-secondary-text,.muted-text,.empty-state p,.empty-inline,.section-footnote{color:var(--muted);font-size:13px}.table-secondary-text{margin-top:3px}.empty-state{border:1px dashed var(--border);text-align:center;margin-top:22px;padding:38px 20px}.empty-state h3{font-size:16px}.empty-state p{margin-top:6px}.pagination{justify-content:space-between;align-items:center;gap:16px;margin-top:18px;display:flex}.metrics-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:24px;display:grid}.metric-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:6px;padding:20px;text-decoration:none;display:flex}.metric-card:hover,.metric-card:focus-visible{border-color:var(--accent)}.metric-card strong{color:var(--foreground);font-size:30px;line-height:1.1}.student-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;display:grid}.student-form{margin-top:24px}.form-section{margin-top:18px}.talk-student-summary{border:1px solid var(--border);background:#f4f6f5;border-radius:6px;flex-wrap:wrap;align-items:baseline;gap:10px;margin-bottom:20px;padding:12px 14px;display:flex}.talk-student-summary span:first-child{color:var(--muted);font-size:13px}.talk-student-summary span:last-child{color:var(--muted);font-size:14px}.form-notice{color:#6b5520;background:#fffaf0;border:1px solid #ead7a6;border-radius:6px;margin-bottom:20px;padding:10px 12px}.talk-body-fields{gap:18px;display:grid}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}.field-wide{grid-column:1/-1}.field-label,.readonly-field{font-size:14px;font-weight:600}.readonly-field{border:1px solid var(--border);background:#f4f6f5;border-radius:6px;min-height:42px;padding:9px 12px}.form-actions{flex-wrap:wrap;gap:10px;margin-top:22px;display:flex}.growth-workspace{margin-top:24px}.growth-tab-panel{min-width:0}.growth-record-form{margin-top:0}.growth-selector{gap:14px;margin-top:18px;display:grid}.growth-selector-results{flex-wrap:wrap;gap:8px;display:flex}.growth-selector-option{border:1px solid var(--border);color:var(--foreground);background:#f4f6f5;border-radius:6px;padding:7px 10px}.growth-selector-option:hover:not(:disabled),.growth-selector-option:focus-visible{border-color:var(--accent)}.growth-chip-list,.growth-historical-students{flex-wrap:wrap;gap:8px;display:flex}.growth-chip{color:var(--foreground);background:#edf6f1;border:1px solid #b7d7c7;border-radius:999px;align-items:center;gap:6px;padding:5px 9px;display:inline-flex}.growth-chip button{color:var(--muted);background:0 0;border:0;padding:0 2px;font-size:17px;line-height:1}.growth-chip-muted{border-color:var(--border);color:var(--muted);background:#f4f6f5}.growth-historical-students{border-top:1px solid var(--border);align-items:center;padding-top:14px}.growth-mode-field{max-width:420px}.growth-save-status{color:var(--accent);font-size:13px;font-weight:600}.growth-attachment-state.is-enabled{border-color:#b7d7c7}.growth-attachment-state.is-disabled{background:#fbfcfb}.growth-coming-soon{gap:10px;display:grid}.growth-timeline,.growth-empty-list{gap:18px;display:grid}.growth-timeline-filters{border:1px solid var(--border);background:#fbfcfb;border-radius:8px;flex-wrap:wrap;align-items:end;gap:12px 16px;padding:14px;display:flex}.growth-timeline-filter{gap:6px;min-width:220px;display:grid}.growth-timeline-filter select{background:var(--surface);border:1px solid var(--border);color:var(--ink);border-radius:6px;min-height:38px;padding:8px 10px}.growth-timeline-nodes{gap:18px;display:grid}.growth-project-timeline,.growth-standalone-timeline{border:1px solid var(--border);background:#fbfcfb;border-radius:8px;padding:20px}.growth-project-timeline-heading{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.growth-project-timeline-heading h3{margin-top:4px;font-size:18px;line-height:1.3}.growth-project-status{color:var(--accent);white-space:nowrap;background:#edf6f1;border:1px solid #b7d7c7;border-radius:999px;padding:5px 9px;font-size:13px}.growth-project-stages{border-left:2px solid var(--border);gap:0;margin:18px 0 0 8px;padding-left:18px;display:grid}.growth-timeline-record{grid-template-columns:10px minmax(0,1fr) auto;align-items:flex-start;gap:12px;padding:8px 0 18px;display:grid;position:relative}.growth-timeline-record:last-child{padding-bottom:0}.growth-timeline-record-marker{background:var(--accent);border:2px solid var(--surface);box-shadow:0 0 0 1px var(--accent);border-radius:50%;width:8px;height:8px;margin-top:7px}.growth-timeline-record-main{min-width:0}.growth-timeline-record-heading{justify-content:space-between;align-items:baseline;gap:14px;display:flex}.growth-timeline-record-heading h3{overflow-wrap:anywhere;margin-top:3px;font-size:16px;line-height:1.3}.growth-timeline-record-heading time{color:var(--muted);flex-shrink:0;font-size:13px}.growth-timeline-record-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px 14px;margin-top:7px;font-size:13px;display:flex}.growth-timeline-record-hint{color:var(--accent);margin-top:8px;font-size:13px}.growth-timeline-record-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.growth-record-list,.growth-empty-list{gap:18px;display:grid}.growth-record-rows{border-top:1px solid var(--border)}.growth-record-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:18px;padding:16px 0;display:flex}.growth-record-row:last-child{border-bottom:0;padding-bottom:0}.growth-record-row-main{min-width:0}.growth-record-row-main h3{overflow-wrap:anywhere;font-size:16px}.growth-record-row-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px 14px;margin-top:6px;font-size:13px;display:flex}.growth-record-row-actions,.growth-attachment-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.growth-record-row-actions{flex-shrink:0}.growth-delete-control{flex-wrap:wrap;align-items:center;gap:8px;display:inline-flex}.growth-attachment-panel{gap:14px;display:grid}.growth-file-picker{cursor:pointer;justify-self:start;align-items:center}.growth-file-picker input{opacity:0;width:1px;height:1px;position:absolute;overflow:hidden}.growth-file-picker:focus-within{outline:3px solid var(--focus);outline-offset:2px}.growth-attachment-list{border-top:1px solid var(--border);list-style:none}.growth-attachment-item{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;padding:12px 0;display:flex}.growth-attachment-item>span:first-child{gap:2px;min-width:0;display:grid}.growth-attachment-item strong{overflow-wrap:anywhere}.growth-attachment-item small{color:var(--muted);font-size:12px}.growth-project-controls{border:1px solid var(--border);background:#fbfcfb;border-radius:8px;margin-top:18px;padding:20px 24px}.growth-project-control-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}.restore-panel{background:#fffaf0;border:1px solid #ead7a6;border-radius:8px;margin-top:24px;padding:20px}.restore-panel h3{font-size:16px}.restore-panel>p{margin:6px 0 14px}.restore-summary{border-top:1px solid #ead7a6;margin-top:16px;padding-top:16px}.restore-summary form{margin-top:14px}.inline-error{margin-top:6px;display:block}.detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.detail-field dt,.detail-notes dt{color:var(--muted);font-size:13px}.detail-field dd,.detail-notes dd{overflow-wrap:anywhere;margin-top:3px}.detail-notes{border-top:1px solid var(--border);margin-top:20px;padding-top:16px}.gpa-summary-row{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:24px;padding-bottom:16px;display:flex}.empty-inline{padding:22px 0 4px}.section-footnote{margin-top:18px}.gpa-panel{gap:20px;padding-top:20px;display:grid}.gpa-form{gap:14px;display:grid}.gpa-form-grid{margin:0}.gpa-record-list{gap:16px;display:grid}.gpa-record-card{border:1px solid var(--border);border-radius:8px;gap:12px;padding:16px;display:grid}.gpa-record-card>form:last-child{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.placeholder-panel{background:0 0;border-style:dashed}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.page-heading h1{margin-top:4px;font-size:28px;line-height:1.25}.status-panel{border-top:1px solid var(--border);align-items:center;gap:14px;margin-top:32px;padding:24px 0;display:flex}.status-panel h2{font-size:16px}.status-panel p{color:var(--muted);margin-top:2px;font-size:14px}.status-indicator{background:#23855f;border:3px solid #d9f0e7;border-radius:50%;width:14px;height:14px}.talk-ai-job-card{background:var(--surface);border:1px solid var(--border);z-index:30;border-radius:8px;width:calc(100vw - 48px);max-width:340px;padding:16px;position:fixed;bottom:24px;right:24px;box-shadow:0 10px 28px #17211d24}.talk-ai-job-heading{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.talk-ai-job-heading strong{margin-top:4px;display:block}.talk-ai-job-spinner{border:3px solid #d9f0e7;border-top-color:var(--accent);border-radius:50%;flex:none;width:18px;height:18px;animation:.9s linear infinite talk-ai-job-spin}.talk-ai-job-note{color:var(--muted);margin-top:10px;font-size:13px}.student-growth-panel{gap:18px;margin-top:24px;display:grid}.student-growth-heading{color:var(--foreground);margin:0;font-size:20px}.student-growth-groups{gap:20px;display:grid}.student-growth-group{border-top:1px solid var(--border);padding-top:16px}.student-growth-group-heading{justify-content:space-between;align-items:center;gap:16px;display:flex}.student-growth-group-heading h3{color:var(--foreground);margin:0;font-size:16px}.student-growth-toggle{color:var(--accent);cursor:pointer;font:inherit;background:0 0;border:0;padding:4px 0;font-size:13px}.student-growth-toggle:hover{color:var(--accent-hover)}.student-growth-list{gap:10px;margin:12px 0 0;padding:0;list-style:none;display:grid}.student-growth-item{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:14px 16px;transition:border-color .15s,box-shadow .15s}.student-growth-item:hover{border-color:var(--accent);box-shadow:0 4px 12px #235d4414}.student-growth-item-heading{justify-content:space-between;align-items:baseline;gap:16px;display:flex}.student-growth-title{color:var(--foreground);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:700;text-decoration:none;overflow:hidden}.student-growth-title:hover{color:var(--accent-hover)}.student-growth-date{color:var(--muted);white-space:nowrap;flex:none;font-size:13px}.student-growth-meta{flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;display:flex}.student-growth-badge{background:color-mix(in srgb, var(--accent) 10%, var(--surface));border:1px solid color-mix(in srgb, var(--accent) 30%, var(--border));color:var(--accent);border-radius:999px;padding:2px 8px;font-size:12px;line-height:1.4}.student-growth-project,.student-growth-parent{color:var(--muted);font-size:13px}.student-growth-summary{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin:8px 0 0;font-size:13px;overflow:hidden}.student-growth-empty{border:1px dashed var(--border);color:var(--muted);text-align:center;margin:24px 0 0;padding:32px 20px}.talk-ai-launch-controls{gap:14px;max-width:540px;display:grid}@keyframes talk-ai-job-spin{to{transform:rotate(360deg)}}@media (max-width:560px){.auth-page{align-items:flex-start;padding:20px 14px}.login-panel{padding:24px 20px}.app-header{gap:16px;padding:12px 16px}.app-header .product-name{max-width:210px}.app-nav-inner{padding:4px max(16px, env(safe-area-inset-left)) 8px max(16px, env(safe-area-inset-right));gap:4px}.dashboard-page{padding:28px 16px}.workspace-page{padding:28px 16px 44px}.workspace-heading,.pagination{flex-direction:column;align-items:stretch}.student-filter-form,.talk-filter-form,.metrics-grid,.student-detail-grid{grid-template-columns:1fr}.workspace-panel{padding:18px}.growth-record-row,.growth-timeline-record,.growth-attachment-item{flex-direction:column;align-items:flex-start}.growth-record-row-actions,.growth-attachment-actions{width:100%}.growth-project-control-grid{grid-template-columns:1fr}.student-growth-item-heading{flex-direction:column;align-items:flex-start;gap:4px}.detail-grid,.form-grid{grid-template-columns:1fr}.talk-ai-job-card{width:calc(100vw - 32px);bottom:16px;right:16px}}.data-workspace{gap:20px;display:grid}.data-workspace>.page-heading{margin-bottom:0}.data-tab-panel{min-width:0}.data-panel{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:24px;box-shadow:0 1px 2px #0f172a0a}.data-panel-heading,.data-preview-heading{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.data-panel-heading h2,.data-preview-heading h3,.data-mapping-panel h3{color:var(--foreground);font-size:17px;font-weight:650;line-height:1.4}.data-panel-heading p,.data-preview-heading p,.data-mapping-panel>p{color:var(--muted);margin-top:5px;font-size:13px;line-height:1.6}.data-import-grid{grid-template-columns:minmax(240px,320px) minmax(0,1fr);gap:24px;margin-top:24px;display:grid}.data-import-controls,.data-preview-panel{min-width:0}.data-import-controls{align-content:start;gap:20px;display:grid}.data-import-controls .field-group>input[type=file]{color:var(--muted);background:#f8fafc;border:1px dashed #cbd5e1;border-radius:12px;width:100%;margin-top:8px;padding:14px;font-size:13px;display:block}.data-import-controls .field-group>input[type=file]::file-selector-button{color:#1d4ed8;cursor:pointer;background:#eff6ff;border:0;border-radius:999px;margin-right:10px;padding:8px 12px;font-size:12px;font-weight:600}.field-hint{color:var(--muted);margin-top:8px;font-size:12px;line-height:1.5}.data-mapping-panel,.data-preview-panel{background:#f8fafc;border:1px solid #e2e8f0;border-radius:14px;padding:16px}.data-mapping-list{gap:12px;max-height:620px;margin-top:16px;padding-right:2px;display:grid;overflow-y:auto}.data-mapping-field{color:#475569;gap:5px;font-size:12px;font-weight:600;display:grid}.data-mapping-field select{color:#334155;background:#fff;border:1px solid #cbd5e1;border-radius:9px;width:100%;min-height:36px;padding:7px 9px;font-size:13px}.data-preview-panel{min-height:260px}.data-preview-table-wrap{background:#fff;border:1px solid #e2e8f0;border-radius:10px;margin-top:16px;overflow-x:auto}.data-preview-table{border-collapse:collapse;width:100%;min-width:620px}.data-preview-table th,.data-preview-table td{text-align:left;white-space:nowrap;border-bottom:1px solid #f1f5f9;padding:11px 12px;font-size:13px}.data-preview-table th{color:#475569;background:#f8fafc;font-size:12px;font-weight:650}.data-preview-table td{color:#334155}.data-empty-preview{color:var(--muted);background:#fff;border:1px dashed #cbd5e1;border-radius:10px;justify-content:center;align-items:center;min-height:164px;margin-top:16px;padding:24px;font-size:13px;display:flex}.data-warning,.data-error-report,.data-success-report{border-radius:10px;margin-top:16px;padding:11px 13px;font-size:13px;line-height:1.6}.data-export-options{gap:12px;margin-top:24px;display:grid}.data-export-option{cursor:pointer;border:1px solid #e2e8f0;border-radius:12px;align-items:flex-start;gap:12px;padding:15px;transition:border-color .15s,background .15s;display:flex}.data-export-option:hover,.data-export-option.is-selected{background:#eff6ff;border-color:#93c5fd}.data-export-option input{accent-color:#2563eb;margin-top:3px}.data-export-option span{gap:3px;display:grid}.data-export-option strong{color:var(--foreground);font-size:14px;font-weight:650}.data-export-option small{color:var(--muted);font-size:12px;line-height:1.5}.data-export-button{align-items:center;gap:8px;margin-top:20px;display:inline-flex}.data-secondary-link{border-top:1px solid var(--border);margin-top:20px;padding-top:16px}.data-secondary-link a{color:#2563eb;font-size:13px;font-weight:600;text-decoration:none}.data-secondary-link a:hover{text-decoration:underline}.legacy-migration-form{gap:20px;margin-top:24px;display:grid}.legacy-migration-controls{grid-template-columns:minmax(0,1fr) minmax(260px,.8fr);gap:20px;display:grid}.legacy-migration-controls input[type=file],.legacy-migration-controls select{color:#334155;background:#f8fafc;border:1px solid #cbd5e1;border-radius:10px;width:100%;min-height:40px;margin-top:8px;padding:8px 10px;font-size:13px}.legacy-report{margin-top:24px}.legacy-report-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.legacy-report-summary>div{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;gap:5px;padding:14px;display:grid}.legacy-report-summary span{color:var(--muted);font-size:12px}.legacy-report-summary strong{color:var(--foreground);font-size:20px}.legacy-report-counts{color:#475569;flex-wrap:wrap;gap:8px 18px;margin-top:16px;font-size:13px;display:flex}.legacy-formal-import-form{border-top:1px solid var(--border);gap:10px;margin-top:24px;padding-top:20px;display:grid}.legacy-confirmation{color:var(--foreground);align-items:center;gap:9px;font-size:13px;font-weight:600;display:flex}.legacy-confirmation input{accent-color:#2563eb;width:16px;height:16px}.legacy-import-result{color:#047857;background:#ecfdf5;border:1px solid #a7f3d0;border-radius:10px;margin-top:16px;padding:11px 13px;font-size:13px;line-height:1.6}.legacy-import-result .legacy-report-counts{color:#047857;margin-top:8px}.import-batch-history{margin-top:20px}.import-batch-history-table-wrap{margin-top:20px;overflow-x:auto}.import-batch-history-table{border-collapse:collapse;width:100%;min-width:760px}.import-batch-history-table th,.import-batch-history-table td{color:#475569;text-align:left;vertical-align:middle;white-space:nowrap;border-bottom:1px solid #e2e8f0;padding:12px 10px;font-size:12px}.import-batch-history-table th{color:#64748b;background:#f8fafc;font-weight:650}.import-batch-history-table td:first-child{gap:3px;display:grid}.import-batch-history-table td:first-child strong{color:var(--foreground);font-size:13px;font-weight:650}.import-batch-history-table td:first-child small{color:#94a3b8;font-size:10px}.import-batch-actions{flex-wrap:wrap;gap:8px;display:flex}.import-batch-verification-summary{flex-wrap:wrap;gap:8px 18px;margin-top:6px;display:flex}.import-batch-verification-summary+small{margin-top:6px;display:block}.import-batch-status{border-radius:999px;padding:4px 8px;font-size:11px;font-weight:650;display:inline-flex}.import-batch-status.is-completed,.import-batch-status.is-rolled_back{color:#047857;background:#ecfdf5}.import-batch-status.is-completed_with_errors,.import-batch-status.is-rollback_failed,.import-batch-status.is-completed_needs_reconciliation{color:#92400e;background:#fffbeb}.import-batch-status.is-running,.import-batch-status.is-rolling_back{color:#1d4ed8;background:#eff6ff}.import-batch-status.is-failed{color:#b91c1c;background:#fef2f2}@media (max-width:680px){.legacy-migration-controls,.legacy-report-summary{grid-template-columns:1fr}}.data-warning{color:#92400e;background:#fffbeb;border:1px solid #fde68a}.data-error-report{color:#b91c1c;background:#fef2f2;border:1px solid #fecaca}.data-error-report ul{margin:5px 0 0 17px}.data-success-report{color:#047857;background:#ecfdf5;border:1px solid #a7f3d0}@media (max-width:840px){.data-import-grid{grid-template-columns:1fr}.data-mapping-list{max-height:none}}@media (max-width:560px){.data-panel{padding:18px}.data-panel-heading,.data-preview-heading{flex-direction:column}.data-panel-heading .inline-button,.data-preview-heading .inline-button{width:100%}}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.dorm-workspace{margin-top:24px}.dorm-tab-panel{min-width:0}.dorm-statistics{gap:18px;margin-top:24px;display:grid}.dorm-statistics-top{grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr);gap:18px;display:grid}.dorm-stat-card-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.dorm-stat-card,.dorm-rating-card,.dorm-trend-card,.dorm-list-filter-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:0 1px 2px #0f172a0a}.dorm-stat-card{align-items:center;gap:16px;min-height:112px;padding:20px;display:flex}.dorm-stat-icon{border-radius:12px;flex:none;justify-content:center;align-items:center;width:48px;height:48px;display:flex}.dorm-stat-card p{color:var(--muted);letter-spacing:.04em;font-size:12px;font-weight:500}.dorm-stat-card strong{color:var(--foreground);margin-top:4px;font-size:28px;line-height:1.2;display:block}.dorm-stat-card small{color:var(--muted);margin-top:4px;font-size:12px;display:block}.dorm-rating-card,.dorm-trend-card{padding:20px}.dorm-stat-heading{color:#4f46e5;align-items:center;gap:8px;margin-bottom:16px;display:flex}.dorm-stat-heading h3{color:var(--foreground);font-size:14px;font-weight:600}.dorm-rating-content{align-items:center;gap:24px;min-height:150px;display:flex}.dorm-rating-donut{border-radius:50%;flex:none;justify-content:center;align-items:center;width:132px;height:132px;display:flex;position:relative}.dorm-rating-donut:after{background:var(--surface);content:"";border-radius:50%;width:82px;height:82px;position:absolute}.dorm-rating-donut span{color:var(--foreground);z-index:1;font-size:20px;font-weight:700;position:relative}.dorm-rating-legend{gap:9px;display:grid}.dorm-rating-legend div{color:var(--muted);align-items:center;gap:6px;font-size:12px;display:flex}.dorm-rating-legend strong{color:var(--foreground);font-weight:600}.dorm-rating-dot{border-radius:50%;width:10px;height:10px;display:inline-block}.dorm-rating-dot-excellent{background:var(--dorm-rating-excellent-color)}.dorm-rating-dot-normal{background:var(--dorm-rating-normal-color)}.dorm-rating-dot-needs_rectification{background:var(--dorm-rating-needs-rectification-color)}.dorm-rating-empty{color:#cbd5e1;flex-direction:column;justify-content:center;align-items:center;min-height:150px;display:flex}.dorm-rating-empty p{color:var(--muted);margin-top:8px;font-size:13px}.dorm-trend-card{min-height:220px}.dorm-trend-svg{width:100%;height:150px;display:block;overflow:visible}.dorm-trend-grid-line{fill:none;stroke:var(--border);stroke-width:.6px}.dorm-trend-line{fill:none;stroke:var(--dorm-rating-normal-color);stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;vector-effect:non-scaling-stroke}.dorm-trend-point{fill:var(--dorm-rating-normal-color);stroke:var(--surface);stroke-width:.8px;vector-effect:non-scaling-stroke}.dorm-trend-point-excellent{fill:var(--dorm-rating-excellent-color)}.dorm-trend-point-needs_rectification{fill:var(--dorm-rating-needs-rectification-color)}.dorm-trend-empty{color:var(--muted);text-align:center;font-size:13px}.dorm-list-panel{margin-top:24px}.dorm-list-filter-card{padding:24px}.dorm-list-heading{align-items:flex-start}.dorm-list-heading h2{margin-top:4px}.dorm-list-heading .muted-text{margin-top:5px}.dorm-filter-form{grid-template-columns:minmax(240px,1fr) minmax(160px,220px) auto auto;align-items:end;gap:14px;margin-top:20px;display:grid}.dorm-input-with-icon{position:relative}.dorm-input-with-icon input{padding-left:40px}.dorm-input-icon{color:#94a3b8;pointer-events:none;position:absolute;top:50%;left:13px;transform:translateY(-50%)}.dorm-filter-form .filter-clear{white-space:nowrap}.dorm-timeline{margin-top:24px;position:relative}.dorm-timeline-line{background:var(--border);width:2px;position:absolute;top:0;bottom:0;left:20px}.dorm-timeline-items{gap:16px;display:grid}.dorm-record-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;margin-left:56px;padding:20px;transition:border-color .15s,box-shadow .15s;position:relative;box-shadow:0 1px 2px #0f172a0a}.dorm-record-card:hover{border-color:#cbd5e1;box-shadow:0 8px 20px #0f172a12}.dorm-timeline-node{border:3px solid var(--surface);background:#94a3b8;border-radius:50%;width:16px;height:16px;position:absolute;top:21px;left:-44px;box-shadow:0 0 0 4px #f1f5f9}.dorm-record-header{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.dorm-record-location{color:#94a3b8;align-items:center;gap:10px;min-width:0;display:flex}.dorm-record-location h3{color:var(--foreground);overflow-wrap:anywhere;font-size:17px;line-height:1.35}.dorm-record-date{color:var(--muted);margin-top:10px;font-size:13px}.dorm-record-notes{color:#475569;text-overflow:ellipsis;white-space:pre-wrap;background:#f8fafc;border-radius:12px;margin-top:14px;padding:12px;font-size:14px;overflow:hidden}.dorm-rating-badge{border:1px solid #0000;border-radius:999px;flex:none;padding:4px 9px;font-size:12px;font-weight:600;line-height:1.4}.dorm-rating-excellent{background:var(--dorm-rating-excellent-soft);border-color:var(--dorm-rating-excellent-border);color:var(--dorm-rating-excellent-text)}.dorm-rating-normal{background:var(--dorm-rating-normal-soft);border-color:var(--dorm-rating-normal-border);color:var(--dorm-rating-normal-text)}.dorm-rating-needs_rectification{background:var(--dorm-rating-needs-rectification-soft);border-color:var(--dorm-rating-needs-rectification-border);color:var(--dorm-rating-needs-rectification-text)}.dorm-record-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:14px;display:flex}.dorm-record-actions .secondary-button,.dorm-record-actions .danger-button{min-height:38px;padding:7px 12px}.dorm-delete-control{flex-direction:column;align-items:flex-start;gap:4px;display:inline-flex}.dorm-empty-state{background:var(--surface);border-radius:16px;margin-top:24px}.dorm-form{gap:20px;margin-top:24px;display:grid}.dorm-form-panel{margin-top:0}.dorm-form-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}.dorm-rating-field{border:0;grid-column:1/-1;min-width:0;padding:0}.dorm-rating-field legend{margin-bottom:7px;font-size:14px;font-weight:600}.dorm-rating-options{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.dorm-rating-option{background:var(--surface);border:1px solid var(--border);color:#475569;text-align:left;border-radius:12px;min-height:88px;padding:14px;transition:background-color .15s,border-color .15s,color .15s}.dorm-rating-option>span{font-size:14px;font-weight:600;display:block}.dorm-rating-option small{color:var(--muted);margin-top:5px;font-size:12px;line-height:1.5;display:block}.dorm-rating-option:hover,.dorm-rating-option:focus-visible{border-color:#94a3b8}.dorm-rating-option:focus-visible{outline-offset:2px;outline:3px solid #3b82f63d}.dorm-rating-option.is-selected{box-shadow:0 0 0 1px}.dorm-rating-option-excellent{background:var(--dorm-rating-excellent-soft);border-color:var(--dorm-rating-excellent-border);color:var(--dorm-rating-excellent-text)}.dorm-rating-option-excellent.is-selected{background:var(--dorm-rating-excellent-soft);border-color:var(--dorm-rating-excellent-color);color:var(--dorm-rating-excellent-text)}.dorm-rating-option-normal{background:var(--dorm-rating-normal-soft);border-color:var(--dorm-rating-normal-border);color:var(--dorm-rating-normal-text)}.dorm-rating-option-normal.is-selected{background:var(--dorm-rating-normal-soft);border-color:var(--dorm-rating-normal-color);color:var(--dorm-rating-normal-text)}.dorm-rating-option-needs_rectification{background:var(--dorm-rating-needs-rectification-soft);border-color:var(--dorm-rating-needs-rectification-border);color:var(--dorm-rating-needs-rectification-text)}.dorm-rating-option-needs_rectification.is-selected{background:var(--dorm-rating-needs-rectification-soft);border-color:var(--dorm-rating-needs-rectification-color);color:var(--dorm-rating-needs-rectification-text)}.dorm-field-wide{grid-column:1/-1}.dorm-form-actions{margin-top:0}.dorm-query-error,.dorm-action-error{margin-top:16px}.dorm-detail-panel{margin-top:24px}.dorm-detail-back{gap:8px}.dorm-detail-location{border:1px solid var(--border);background:#f8fafc;border-radius:12px;align-items:center;gap:12px;margin-top:24px;padding:14px 16px;display:flex}.dorm-detail-location-icon{color:#4f46e5;background:#e0e7ff;border-radius:999px;flex:none;justify-content:center;align-items:center;width:48px;height:48px;display:flex}.dorm-detail-location h3{color:var(--foreground);font-size:18px}.dorm-detail-location p{color:var(--muted);margin-top:2px;font-size:13px}.dorm-detail-notes{background:#fffbeb;border:1px solid #fde68a;border-radius:12px;margin-top:20px;padding:14px 16px}.dorm-detail-label{color:var(--muted);margin-bottom:6px;font-size:13px}.dorm-detail-notes>p:last-child{color:#475569;overflow-wrap:anywhere;white-space:pre-wrap}.dorm-detail-meta{border-top:1px solid var(--border);color:#94a3b8;margin-top:20px;padding-top:14px;font-size:12px}@media (max-width:760px){.dorm-statistics-top,.dorm-stat-card-grid,.dorm-form-fields,.dorm-rating-options{grid-template-columns:1fr}.dorm-rating-field,.dorm-field-wide{grid-column:auto}.dorm-filter-form{grid-template-columns:1fr}.dorm-filter-form .filter-clear{justify-self:start}.dorm-record-header{flex-direction:column}.dorm-record-card{margin-left:42px;padding:17px}.dorm-timeline-line{left:14px}.dorm-timeline-node{left:-36px}}@media (max-width:560px){.dorm-list-filter-card{padding:18px}.dorm-rating-content{flex-direction:column;align-items:flex-start}.dorm-rating-legend{grid-template-columns:repeat(3,minmax(0,1fr));width:100%}.dorm-record-actions{flex-direction:column;align-items:stretch}.dorm-record-actions>a,.dorm-record-actions .dorm-delete-control,.dorm-record-actions .dorm-delete-control button{width:100%}.dorm-record-actions>a,.dorm-record-actions .dorm-delete-control button{justify-content:center}}@media (min-width:561px) and (max-width:900px){.student-filter-form{grid-template-columns:repeat(2,minmax(0,1fr))}.filter-submit{width:max-content}}.attendance-workspace{margin-top:24px}.attendance-tab-panel{min-width:0}.attendance-form-panel,.attendance-list-panel,.attendance-detail-panel{margin-top:24px}.attendance-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:20px;display:grid}.attendance-field-wide{grid-column:1/-1}.attendance-student-selector{gap:8px;width:100%;display:grid}.attendance-locked-student,.attendance-selected-student{border:1px solid var(--border);background:#f4f6f5;border-radius:6px;flex-wrap:wrap;align-items:center;gap:8px;min-height:42px;padding:9px 12px;display:flex}.attendance-student-results{flex-wrap:wrap;gap:8px;display:flex}.attendance-student-option{border:1px solid var(--border);color:var(--foreground);background:#f4f6f5;border-radius:6px;padding:7px 10px}.attendance-student-option:hover,.attendance-student-option:focus-visible{border-color:var(--accent)}.attendance-filter-form{border-bottom:1px solid var(--border);grid-template-columns:minmax(220px,1fr) minmax(140px,auto) auto;align-items:end;gap:14px;margin-top:22px;padding-bottom:22px;display:grid}.attendance-filter-form .filter-clear{grid-column:1/-1}.attendance-table{min-width:860px}.attendance-row-actions{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.attendance-delete-control{flex-direction:column;align-items:flex-start;gap:4px;display:inline-flex}.attendance-status-badge{color:var(--accent);background:#edf6f1;border:1px solid #b7d7c7;border-radius:999px;padding:5px 9px;font-size:13px}.attendance-status-absent{color:#b91c1c;background:#fef2f2;border-color:#fecaca}.attendance-status-late{color:#92400e;background:#fef3c7;border-color:#f59e0b}.attendance-status-early_leave{color:#9a3412;background:#ffedd5;border-color:#f97316}.attendance-status-leave{color:#1d4ed8;background:#eff6ff;border-color:#bfdbfe}.attendance-status-legacy_unknown{color:#4b5563;background:#f3f4f6;border-color:#d1d5db}.attendance-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:24px;display:grid}.attendance-detail-grid>div{border-top:1px solid var(--border);padding-top:12px}.attendance-detail-grid dt{color:var(--muted);font-size:13px}.attendance-detail-grid dd{overflow-wrap:anywhere;white-space:pre-wrap;margin-top:4px}.attendance-detail-wide{grid-column:1/-1}.attendance-query-error,.attendance-action-error{margin-top:16px}@media (max-width:560px){.attendance-form-grid,.attendance-detail-grid,.attendance-filter-form{grid-template-columns:1fr}.attendance-field-wide,.attendance-detail-wide{grid-column:auto}}.attendance-form{gap:20px;display:grid}.attendance-form .attendance-form-panel{margin-top:0}.attendance-form-section .panel-heading{margin-bottom:20px}.attendance-form-section .attendance-form-grid{margin-top:0}.attendance-situation-grid{align-items:start}.attendance-status-field{border:0;grid-column:1/-1;min-width:0;padding:0}.attendance-status-field legend{margin-bottom:7px;font-size:14px;font-weight:600}.attendance-status-options{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.attendance-status-option{border:1px solid var(--border);color:#475569;background:#fff;border-radius:12px;min-height:46px;padding:10px 14px;font-size:14px;font-weight:600;transition:background-color .15s,border-color .15s,color .15s}.attendance-status-option:hover,.attendance-status-option:focus-visible{background:#f8fafc;border-color:#94a3b8}.attendance-status-option:focus-visible{outline-offset:2px;outline:3px solid #3b82f63d}.attendance-status-option.is-selected{border-color:#1d4ed8;box-shadow:0 0 0 1px #1d4ed8}.attendance-status-option-absent.is-selected{color:#b91c1c;background:#fef2f2}.attendance-status-option-late.is-selected{color:#92400e;background:#fef3c7;border-color:#f59e0b}.attendance-status-option-early_leave.is-selected{color:#9a3412;background:#ffedd5;border-color:#f97316}.attendance-status-option-leave.is-selected{color:#1d4ed8;background:#eff6ff}.attendance-input-with-icon{position:relative}.attendance-input-with-icon input{padding-left:40px}.attendance-input-icon{color:#94a3b8;pointer-events:none;position:absolute;top:50%;left:13px;transform:translateY(-50%)}.attendance-locked-student,.attendance-selected-student{background:#eff6ff;border:1px solid #bfdbfe;border-radius:12px;min-height:46px;padding:11px 14px}.attendance-selected-student{border-color:var(--border);background:#f8fafc}.attendance-student-option{background:#f8fafc;border-radius:10px;padding:9px 12px}.attendance-list-panel{padding:24px}.attendance-filter-form{border-bottom:0;grid-template-columns:minmax(240px,1fr) minmax(160px,220px) auto auto;margin-top:20px;padding-bottom:0}.attendance-filter-form .filter-clear{white-space:nowrap;grid-column:auto}.attendance-record-list{gap:16px;margin-top:24px;display:grid}.attendance-record-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:20px;transition:border-color .15s,box-shadow .15s;box-shadow:0 1px 2px #0f172a0a}.attendance-record-card:hover{border-color:#cbd5e1;box-shadow:0 8px 20px #0f172a12}.attendance-record-header{justify-content:space-between;align-items:flex-start;gap:20px;display:flex}.attendance-record-title-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.attendance-record-title-row h3{color:var(--foreground);font-size:18px;line-height:1.35}.attendance-student-id{border:1px solid var(--border);color:var(--muted);background:#f8fafc;border-radius:999px;padding:3px 9px;font-size:12px;line-height:1.4}.attendance-record-actions{flex-wrap:wrap;flex:none;align-items:center;gap:8px;display:flex}.attendance-record-action,.attendance-record-actions .danger-button{min-height:38px;padding:7px 12px}.attendance-record-actions .attendance-delete-control{display:inline-flex}.attendance-record-meta{border-top:1px solid var(--border);grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-top:20px;padding-top:16px;display:grid}.attendance-record-meta dt{color:var(--muted);font-size:12px;font-weight:600}.attendance-record-meta dd{color:var(--foreground);overflow-wrap:anywhere;margin-top:4px;font-size:14px}.attendance-record-meta-wide{grid-column:1/-1}.attendance-detail-back{gap:8px}.attendance-detail-student{border:1px solid var(--border);background:#f8fafc;border-radius:12px;align-items:center;gap:12px;margin-top:24px;padding:14px 16px;display:flex}.attendance-detail-student-icon{color:#2563eb;background:#dbeafe;border-radius:999px;flex:none;justify-content:center;align-items:center;width:48px;height:48px;display:flex}.attendance-detail-student h3{color:var(--foreground);font-size:18px}.attendance-detail-student p{color:var(--muted);margin-top:2px;font-size:13px}.attendance-detail-reason{background:#fffbeb;border-radius:12px;border:1px solid #fde68a!important;padding:14px 16px!important}.attendance-status-badge{border-radius:999px;padding:4px 9px;font-size:12px;font-weight:600;line-height:1.4}@media (max-width:1023px){.app-sidebar{display:none}.app-nav{background:var(--surface);border-bottom:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom);z-index:20;display:block;position:sticky;top:0}}@media (max-width:760px){.attendance-record-header{flex-direction:column}.attendance-record-actions{width:100%}.attendance-record-meta{grid-template-columns:repeat(2,minmax(0,1fr))}.attendance-filter-form{grid-template-columns:1fr}.attendance-filter-form .filter-clear{justify-self:start}.attendance-status-options{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:560px){.app-header{padding:12px 16px}.workspace-page{padding:28px 16px 44px}.attendance-list-panel{padding:18px}.attendance-record-meta{grid-template-columns:1fr}.attendance-record-meta-wide{grid-column:auto}}.dashboard-overview-page{max-width:1120px}.dashboard-banner{color:#fff;background:linear-gradient(105deg,#004098 0%,#2563eb 100%);border-radius:24px;overflow:hidden;box-shadow:0 18px 34px #1e40af2e}.dashboard-banner-content{padding:40px 32px}.dashboard-banner-date{color:#bfdbfe;font-size:14px;font-weight:600}.dashboard-banner h1{color:#fff;margin-top:8px;font-size:30px;line-height:1.25}.dashboard-banner p:last-child{color:#dbeafe;margin-top:12px;font-size:15px}.dashboard-degraded-banner{color:#9a3412;background:#fff7ed;border:1px solid #fed7aa;border-radius:16px;margin-top:18px;padding:14px 18px;font-size:14px}.dashboard-metrics-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:24px;display:grid}.dashboard-metric-card{background:var(--surface);border:1px solid var(--border);color:inherit;border-radius:16px;min-height:124px;padding:20px;text-decoration:none;transition:border-color .15s,box-shadow .15s,transform .15s;display:block}.dashboard-metric-card:hover{border-color:#bfdbfe;transform:translateY(-1px);box-shadow:0 8px 18px #0f172a14}.dashboard-metric-card:focus-visible{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #3b82f63d}.dashboard-metric-card-inner,.dashboard-metric-card-leading{align-items:flex-start;display:flex}.dashboard-metric-card-inner{justify-content:space-between;gap:12px}.dashboard-metric-card-leading{gap:12px;min-width:0}.dashboard-metric-icon{border-radius:12px;flex:0 0 40px;justify-content:center;align-items:center;width:40px;height:40px;display:inline-flex}.dashboard-metric-icon--blue{color:#2563eb;background:#eff6ff}.dashboard-metric-icon--indigo{color:#4f46e5;background:#eef2ff}.dashboard-metric-icon--red{color:#dc2626;background:#fef2f2}.dashboard-metric-icon--amber{color:#d97706;background:#fffbeb}.dashboard-metric-icon--emerald{color:#059669;background:#ecfdf5}.dashboard-metric-icon--purple{color:#7c3aed;background:#f5f3ff}.dashboard-metric-icon-svg{width:20px;height:20px}.dashboard-metric-copy{gap:4px;min-width:0;display:grid}.dashboard-metric-label{color:var(--muted);font-size:14px}.dashboard-metric-value-row{align-items:baseline;gap:4px;display:flex}.dashboard-metric-value{color:var(--foreground);font-size:28px;line-height:1}.dashboard-metric-suffix{color:#94a3b8;font-size:13px}.dashboard-metric-subtext{color:#94a3b8;font-size:12px;line-height:1.4}.dashboard-metric-badge{border-radius:999px;flex:none;padding:3px 8px;font-size:12px;font-weight:600;line-height:1.4}.dashboard-metric-badge--warning{color:#b91c1c;background:#fee2e2}.dashboard-metric-badge--info{color:#1d4ed8;background:#dbeafe}.dashboard-loading{min-height:440px}.dashboard-loading-banner{background:linear-gradient(105deg,#004098 0%,#2563eb 100%);border-radius:24px;gap:12px;min-height:176px;padding:40px 32px;display:grid}.dashboard-loading-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:24px;display:grid}.dashboard-loading-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;align-items:center;gap:12px;min-height:124px;padding:20px;display:flex}.dashboard-loading-icon{background:#e2e8f0;border-radius:12px;flex:0 0 40px;width:40px;height:40px}.dashboard-loading-card-copy{gap:10px;width:100%;display:grid}.dashboard-loading-line{background:#dbeafea3;border-radius:999px;height:10px;animation:1.6s ease-in-out infinite dashboard-loading-pulse;display:block}.dashboard-loading-line--date{background:#bfdbfeb8;width:180px}.dashboard-loading-line--title{background:#dbeafedb;width:220px;height:28px}.dashboard-loading-line--copy{background:#dbeafea3;width:320px}.dashboard-loading-line--label{width:84px}.dashboard-loading-line--value{width:56px;height:22px}@keyframes dashboard-loading-pulse{50%{opacity:.55}}@media (max-width:900px){.dashboard-metrics-grid,.dashboard-loading-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:560px){.dashboard-banner-content,.dashboard-loading-banner{padding:28px 22px}.dashboard-banner h1{font-size:26px}.dashboard-metrics-grid,.dashboard-loading-grid{grid-template-columns:1fr}.dashboard-metric-card,.dashboard-loading-card{min-height:112px}.dashboard-loading-line--copy{max-width:100%}}@media (prefers-reduced-motion:reduce){.app-sidebar-link,.app-nav-link,.dashboard-metric-card,.dashboard-loading-line{transition:none;animation:none}}
.data-task-progress{gap:8px;margin-top:16px;display:grid}.data-task-progress-label{color:#475569;justify-content:space-between;align-items:center;gap:12px;font-size:12px;font-weight:600;display:flex}.data-progress-track{background:#e2e8f0;border-radius:999px;width:100%;height:8px;overflow:hidden}.data-progress-fill{border-radius:inherit;background:#2563eb;height:100%;transition:width .25s}.data-progress-fill.is-indeterminate{width:38%;animation:1.2s ease-in-out infinite data-progress-indeterminate}@keyframes data-progress-indeterminate{0%{transform:translate(-120%)}to{transform:translate(280%)}}
.login-logo{object-fit:cover;border:1px solid #e2e8f0;border-radius:999px;width:36px;height:36px;margin-bottom:16px;display:block}.app-sidebar{padding:0}.app-sidebar-brand{padding:20px}.app-sidebar-logo{background:#f8fafc;padding:0;overflow:hidden}.app-sidebar-logo img{object-fit:cover;width:100%;height:100%;display:block}.app-sidebar-nav{margin-top:0;padding:0 12px 16px}.app-sidebar-link{border-radius:12px;min-height:44px}.app-header{min-height:56px;padding:12px 24px}.app-header-greeting{color:#64748b;font-size:14px}.app-header .secondary-button{color:#64748b;background:0 0;border-color:#0000;min-height:44px}.app-header .secondary-button:hover{color:#0f172a;background:#f1f5f9}.app-nav-inner{overscroll-behavior-inline:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch}.app-nav-inner::-webkit-scrollbar{display:none}.app-nav-link{color:#64748b;border-radius:12px;transition:background-color .15s,color .15s}.app-nav-link:hover,.app-nav-link:focus-visible,.app-nav-link.is-active{color:#1d4ed8;background:#eff6ff}.app-nav-link:focus-visible{outline-offset:2px;outline:3px solid #3b82f647}.data-workspace{gap:16px}.confirm-delete-dialog-backdrop{z-index:1000;background:#0f172a7a;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.confirm-delete-dialog{background:#fff;border:1px solid #e2e8f0;border-radius:16px;width:100%;max-width:420px;padding:24px;box-shadow:0 20px 45px #0f172a33}.confirm-delete-dialog h2{color:#0f172a;margin:0;font-size:20px;line-height:1.35}.confirm-delete-dialog-description{color:#64748b;margin:10px 0 0;line-height:1.6}.confirm-delete-dialog-error{margin:14px 0 0}.confirm-delete-dialog-actions{justify-content:flex-end;gap:10px;margin-top:22px;display:flex}.confirm-delete-dialog-actions .secondary-button,.confirm-delete-dialog-actions .danger-button{min-width:88px}.talk-dashboard{margin-top:24px}.talk-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.talk-stat-card{background:#fff;border:1px solid #e2e8f0;border-radius:16px;align-items:center;gap:16px;min-height:126px;padding:20px;display:flex}.talk-stat-card-indigo .talk-stat-icon{color:#6366f1;background:#eef2ff}.talk-stat-card-red .talk-stat-icon{color:#ef4444;background:#fef2f2}.talk-stat-icon{border-radius:12px;flex:0 0 48px;justify-content:center;align-items:center;height:48px;font-size:24px;display:inline-flex}.talk-stat-card p{color:#64748b;font-size:13px;font-weight:600}.talk-stat-card strong{color:#0f172a;margin-top:4px;font-size:30px;line-height:1.15;display:block}.talk-stat-card small{color:#94a3b8;margin-top:4px;font-size:11px;display:block}.talk-dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:16px;display:grid}.talk-chart-card{background:#fff;border:1px solid #e2e8f0;border-radius:16px;min-width:0;padding:20px}.talk-chart-heading{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.talk-chart-heading h3{font-size:16px;line-height:1.35}.talk-breakdown-chart,.talk-trend-chart{min-width:0;position:relative}.talk-breakdown-chart{height:190px;margin:12px -4px 4px}.talk-donut{border-radius:50%;width:128px;height:128px;margin:20px auto;position:relative}.talk-donut:after{content:"";background:#fff;border-radius:50%;position:absolute;inset:25px}.talk-chart-legend{gap:9px;list-style:none;display:grid}.talk-chart-legend li{grid-template-columns:10px minmax(0,1fr) auto;align-items:center;gap:8px;font-size:13px;display:grid}.talk-legend-swatch{border-radius:50%;width:9px;height:9px;display:block}.talk-legend-label{overflow-wrap:anywhere}.talk-chart-empty,.talk-feedback{color:#64748b;text-align:center;padding:32px 0 12px;font-size:13px}.talk-feedback-error{color:#9a3412;text-align:left;background:#fff7ed;border:1px solid #fed7aa;border-radius:10px;justify-content:center;align-items:center;gap:12px;padding:14px 16px;display:flex}.talk-trend-card{min-height:300px}.talk-trend-chart{color:#6366f1;height:210px;margin-top:18px}.talk-trend-svg{width:100%;height:auto;display:block;overflow:visible}.talk-trend-axis{stroke:#e2e8f0;stroke-width:1px}.talk-trend-labels{color:#64748b;justify-content:space-between;gap:12px;padding-top:4px;font-size:11px;display:flex;overflow-x:auto}.talk-top-students{gap:10px;margin-top:18px;list-style:none;display:grid}.talk-top-students li{background:#f8fafc;border-radius:10px;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 12px;display:grid}.talk-rank{color:#4338ca;background:#e0e7ff;border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;font-size:12px;font-weight:700;display:inline-flex}.talk-top-student-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.talk-top-student-name small{color:#94a3b8;margin-top:2px;font-size:11px;display:block}.talk-record-list{gap:16px;margin-top:22px;display:grid}.talk-record-card{background:#fff;border:1px solid #e2e8f0;border-radius:16px;justify-content:space-between;gap:24px;padding:22px;display:flex;box-shadow:0 1px 2px #0f172a0a}.talk-record-card-main{min-width:0}.talk-record-card-heading{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.talk-record-card h3{font-size:19px;line-height:1.35}.talk-student-link{color:#0f172a;text-decoration:none}.talk-student-link:hover,.talk-student-link:focus-visible{color:#2563eb}.talk-student-subtitle{color:#64748b;margin-top:3px;font-size:13px}.talk-attention-badge{white-space:nowrap;border-radius:999px;flex:none;align-items:center;min-height:32px;padding:6px 10px;font-size:12px;font-weight:600;line-height:1;display:inline-flex}.talk-attention-badge.is-normal{color:#047857;background:#ecfdf5}.talk-attention-badge.is-watch{color:#b45309;background:#fffbeb}.talk-attention-badge.is-focus{color:#c2410c;background:#fff7ed}.talk-attention-badge.is-crisis{color:#b91c1c;background:#fef2f2}.talk-record-meta{grid-template-columns:repeat(3,minmax(150px,1fr));gap:12px 22px;margin-top:18px;display:grid}.talk-record-meta p{color:#0f172a;overflow-wrap:anywhere;font-size:13px}.talk-record-meta p span{color:#94a3b8;margin-bottom:2px;font-size:11px;display:block}.talk-record-actions{flex-wrap:wrap;flex:none;justify-content:flex-end;align-items:flex-start;gap:8px;display:flex}.talk-delete-control{flex-direction:column;gap:6px;display:inline-flex}.talk-student-card-heading{justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}.talk-student-card-heading h2{margin-top:4px;font-size:20px}.talk-audio-panel{gap:10px;display:grid}.talk-audio-panel .panel-heading{margin-bottom:0}.talk-audio-player{width:100%;max-width:100%;display:block}.form-success{color:#047857;min-height:20px;font-size:13px}.attendance-created-success,.attendance-delete-success,.dorm-created-success,.dorm-delete-success{margin-top:16px}.talk-loading-heading,.talk-loading-card{background:#e2e8f0;border-radius:12px;animation:1.4s ease-in-out infinite talk-loading-pulse}.talk-loading-heading{max-width:720px;height:100px;margin-bottom:24px}.talk-loading-grid{gap:16px;display:grid}.talk-loading-card{height:150px}@keyframes talk-loading-pulse{50%{opacity:.55}}@media (max-width:560px){.confirm-delete-dialog-backdrop{align-items:flex-end;padding:12px}.confirm-delete-dialog-actions{flex-direction:column-reverse}.confirm-delete-dialog-actions .secondary-button,.confirm-delete-dialog-actions .danger-button{justify-content:center;width:100%}.talk-stat-grid,.talk-dashboard-grid{grid-template-columns:1fr}.talk-record-card{flex-direction:column;padding:18px}.talk-record-card-heading,.talk-student-card-heading{flex-direction:column;align-items:flex-start}.talk-record-meta{grid-template-columns:repeat(2,minmax(0,1fr))}.talk-record-actions{justify-content:flex-start}}.growth-project-combobox,.growth-student-combobox{min-width:0;position:relative}.growth-project-combobox>label,.growth-student-combobox>label{color:var(--foreground);margin-bottom:7px;font-size:13px;font-weight:650;line-height:1.4;display:block}.growth-project-trigger{color:var(--foreground);text-align:left;background:#fff;border:1px solid #cbd5e1;border-radius:10px;justify-content:space-between;align-items:center;gap:12px;width:100%;min-height:42px;padding:9px 11px;display:flex}.growth-project-trigger:hover:not(:disabled),.growth-project-trigger:focus-visible,.growth-student-input-shell:focus-within{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #2563eb24}.growth-project-trigger:disabled{cursor:not-allowed;opacity:.65}.growth-project-trigger-value,.growth-project-trigger-placeholder{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.growth-project-trigger-placeholder{color:#64748b}.growth-project-status{white-space:nowrap;border-radius:999px;padding:4px 7px;font-size:11px;font-weight:650;line-height:1.2}.growth-project-status-in_progress{color:#1d4ed8;background:#eff6ff}.growth-project-status-completed{color:#475569;background:#f1f5f9}.growth-project-status-draft{color:#92400e;background:#fef3c7}.growth-selector-popover{z-index:30;background:#fff;border:1px solid #dbe3ee;border-radius:12px;width:100%;max-width:100%;position:absolute;top:calc(100% + 6px);left:0;box-shadow:0 14px 30px #0f172a24}.growth-project-popover{padding:8px}.growth-selector-search-shell{color:#94a3b8;background:#f8fafc;border:1px solid #e2e8f0;border-radius:9px;align-items:center;gap:8px;padding:8px 10px;display:flex}.growth-selector-search-shell:focus-within{border-color:var(--accent);background:#fff;box-shadow:0 0 0 3px #2563eb1f}.growth-selector-search-shell input{color:var(--foreground);background:0 0;border:0;outline:0;width:100%;min-width:0;padding:0}.growth-selector-option-list{max-height:250px;padding:6px 0;overflow-y:auto}.growth-selector-option{color:var(--foreground);text-align:left;background:#fff;border:0;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;width:100%;min-height:40px;padding:8px 10px;font-size:13px;display:flex}.growth-selector-option:hover:not(:disabled),.growth-selector-option:focus-visible{background:#eff6ff;outline:none}.growth-selector-option-name{align-items:center;gap:7px;min-width:0;display:flex}.growth-selector-option-name strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.growth-selector-option-action{color:#2563eb;white-space:nowrap;flex:none;font-size:12px}.growth-selector-clear{color:#64748b;justify-content:flex-start}.growth-selector-empty{color:#94a3b8;text-align:center;margin:0;padding:12px 10px;font-size:13px}.growth-project-create-option{color:#2563eb;text-align:left;background:#fff;border:0;border-top:1px solid #eef2f7;align-items:center;gap:7px;width:100%;padding:10px;font-size:13px;font-weight:650;display:flex}.growth-project-create-option:hover,.growth-project-create-option:focus-visible{background:#eff6ff;outline:none}.growth-project-create-panel{border-top:1px solid #eef2f7;gap:7px;padding:12px 2px 2px;display:grid}.growth-project-create-panel>label{color:#475569;font-size:12px;font-weight:650}.growth-project-create-panel>input{background:#fff;border:1px solid #cbd5e1;border-radius:9px;min-height:40px;padding:8px 10px}.growth-project-create-panel>input:focus{border-color:var(--accent);outline:0;box-shadow:0 0 0 3px #2563eb1f}.growth-project-create-actions{justify-content:flex-end;gap:8px;margin-top:4px;display:flex}.growth-project-create-actions .primary-button,.growth-project-create-actions .secondary-button{width:auto;min-height:36px;padding:7px 11px}.growth-student-input-shell{cursor:text;background:#fff;border:1px solid #cbd5e1;border-radius:10px;flex-wrap:wrap;align-items:center;gap:7px;min-height:42px;padding:5px 8px;display:flex}.growth-student-input-shell input{background:0 0;border:0;outline:0;flex:160px;min-width:120px;min-height:30px;padding:3px 4px}.growth-student-input-shell .growth-chip{flex:0 auto;max-width:100%;padding:5px 8px;font-size:12px}.growth-selector-help{color:#94a3b8;margin:6px 0 0;font-size:12px;line-height:1.5}.growth-student-combobox>.growth-selector-popover{max-height:250px;padding:6px;overflow-y:auto}.growth-student-combobox>.growth-selector-popover .growth-selector-option{padding:9px 10px}.student-gpa-overview{gap:18px;display:grid}.student-gpa-overview .panel-heading{margin-bottom:0}.gpa-overview-summary{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.gpa-overview-value,.gpa-overview-trend-card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;min-width:0;padding:14px}.gpa-overview-value{gap:8px;display:grid}.gpa-overview-value>span,.gpa-overview-trend-card>span,.gpa-overview-trend-list>div>span,.gpa-overview-record-trends>span{color:#64748b;font-size:12px;font-weight:650}.gpa-overview-value strong{color:var(--foreground);font-variant-numeric:tabular-nums;font-size:24px;line-height:1.1}.gpa-overview-trend-card{gap:10px;display:grid}.gpa-overview-trend-list{gap:7px;display:grid}.gpa-overview-trend-list>div,.gpa-overview-record-trends>span{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px;display:flex}.gpa-trend{font-variant-numeric:tabular-nums;white-space:nowrap;align-items:center;gap:3px;font-size:12px;font-weight:700;display:inline-flex}.gpa-trend-icon{font-size:15px;line-height:1}.gpa-trend-label{font-size:11px;font-weight:600}.gpa-trend-up{color:#047857}.gpa-trend-down{color:#dc2626}.gpa-trend-flat,.gpa-trend-baseline,.gpa-trend-missing{color:#64748b}.gpa-overview-records{min-width:0}.gpa-overview-records-heading{justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;display:flex}.gpa-overview-records-heading h3{font-size:15px}.gpa-overview-list{gap:10px;display:grid}.gpa-overview-record{background:#fff;border:1px solid #e2e8f0;border-radius:12px;grid-template-columns:minmax(130px,1fr) auto minmax(230px,1.2fr);align-items:center;gap:12px;min-width:0;padding:12px 14px;display:grid}.gpa-overview-record-heading{gap:4px;min-width:0;display:grid}.gpa-overview-record-heading strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.gpa-overview-record-values{color:#334155;font-variant-numeric:tabular-nums;white-space:nowrap;flex-wrap:wrap;align-items:center;gap:10px;font-size:13px;display:flex}.gpa-overview-record-trends{gap:4px;min-width:0;display:grid}.gpa-overview-note{margin-top:-8px}@media (max-width:960px){.gpa-overview-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.gpa-overview-record{grid-template-columns:minmax(130px,1fr) auto}.gpa-overview-record-trends{border-top:1px solid #eef2f7;grid-column:1/-1;padding-top:9px}}@media (max-width:560px){.gpa-overview-summary{grid-template-columns:minmax(0,1fr)}.gpa-overview-record{grid-template-columns:minmax(0,1fr);align-items:start}.gpa-overview-record-values,.gpa-overview-record-trends{grid-column:auto}.gpa-overview-record-trends{width:100%}.growth-project-create-actions{justify-content:stretch}.growth-project-create-actions .primary-button,.growth-project-create-actions .secondary-button{flex:1 1 0}}.settings-page{min-width:0;max-width:840px}.settings-page-description{color:var(--muted);margin-top:8px;font-size:14px}.settings-page-content{margin-top:24px}.settings-page-content>.settings-stack{margin-top:0}.settings-stack{gap:20px;min-width:0;margin-top:28px;display:grid}.settings-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;min-width:0;overflow:hidden;box-shadow:0 1px 2px #0f172a0a}.settings-card-header{border-bottom:1px solid #f1f5f9;justify-content:space-between;align-items:flex-start;gap:12px;min-width:0;padding:20px 24px 16px;display:flex}.settings-card-header>svg{color:var(--muted);flex:none;width:20px;height:20px;margin-top:1px}.settings-card-header h2,.settings-card-header h3{color:var(--foreground);min-width:0;font-size:16px;line-height:1.35}.settings-card-kicker{letter-spacing:.08em;text-transform:uppercase;font-weight:700;color:var(--accent)!important;margin:0 0 5px!important;font-size:11px!important;line-height:1.3!important}.settings-card-header p{color:var(--muted);overflow-wrap:anywhere;margin-top:5px;font-size:13px;line-height:1.6}.settings-card-content{min-width:0;padding:20px 24px 24px}.settings-logo-content{flex-wrap:wrap;align-items:center;gap:18px;display:flex}.settings-logo-copy{min-width:0}.settings-logo-copy strong{color:var(--foreground);overflow-wrap:anywhere;font-size:14px;display:block}.settings-logo-copy p{color:var(--muted);overflow-wrap:anywhere;margin-top:5px;font-size:13px;line-height:1.6}.settings-logo-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;display:flex}.settings-logo-actions .primary-button{cursor:pointer;width:auto}.settings-logo-actions input[type=file]{opacity:0;width:1px;height:1px;position:absolute;overflow:hidden}.settings-branding-form,.settings-inline-form{gap:20px;min-width:0;display:grid}.settings-field{flex-direction:column;gap:7px;min-width:0;display:flex}.settings-field-narrow{max-width:420px}.settings-field label{color:var(--foreground);font-size:14px;font-weight:600}.settings-field input{color:var(--foreground);background:#fff;border:1px solid #cbd5e1;border-radius:10px;width:100%;min-width:0;height:42px;padding:0 12px}.settings-field input::placeholder{color:#94a3b8}.settings-submit-button{justify-content:center;width:auto;min-width:128px}.settings-card-content>p{color:var(--muted);font-size:13px}.settings-backup-summary{gap:18px;min-width:0;display:grid}.settings-backup-status-row{flex-wrap:wrap;align-items:flex-start;gap:10px 12px;min-width:0;display:flex}.settings-backup-status{border-radius:999px;flex:none;padding:6px 10px;font-size:12px;font-weight:700;line-height:1.3;display:inline-flex}.settings-backup-status-verified{color:#047857;background:#ecfdf5}.settings-backup-status-not_configured,.settings-backup-status-no_backup{color:#a16207;background:#fefce8}.settings-backup-status-verification_failed,.settings-backup-status-manifest_invalid{color:#b91c1c;background:#fef2f2}.settings-backup-status-unavailable{color:#475569;background:#f1f5f9}.settings-backup-notice,.settings-backup-warning{color:var(--muted);overflow-wrap:anywhere;min-width:0;margin:2px 0 0;font-size:13px;line-height:1.6}.settings-backup-warning{color:#a16207}.settings-backup-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 16px;min-width:0;margin:0;display:grid}.settings-backup-grid>div{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;min-width:0;padding:12px}.settings-backup-grid dt{color:var(--muted);font-size:12px;line-height:1.4}.settings-backup-grid dd{color:var(--foreground);overflow-wrap:anywhere;margin:4px 0 0;font-size:14px;font-weight:700;line-height:1.5}.settings-logo{background:#eff6ff;border:1px solid #dbeafe;border-radius:16px;flex:0 0 80px;justify-content:center;align-items:center;width:80px;max-width:100%;height:80px;display:flex;overflow:hidden}.settings-logo img{object-fit:cover;width:100%;max-width:100%;height:100%;display:block}.settings-form{gap:18px;min-width:0;display:grid}.settings-form .field-group{min-width:0}.settings-form input,.settings-form textarea,.settings-form select{min-width:0;max-width:100%}.settings-form input:focus,.settings-form textarea:focus,.settings-form select:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #2563eb24}.settings-field-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;min-width:0;display:grid}.settings-field-grid>*{min-width:0}.settings-action-row{flex-wrap:wrap;align-items:center;gap:10px 12px;min-width:0;display:flex}.settings-action-row .primary-button,.settings-action-row .secondary-button{justify-content:center;width:auto;max-width:100%}.settings-feedback{overflow-wrap:anywhere;border-radius:10px;max-width:100%;padding:10px 12px;font-size:13px;line-height:1.5}.settings-feedback-error{color:#b91c1c;background:#fef2f2;border:1px solid #fecaca}.settings-feedback-success{color:#047857;background:#ecfdf5;border:1px solid #a7f3d0}.settings-feedback button{color:inherit;text-underline-offset:2px;background:0 0;border:0;margin-left:8px;padding:0;font-weight:600;text-decoration:underline}.settings-session-list{gap:16px;min-width:0;display:grid}.settings-session-group{border:1px solid var(--border);background:#fff;border-radius:12px;min-width:0;overflow:hidden}.settings-session-group-header{border-bottom:1px solid #f1f5f9;justify-content:space-between;align-items:center;gap:14px;min-width:0;padding:16px 18px;display:flex}.settings-session-group-header h3{color:var(--foreground);font-size:14px;line-height:1.4}.settings-session-group-header p{color:var(--muted);margin-top:4px;font-size:12px;line-height:1.5}.settings-session-row{gap:12px;min-width:0;padding:16px 18px;display:grid}.settings-session-row+.settings-session-row{border-top:1px solid #f1f5f9}.settings-session-row-heading{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.settings-session-row-heading strong{color:var(--foreground);font-size:14px}.settings-session-badge{color:var(--accent);background:#eff6ff;border-radius:999px;padding:3px 8px;font-size:11px;font-weight:700}.settings-session-details{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;min-width:0;display:grid}.settings-session-details dt{color:var(--muted);font-size:11px;line-height:1.4}.settings-session-details dd{color:var(--foreground);overflow-wrap:anywhere;margin-top:3px;font-size:12px;line-height:1.5}.settings-session-row .secondary-button{justify-self:start;width:auto}.settings-session-empty{color:var(--muted);padding:16px 18px;font-size:13px;line-height:1.6}.settings-placeholder{color:var(--muted);background:#f8fafc;border:1px dashed #cbd5e1;border-radius:12px;min-width:0;padding:16px;font-size:13px;line-height:1.6}.settings-about-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.settings-about-grid>div{background:#f8fafc;border-radius:12px;min-width:0;padding:14px}.settings-about-grid span{color:var(--muted);font-size:12px;display:block}.settings-about-grid strong{color:var(--foreground);overflow-wrap:anywhere;margin-top:5px;font-size:14px;display:block}.settings-about-note{margin-top:16px;line-height:1.6}.app-nav-brand{min-width:0;padding:max(12px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-left)) 4px max(16px, env(safe-area-inset-right));align-items:center;gap:10px;display:flex}.app-nav-brand-logo{object-fit:cover;background:#eff6ff;border:1px solid #dbeafe;border-radius:999px;flex:0 0 32px;justify-content:center;align-items:center;width:32px;max-width:100%;height:32px;display:flex;overflow:hidden}.app-nav-brand-logo img{object-fit:cover;width:100%;height:100%;display:block}.app-nav-brand-copy{overflow-wrap:anywhere;word-break:break-word;flex-direction:column;flex:auto;min-width:0;line-height:1.3;display:flex}.app-nav-brand-copy>*{overflow-wrap:anywhere;word-break:break-word;max-width:100%}.app-nav-brand-copy strong,.app-nav-brand-copy p:first-child{color:var(--foreground);font-size:13px;font-weight:700}.app-nav-brand-copy p:last-child,.app-nav-brand-copy span:last-child{color:var(--muted);margin-top:2px;font-size:11px}.app-nav-brand+.app-nav-inner{padding-top:6px}@media (max-width:560px){.app-header{padding:12px max(16px, env(safe-area-inset-left)) 12px max(16px, env(safe-area-inset-right))}.app-nav-inner{gap:4px;padding-top:4px;padding-bottom:8px}.app-nav-brand+.app-nav-inner{padding-top:4px}}@media (max-width:390px){.settings-page{padding-left:14px;padding-right:14px}.settings-card-header,.settings-card-content{padding-left:16px;padding-right:16px}.settings-session-group-header{flex-direction:column;align-items:flex-start}.settings-session-group-header .secondary-button,.settings-session-row .secondary-button{width:100%}.settings-session-details{grid-template-columns:minmax(0,1fr)}.settings-field-grid,.settings-about-grid,.settings-backup-grid{grid-template-columns:1fr}.settings-action-row{flex-direction:column;align-items:stretch}.settings-action-row .primary-button,.settings-action-row .secondary-button,.settings-action-row button{justify-content:center;width:100%}.settings-feedback{padding:10px}.settings-feedback button{margin-top:4px;margin-left:0;display:block}.app-nav-brand{padding-left:max(14px, env(safe-area-inset-left));padding-right:max(14px, env(safe-area-inset-right));align-items:flex-start}.app-nav-brand-copy,.app-nav-brand-copy>*{overflow-wrap:anywhere;word-break:break-word}.app-nav-inner{padding-left:max(14px, env(safe-area-inset-left));padding-right:max(14px, env(safe-area-inset-right))}}.app-content,.workspace-page,.dashboard-page,.data-workspace,.growth-workspace,.attendance-workspace,.dorm-workspace,.talks-workspace,.settings-page,.workspace-panel,.data-panel,.student-card,.growth-analytics-panel,.talk-chart-card,.page-heading>*,.workspace-heading>*,.panel-heading>*,.data-panel-heading>*,.data-preview-heading>*,.growth-analytics-heading>*,.growth-project-timeline-heading>*,.attendance-record-header>*,.dorm-record-header>*{min-width:0}.student-card-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;min-width:0;margin-top:22px;display:grid}.student-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;gap:16px;padding:18px;display:grid;box-shadow:0 1px 2px #0f172a0a}.student-card-header{align-items:flex-start;gap:12px;min-width:0;display:flex}.student-card-avatar{color:#1d4ed8;background:#eff6ff;border:1px solid #dbeafe;border-radius:14px;flex:0 0 44px;justify-content:center;align-items:center;width:44px;height:44px;font-size:18px;font-weight:700;display:inline-flex}.student-card-identity{min-width:0}.student-card-identity h3{color:var(--foreground);overflow-wrap:anywhere;font-size:17px;line-height:1.35}.student-card-identity p{color:var(--muted);overflow-wrap:anywhere;margin-top:3px;font-size:13px}.student-card-details{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-width:0;display:grid}.student-card-details>div{min-width:0}.student-card-details dt{color:var(--muted);font-size:12px;line-height:1.4}.student-card-details dd{color:var(--foreground);overflow-wrap:anywhere;margin-top:3px;font-size:13px;line-height:1.5}.student-card-footer{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding-top:12px;display:flex}.primary-button,.secondary-button,.danger-button{min-height:44px}.table-wrap,.data-preview-table-wrap,.import-batch-history-table-wrap{overscroll-behavior-inline:contain;scrollbar-width:thin;-webkit-overflow-scrolling:touch;min-width:0;max-width:100%;overflow-x:auto}.table-wrap:focus-visible,.data-preview-table-wrap:focus-visible,.import-batch-history-table-wrap:focus-visible{outline-offset:2px;outline:3px solid #3b82f647}.settings-logo-actions:focus-within{outline-offset:3px;border-radius:10px;outline:3px solid #3b82f647}.talk-ai-job-card{max-height:min(320px,100dvh - 32px);overflow-y:auto}.talk-ai-job-note,.talk-ai-job-note p,.talk-audio-panel,.data-panel p,.import-batch-history td,.import-batch-history strong,.legacy-migration-panel,.legacy-migration-panel label{overflow-wrap:anywhere}@media (max-width:1023px){.workspace-page,.dashboard-page{padding:28px 24px 48px}.student-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.growth-analytics-grid{grid-template-columns:minmax(0,1fr)}.growth-radar-data-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 16px;margin-top:12px;display:grid}.talk-dashboard-grid{grid-template-columns:minmax(0,1fr)}.talk-record-card,.attendance-record-header,.dorm-record-header{flex-direction:column}.talk-record-actions,.attendance-record-actions,.dorm-record-actions{justify-content:flex-start;width:100%}.talk-record-meta{grid-template-columns:repeat(2,minmax(0,1fr))}.growth-timeline-filter{min-width:min(220px,100%)}.app-shell:has(.talk-ai-job-card) .app-content{padding-bottom:calc(180px + env(safe-area-inset-bottom))}.talk-ai-job-card{bottom:max(16px, env(safe-area-inset-bottom));right:max(16px, env(safe-area-inset-right))}}@media (max-width:840px){.student-filter-form,.talk-filter-form,.attendance-filter-form,.dorm-filter-form{grid-template-columns:repeat(2,minmax(0,1fr))}.growth-analytics-grid,.talk-dashboard-grid{grid-template-columns:minmax(0,1fr)}.talk-record-card{flex-direction:column}.data-preview-table-wrap:before,.import-batch-history-table-wrap:before{color:var(--muted);content:"左右滑动查看完整表格";padding:10px 12px 0;font-size:12px;line-height:1.4;display:block}}@media (max-width:760px){.growth-timeline-record{grid-template-columns:10px minmax(0,1fr)}.growth-timeline-record-heading{flex-direction:column;align-items:flex-start;gap:6px}.growth-timeline-record-heading time{white-space:normal}.growth-timeline-record-actions{grid-column:2;justify-content:flex-start;width:100%}.growth-timeline-filter{width:100%;min-width:0}.settings-field-grid,.settings-about-grid,.settings-session-details{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:560px){.workspace-page,.dashboard-page{padding:24px 16px 44px}.workspace-heading,.panel-heading,.data-panel-heading,.data-preview-heading,.growth-analytics-heading{flex-direction:column;align-items:flex-start}.workspace-heading h1{font-size:24px}.heading-actions,.panel-heading .heading-actions,.data-panel-heading .inline-button,.data-preview-heading .inline-button{width:100%}.heading-actions>a,.heading-actions>button,.panel-heading .heading-actions>a,.panel-heading .heading-actions>button,.data-panel-heading .inline-button,.data-preview-heading .inline-button{justify-content:center;width:100%;max-width:100%}.student-card-grid{grid-template-columns:minmax(0,1fr)}.student-card-details{grid-template-columns:repeat(2,minmax(0,1fr))}.student-filter-form,.talk-filter-form,.attendance-filter-form,.dorm-filter-form{grid-template-columns:minmax(0,1fr)}.student-filter-form .filter-submit,.talk-filter-form .filter-submit,.attendance-filter-form .filter-submit,.dorm-filter-form .filter-submit{width:100%}.growth-stat-grid,.talk-stat-grid,.talk-record-meta,.settings-field-grid,.settings-about-grid,.settings-session-details,.growth-radar-data-list{grid-template-columns:minmax(0,1fr)}.growth-analytics-panel,.talk-chart-card,.data-panel,.settings-card-content,.talk-record-card{padding:18px}.talk-record-card-heading,.talk-student-card-heading{flex-direction:column;align-items:flex-start}.talk-ai-job-card{bottom:max(16px, env(safe-area-inset-bottom));left:max(16px, env(safe-area-inset-left));right:max(16px, env(safe-area-inset-right));width:auto}.settings-logo-actions,.settings-action-row{flex-direction:column;align-items:stretch}.settings-logo-actions>*,.settings-action-row>*{justify-content:center;width:100%}.settings-logo-actions .file-picker-trigger{width:100%}}@media (prefers-reduced-motion:reduce){.student-card,.talk-ai-job-card,.workspace-tabs,.workspace-tabs>a{scroll-behavior:auto;transition:none;animation:none}}.workspace-tabs{box-sizing:border-box;overscroll-behavior-inline:contain;scrollbar-width:none;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:12px;align-self:flex-start;align-items:center;gap:2px;width:max-content;min-width:0;max-width:100%;height:54px;padding:4px;display:inline-flex;overflow-x:auto}.workspace-tabs::-webkit-scrollbar{display:none}.workspace-tabs>a{box-sizing:border-box;color:#64748b;text-align:center;white-space:nowrap;background:0 0;border:0;border-radius:8px;flex:none;justify-content:center;align-items:center;height:44px;min-height:44px;padding:0 14px;font-size:14px;font-weight:500;line-height:1.35;text-decoration:none;display:inline-flex}.workspace-tabs>a:hover{color:#0f172a;background:0 0}.workspace-tabs>a.is-active{color:#0f172a;background:#fff;border:0;padding:0 14px;box-shadow:0 1px 2px #0f172a14}.workspace-tabs>a:focus-visible{outline-offset:-2px;outline:3px solid #3b82f647}.file-picker{gap:6px;min-width:0;display:grid}.file-picker-control{align-items:center;min-width:0;min-height:42px;display:flex}.file-picker-input{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.file-picker-trigger:focus-within{outline-offset:3px;outline:3px solid #3b82f647}.file-picker-trigger{cursor:pointer;white-space:nowrap;justify-content:center;min-width:112px;min-height:42px}.file-picker-input:disabled{cursor:not-allowed;opacity:.65}.file-picker:has(.file-picker-input:disabled) .file-picker-trigger{cursor:not-allowed;opacity:.65}.file-picker-name,.file-picker-description{color:var(--muted);overflow-wrap:anywhere;min-width:0;margin:0;font-size:12px;line-height:1.45}.file-picker-name{color:var(--foreground);font-weight:600}.settings-logo-actions .file-picker{align-items:flex-start}.settings-logo-actions .file-picker-name{display:none}.settings-logo-actions .file-picker-trigger,.settings-submit-button{min-width:132px}.workspace-tabs-row{margin-top:16px}.workspace-tabs-row .workspace-tabs{margin-top:0}.growth-tab-panel{gap:18px;margin-top:16px;display:grid}.growth-analytics-dashboard,.growth-tab-panel>.growth-timeline,.growth-tab-panel>.growth-empty-list{margin-top:0}.growth-radar-total{white-space:nowrap;align-items:baseline;gap:6px;display:inline-flex}.growth-radar-total strong{color:var(--foreground);font-variant-numeric:tabular-nums;font-size:16px}.growth-radar-empty{color:var(--muted);justify-content:space-between;align-items:center;gap:12px;margin-top:-2px;font-size:13px;line-height:1.5;display:flex}.growth-radar-empty .text-link{flex:none;font-weight:600}.growth-radar-chart-shell{width:100%;min-height:280px;position:relative}.growth-radar-chart{width:100%;min-width:0;height:280px;position:relative}.growth-radar-chart .recharts-responsive-container{max-width:100%}.growth-radar-chart .recharts-surface{display:block;overflow:visible}.growth-radar-chart .recharts-polar-angle-axis-tick-value{fill:var(--muted);font-size:12px;font-weight:500}.growth-radar-chart .recharts-radar-polygon{stroke:#004098;stroke-width:2px}.growth-radar-chart .recharts-radar-polygon .recharts-polygon{fill:#00409833;stroke:#004098;stroke-width:2px}.growth-radar-chart .recharts-polar-grid-concentric-polygon{fill:#0000;stroke:#cbd5e1}.growth-radar-zero{color:var(--muted);pointer-events:none;justify-content:center;align-items:center;font-size:14px;display:flex;position:absolute;inset:0}.growth-radar-data-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 12px;min-width:0;margin:4px 0 0;padding:0;list-style:none;display:grid}.growth-radar-data-list li{color:var(--muted);border-top:1px solid #f1f5f9;justify-content:space-between;align-items:center;gap:8px;min-width:0;padding-top:8px;font-size:12px;line-height:1.4;display:flex}.growth-radar-axis-summary-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.growth-radar-axis-summary-count{color:var(--foreground);font-variant-numeric:tabular-nums;flex:none}@media (max-width:560px){.workspace-tabs{align-self:stretch;width:100%}.workspace-tabs>a{flex:1 1 0;width:auto;min-width:112px;padding-left:12px;padding-right:12px}.workspace-tabs>a.is-active{padding-left:12px;padding-right:12px}.workspace-tabs.data-tabs>a{flex:1 1 0;min-width:88px;padding-left:8px;padding-right:8px}.workspace-tabs-row{margin-top:12px}.growth-radar-chart-shell,.growth-radar-chart{min-height:250px}.growth-radar-chart{height:250px}.growth-radar-empty{flex-direction:column;align-items:flex-start;gap:4px}.growth-radar-data-list{grid-template-columns:repeat(2,minmax(0,1fr))}}.workspace-panel,.data-panel,.settings-card,.attendance-ranking-card,.attendance-trend-card,.dorm-rating-card,.dorm-trend-card{min-width:0}.workspace-tabs>a{box-sizing:border-box;height:44px;min-height:44px;line-height:1.35}.student-filter-form{background:#f8fafc;border:1px solid #e2e8f0;border-radius:14px;grid-template-columns:minmax(220px,2fr) repeat(5,minmax(112px,1fr)) auto auto;align-items:end;margin-top:20px;padding:16px}.student-filter-form>.field-group,.attendance-filter-form>.field-group,.dorm-filter-form>.field-group,.student-filter-form input,.student-filter-form select,.attendance-filter-form input,.attendance-filter-form select,.dorm-filter-form input,.dorm-filter-form select{min-width:0}.student-filter-form .filter-clear,.attendance-filter-form .filter-clear,.dorm-filter-form .filter-clear{white-space:nowrap;grid-column:auto;align-self:center}.student-filter-form .filter-submit,.attendance-filter-form .filter-submit,.dorm-filter-form .filter-submit{align-self:end;min-width:72px}.form-span-full{grid-column:1/-1}.student-detail-grid{align-items:stretch;margin-top:24px}.student-detail-grid>.workspace-panel{height:100%;margin-top:0}.student-form,.talk-form{gap:18px;min-width:0;display:grid}.student-form>.form-section,.talk-form>.form-section,.student-form>.workspace-panel,.talk-form>.workspace-panel{margin-top:0}.student-form .form-grid,.talk-form .form-grid,.student-form .field-group,.talk-form .field-group{min-width:0}.student-form .readonly-field{overflow-wrap:anywhere}.student-detail-grid .detail-grid{gap:10px 12px}.student-detail-grid .detail-field{background:#f8fafc;border:1px solid #f1f5f9;border-radius:10px;min-width:0;padding:10px 12px}.student-detail-grid .detail-field dd{overflow-wrap:anywhere;font-weight:600}.student-detail-grid .detail-notes{margin-top:16px;padding-top:14px}.student-talk-panel{background:linear-gradient(135deg,#eff6ff 0%,#fff 68%);border-color:#bfdbfe;gap:12px;display:grid}.student-talk-panel .panel-heading{margin-bottom:0}.student-talk-panel .muted-text{color:#475569}.student-talk-panel .heading-actions{flex:none}.gpa-panel{gap:18px;padding-top:18px}.gpa-summary-row{border-bottom:0;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding-bottom:0;display:grid}.gpa-summary-row span{color:var(--muted);background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;padding:11px 12px;font-size:13px;line-height:1.45}.gpa-form-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.gpa-form-grid>label{color:var(--foreground);gap:7px;min-width:0;font-size:13px;font-weight:650;line-height:1.4;display:grid}.gpa-form-grid input,.gpa-form-grid textarea{color:var(--foreground);background:#fff;border:1px solid #cbd5e1;border-radius:10px;width:100%;min-width:0;padding:9px 11px}.gpa-form-grid input{height:42px}.gpa-form-grid textarea{resize:vertical;min-height:72px}.gpa-form-grid input:focus,.gpa-form-grid textarea:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #2563eb24}.gpa-form .form-actions{align-items:center;margin-top:0}.gpa-form .form-error{min-height:0}.gpa-record-card{background:#f8fafc;border-color:#e2e8f0;border-radius:14px;gap:14px;padding:18px}.gpa-record-card>form:last-child{border-top:1px solid #e2e8f0;justify-content:space-between;padding-top:14px}.talk-form .form-grid{gap:16px}.talk-form .field-group select,.talk-form .field-group input,.talk-form .field-group textarea{min-width:0}.talk-form .field-group select{height:42px;padding-top:8px;padding-bottom:8px}.talk-student-summary{background:#eff6ff;border-color:#bfdbfe;border-radius:12px;align-items:center;min-height:46px;margin-bottom:18px}.talk-ai-launch-panel{background:linear-gradient(135deg,#f8fafc 0%,#eff6ff 100%);border-color:#dbeafe}.talk-ai-launch-panel .panel-heading{margin-bottom:0}.talk-ai-launch-controls{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:12px;max-width:none;display:grid}.talk-ai-launch-controls .field-group{min-width:0}.talk-ai-launch-controls input[type=file]{color:var(--muted);background:#fff;border:1px dashed #93c5fd;border-radius:10px;width:100%;min-height:42px;padding:8px}.talk-ai-launch-controls .secondary-button{min-width:142px}.talk-ai-job-card{background:#fffffff5;border-color:#bfdbfe;border-radius:14px;padding:16px 18px;box-shadow:0 14px 36px #0f172a29}.talk-ai-job-heading{align-items:center}.talk-ai-job-heading strong{color:var(--foreground);line-height:1.45}.talk-ai-job-meta{color:var(--muted);margin-top:8px;font-size:12px;line-height:1.5}.talk-ai-job-card .section-label{color:#2563eb}.talk-ai-job-note{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;gap:10px;margin-top:14px;padding:11px 12px;display:grid}.talk-ai-job-note p{color:#475569;margin:0;line-height:1.55}.talk-ai-job-note .primary-button{justify-self:start;width:auto;min-height:38px;padding:7px 12px}.talk-ai-job-card-failed{border-color:#fecaca}.talk-ai-job-card-failed .section-label{color:#b91c1c}.talk-ai-job-failure-note{background:#fef2f2;border-color:#fecaca}.attendance-statistics-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:16px;margin-top:24px;display:grid}.attendance-metrics-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:0}.attendance-stat-card{flex-direction:row;align-items:center;gap:14px;min-width:0;min-height:112px;padding:18px;display:flex}.attendance-stat-icon{border-radius:12px;flex:0 0 46px;justify-content:center;align-items:center;width:46px;height:46px;display:flex}.attendance-stat-content{min-width:0}.attendance-stat-label{color:var(--muted);letter-spacing:.04em;margin:0;font-size:12px}.attendance-stat-value{color:var(--foreground);font-variant-numeric:tabular-nums;margin-top:4px;font-size:30px;font-weight:700;line-height:1.1}.attendance-stat-subtext{margin-top:4px;font-size:12px}.attendance-ranking-card,.attendance-trend-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;flex-direction:column;min-height:244px;padding:20px;display:flex;overflow:hidden;box-shadow:0 1px 2px #0f172a0a}.attendance-ranking-card{min-height:176px}.attendance-card-heading{align-items:center;gap:8px;min-width:0;margin-bottom:16px;display:flex}.attendance-card-heading h3{color:var(--foreground);min-width:0;font-size:14px;font-weight:650;line-height:1.35}.attendance-chart-empty{color:var(--muted);flex-direction:column;flex:1;justify-content:center;align-items:center;min-height:168px;padding:8px 0;font-size:14px;display:flex}.attendance-chart-empty .empty-inline{margin-top:8px;padding:0}.attendance-ranking-list{gap:8px;min-width:0;margin:0;padding:0;list-style:none;display:grid}.attendance-ranking-item{background:#f8fafc;border:1px solid #f1f5f9;border-radius:10px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;min-width:0;min-height:40px;padding:8px 10px;display:grid}.attendance-ranking-label{align-items:center;gap:10px;min-width:0;display:flex;overflow:hidden}.attendance-ranking-rank{color:#fff;background:#cbd5e1;border-radius:999px;flex:0 0 24px;justify-content:center;align-items:center;width:24px;height:24px;font-size:12px;font-weight:700;display:inline-flex}.attendance-ranking-rank-1{background:#f87171}.attendance-ranking-rank-2{background:#94a3b8}.attendance-ranking-name{color:#334155;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:14px;font-weight:550;overflow:hidden}.attendance-ranking-count{color:#dc2626;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap;flex:none;min-width:52px;font-size:13px;font-weight:650}.attendance-trend-chart{flex:auto;min-width:0;height:190px;min-height:190px}.attendance-trend-chart .recharts-responsive-container,.dorm-trend-chart .recharts-responsive-container{max-width:100%}.attendance-status-distribution{margin-top:16px;padding:20px}.attendance-status-distribution-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;min-width:0;margin:0;padding:0;list-style:none;display:grid}.attendance-status-distribution-item{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;justify-content:flex-start;align-items:center;gap:10px;min-width:0;padding:10px 12px;display:flex}.attendance-status-distribution-item .attendance-status-badge{text-overflow:ellipsis;white-space:nowrap;justify-self:start;min-width:0;overflow:hidden}.attendance-status-count{color:#475569;font-variant-numeric:tabular-nums;text-align:left;white-space:nowrap;min-width:0;font-size:14px;font-weight:650}.attendance-filter-form,.dorm-filter-form{background:#f8fafc;border:1px solid #e2e8f0;border-radius:14px;grid-template-columns:minmax(0,1fr) minmax(160px,220px) auto auto;align-items:end;gap:12px;margin-top:20px;padding:14px}.attendance-filter-form .filter-clear,.dorm-filter-form .filter-clear{align-self:center}.dorm-trend-card{min-height:280px;overflow:hidden}.dorm-trend-chart{width:100%;min-width:0;height:190px;min-height:190px}.dorm-last-check-value{flex-direction:column;gap:2px;font-size:17px;line-height:1.25;display:inline-flex}.dorm-last-check-value time:last-child{color:var(--muted);font-size:13px;font-weight:600}.dorm-trend-legend{border-top:1px solid #f1f5f9;flex-wrap:wrap;gap:8px 18px;margin:10px 0 0;padding:10px 0 0;list-style:none;display:flex}.dorm-trend-legend li{color:var(--muted);align-items:center;gap:6px;min-width:0;font-size:12px;display:inline-flex}.dorm-trend-legend-swatch{border-radius:999px;flex:0 0 20px;width:20px;height:3px;display:inline-block}.dorm-trend-legend-swatch-excellent{background:var(--dorm-rating-excellent-color)}.dorm-trend-legend-swatch-normal{background:var(--dorm-rating-normal-color)}.dorm-trend-legend-swatch-needs_rectification{background:var(--dorm-rating-needs-rectification-color)}.student-attendance-summary{gap:14px;display:grid}.student-attendance-summary .panel-heading{margin-bottom:0}.student-attendance-summary>.muted-text{margin-top:-4px}.attendance-status-summary,.attendance-student-records{gap:8px;margin:0;padding:0;list-style:none;display:grid}.attendance-status-summary{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.attendance-status-summary li{color:var(--muted);background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;justify-content:space-between;align-items:center;gap:8px;min-width:0;padding:10px 12px;font-size:13px;display:flex}.attendance-status-summary strong{color:var(--foreground);font-variant-numeric:tabular-nums;white-space:nowrap}.attendance-student-records{border-top:1px solid var(--border);padding-top:12px}.attendance-student-records li{background:#f8fafc;border-radius:10px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;min-width:0;padding:9px 10px;display:grid}.attendance-student-records time,.attendance-student-record-context{color:var(--muted);min-width:0;font-size:12px}.attendance-student-record-context{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.data-panel-heading>div,.data-preview-heading>div,.data-export-option>span{min-width:0}.data-panel-heading .inline-button,.data-preview-heading .inline-button{flex:none}.data-export-option{min-width:0}.data-task-progress{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;margin-top:18px;padding:12px}.data-task-progress-label{color:var(--muted);justify-content:space-between;align-items:center;gap:12px;font-size:12px;display:flex}.data-progress-track{background:#e2e8f0;border-radius:999px;height:7px;margin-top:9px;overflow:hidden}.data-progress-fill{border-radius:inherit;background:#2563eb;height:100%;transition:width .2s}.data-progress-fill.is-indeterminate{width:42%;animation:1.4s ease-in-out infinite data-progress-slide}@keyframes data-progress-slide{0%{transform:translate(-110%)}to{transform:translate(250%)}}.settings-card-header>div,.settings-card-content>*,.settings-session-group-header>div{min-width:0}.settings-card-header{min-height:92px}.settings-card-content{gap:18px;display:grid}.settings-card-content .login-form{gap:16px;max-width:460px}.settings-logo-content{align-items:flex-start}.settings-logo-copy{flex:260px}.settings-action-row{justify-content:space-between}.settings-action-row .settings-feedback{flex:240px}.settings-backup-grid,.settings-about-grid,.settings-session-details{min-width:0}@media (max-width:1180px){.student-filter-form{grid-template-columns:repeat(4,minmax(0,1fr))}.student-filter-form>.field-group:first-child{grid-column:span 2}}@media (max-width:960px){.student-filter-form{grid-template-columns:repeat(3,minmax(0,1fr))}.student-filter-form>.field-group:first-child{grid-column:span 3}.gpa-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dorm-statistics-top{grid-template-columns:minmax(0,1fr)}}@media (max-width:760px){.attendance-statistics-grid,.attendance-filter-form,.dorm-filter-form{grid-template-columns:minmax(0,1fr)}.attendance-status-distribution-list{grid-template-columns:repeat(2,minmax(0,1fr))}.talk-form .form-grid,.talk-ai-launch-controls{grid-template-columns:minmax(0,1fr)}.talk-ai-launch-controls .secondary-button{width:100%}.student-attendance-summary .panel-heading,.student-talk-panel .panel-heading{flex-direction:column;align-items:flex-start}.student-talk-panel .heading-actions{width:100%}.student-talk-panel .heading-actions>a{flex:1 1 0}}@media (max-width:560px){.student-filter-form{grid-template-columns:minmax(0,1fr)}.student-filter-form>.field-group:first-child{grid-column:auto}.student-filter-form .filter-submit,.student-filter-form .filter-clear,.attendance-filter-form .filter-clear,.dorm-filter-form .filter-clear{justify-self:start}.gpa-form-grid,.gpa-summary-row,.attendance-status-distribution-list,.attendance-metrics-grid{grid-template-columns:minmax(0,1fr)}.form-span-full{grid-column:auto}.attendance-ranking-card,.attendance-trend-card,.attendance-status-distribution,.dorm-trend-card{padding:16px}.attendance-student-records li{grid-template-columns:minmax(0,1fr) auto;align-items:start}.attendance-student-records time{grid-column:1/-1}.attendance-student-record-context{white-space:normal}.dorm-trend-legend{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.settings-card-header,.settings-card-content{padding-left:18px;padding-right:18px}.settings-action-row{flex-direction:column;align-items:stretch}.settings-action-row .settings-feedback,.settings-action-row .primary-button,.settings-action-row .secondary-button,.settings-action-row button{width:100%}.talk-ai-job-note .primary-button{justify-self:stretch;width:100%}}@media (max-width:1023px){.app-nav{background:var(--surface);z-index:100;border-top:1px solid #e2e8f0;border-bottom:0;padding-bottom:0;display:block;position:fixed;inset:auto 0 0;box-shadow:0 -8px 24px #0f172a14}.app-nav-brand{display:none}.app-nav-inner{padding:8px max(12px, env(safe-area-inset-left)) calc(8px + env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-right));justify-content:flex-start;gap:4px;overflow-x:auto}.app-nav-link{flex-direction:column;flex:none;justify-content:center;align-items:center;gap:3px;min-width:68px;min-height:52px;padding:5px 8px;font-size:11px}.app-nav-link:hover,.app-nav-link:focus-visible{margin-top:0}.app-nav-label{line-height:1.2}.app-content{padding-bottom:calc(84px + env(safe-area-inset-bottom))}.talk-ai-job-card{bottom:calc(76px + env(safe-area-inset-bottom))}}@media (min-width:561px) and (max-width:1023px){.app-nav-inner{justify-content:space-between;overflow-x:hidden}.app-nav-link{flex:1 1 0;min-width:0}}@media (max-width:560px){.app-nav-inner{gap:4px;overflow-x:auto}}@media (max-width:390px){.app-nav-inner{padding-left:max(8px, env(safe-area-inset-left));padding-right:max(8px, env(safe-area-inset-right));gap:2px}.app-nav-link,.app-nav-link:hover,.app-nav-link:focus-visible{min-width:64px;padding-left:6px;padding-right:6px;font-size:10px}}
