.intake-page{min-height:100vh;padding:40px 18px 64px;background:radial-gradient(circle at top left,var(--accent-blue-light),transparent 36%),var(--bg);color:var(--text-primary)}.intake-card{width:min(100%,640px);margin:0 auto;padding:clamp(24px,5vw,42px);background:var(--surface);border:1px solid var(--border);border-radius:18px;box-shadow:var(--shadow-medium)}.intake-heading{margin-bottom:30px}.intake-heading h1,.intake-success h1{margin:8px 0 10px;font-size:clamp(1.65rem,5vw,2.15rem);letter-spacing:-.025em}.intake-heading p,.intake-success p,.intake-privacy{color:var(--text-secondary);line-height:1.65}.intake-eyebrow{margin:0;color:var(--accent-blue);font-size:.75rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase}.intake-form{display:grid;gap:20px}.intake-field{display:grid;gap:8px;font-size:.92rem;font-weight:600;line-height:1.45}.intake-field input,.intake-field select,.intake-field textarea{width:100%;min-height:46px;padding:11px 13px;color:var(--text-primary);font:inherit;font-weight:400;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-sizing:border-box}.intake-field textarea{min-height:96px;resize:vertical}.intake-field input:focus,.intake-field select:focus,.intake-field textarea:focus{outline:3px solid var(--accent-blue-light);border-color:var(--accent-blue)}.intake-required{color:var(--accent-red)}.intake-submit{min-height:48px;padding:12px 20px;color:#fff;font:inherit;font-weight:700;background:var(--accent-blue);border:0;border-radius:var(--radius);cursor:pointer}.intake-submit:disabled{cursor:wait;opacity:.65}.intake-error{display:grid;gap:5px;margin-bottom:22px;padding:14px 16px;color:#8b3232;background:var(--accent-red-light);border-radius:var(--radius);line-height:1.45}.intake-error span{font-size:.88rem}.intake-honeypot{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.intake-privacy{margin:0;font-size:.82rem}.intake-success{padding-block:clamp(48px,12vw,80px);text-align:center}.intake-success-mark{display:grid;width:58px;height:58px;margin:0 auto 20px;color:#fff;font-size:1.7rem;place-items:center;background:var(--accent-green);border-radius:50%}@media(max-width:520px){.intake-page{padding:18px 10px 40px}.intake-card{border-radius:14px}}:root{--bg: #f5f5f7;--surface: #ffffff;--text-primary: #1d1d1d;--text-secondary: #555555;--text-tertiary: #888888;--border: #e5e5ea;--accent-blue: #5b9bd5;--accent-blue-light: #eaf2fb;--accent-orange: #e0a458;--accent-orange-light: #fdf4e8;--accent-red: #d96b6b;--accent-red-light: #fceaea;--accent-green: #5bb88a;--accent-green-light: #eaf6f0;--accent-purple: #9b7dbf;--accent-purple-light: #f2edf8;--accent-teal: #4a9e8e;--accent-teal-light: #e6f5f2;--shadow-light: 0 1px 2px rgba(0,0,0,.08);--shadow-medium: 0 4px 12px rgba(0,0,0,.1);--radius: 8px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--bg);color:var(--text-primary);line-height:1.5;min-height:100vh;-webkit-font-smoothing:antialiased}#root{min-height:100vh}.auth-container{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:24px}.auth-card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-medium);padding:40px 32px;text-align:center;max-width:360px;width:100%}.auth-icon{width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 16px;font-size:24px;font-weight:700}.auth-icon-error{background:var(--accent-red-light);color:var(--accent-red)}.auth-loading-text{color:var(--text-secondary);margin-top:16px;font-size:15px}.auth-error-text{color:var(--text-secondary);margin-bottom:20px;font-size:15px;line-height:1.6}.auth-button{display:inline-block;padding:12px 24px;background:var(--accent-blue);color:#fff;border:none;border-radius:var(--radius);font-size:15px;font-weight:600;cursor:pointer;min-height:44px;transition:background .15s}.auth-button:hover{background:#4a8bc4}.spinner{width:36px;height:36px;border:3px solid var(--border);border-top-color:var(--accent-blue);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto}@keyframes spin{to{transform:rotate(360deg)}}.portal-shell{max-width:640px;margin:0 auto;min-height:100vh;display:flex;flex-direction:column;background:#f8f9fa}.portal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100}.ta-class-filter-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.ta-class-filter{border:1px solid var(--border);background:var(--surface);color:var(--text-secondary);border-radius:999px;padding:8px 12px;font-size:12px;font-weight:600;cursor:pointer}.ta-class-filter.active{background:var(--accent-blue);border-color:var(--accent-blue);color:#fff}.ta-session-list{display:flex;flex-direction:column;gap:12px}.ta-session-card{border:1px solid var(--border);border-radius:var(--radius);background:#ffffffb8;overflow:hidden}.ta-session-summary{width:100%;border:none;background:transparent;display:flex;justify-content:space-between;align-items:center;gap:12px;text-align:left;padding:14px 16px;cursor:pointer}.ta-session-summary.active{background:#3b82f60f}.ta-session-title{font-size:14px;font-weight:700;color:var(--text-primary)}.ta-session-meta{font-size:12px;color:var(--text-secondary);margin-top:4px}.ta-session-pill-group{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.ta-session-pill{display:inline-flex;align-items:center;min-height:22px;padding:2px 8px;border-radius:999px;background:var(--accent-blue-light);color:var(--accent-blue);font-size:11px;font-weight:700}.ta-session-pill-muted{background:#eef2f7;color:var(--text-secondary)}.ta-feedback-form{padding:0 16px 16px;border-top:1px solid var(--border);background:var(--surface)}.ta-score-field{margin-top:14px}.ta-score-label{font-size:12px;font-weight:700;color:var(--text-secondary);margin-bottom:8px}.ta-score-options{display:flex;gap:8px;flex-wrap:wrap}.ta-score-option{min-width:40px;min-height:40px;border:1px solid var(--border);border-radius:10px;background:#fff;color:var(--text-primary);font-size:13px;font-weight:700;cursor:pointer}.ta-score-option.active{background:var(--accent-blue);border-color:var(--accent-blue);color:#fff}.ta-feedback-label{display:flex;flex-direction:column;gap:6px;margin-top:14px;font-size:12px;font-weight:700;color:var(--text-secondary)}.ta-feedback-textarea{width:100%;border:1px solid var(--border);border-radius:10px;padding:10px 12px;font:inherit;color:var(--text-primary);background:#fff;resize:vertical}.ta-feedback-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:16px}.ta-save-button{min-width:148px}.ta-feedback-success{font-size:12px;font-weight:600;color:#2a7a44}.ta-feedback-error{font-size:12px;font-weight:600;color:var(--accent-red)}.ta-schedule-list{display:flex;flex-direction:column;gap:6px}.ta-schedule-row{display:flex;align-items:center;gap:12px;padding:8px 10px;border-radius:8px;background:var(--surface);font-size:13px}.ta-schedule-row.ta-schedule-today{background:#dbeafe;font-weight:600}.ta-schedule-row.ta-schedule-past{opacity:.5}.ta-schedule-date{min-width:80px;font-size:12px;color:var(--text-secondary);flex-shrink:0}.ta-schedule-today-badge{font-size:11px;font-weight:700;color:#2563eb;background:#bfdbfe;padding:2px 8px;border-radius:6px}.ta-schedule-details{flex:1;display:flex;align-items:center;gap:8px}.ta-schedule-class{font-weight:600;color:var(--text-primary)}.ta-schedule-meta{font-size:11px;color:var(--text-tertiary)}.portal-header-left{display:flex;align-items:center;gap:12px}.portal-header-avatar{width:44px;height:44px;border-radius:50%;background:transparent;border:2px solid #ccc;color:#999;display:flex;align-items:center;justify-content:center;font-size:19px;font-weight:400;flex-shrink:0}.portal-header-info{display:flex;flex-direction:column;gap:1px}.portal-header-title{font-size:24px;font-weight:700;color:var(--text-primary);line-height:1.2}.portal-welcome{font-size:13px;color:var(--text-secondary);font-weight:400}.portal-freshness{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:6px}.portal-freshness-badge{display:inline-flex;align-items:center;min-height:24px;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.01em}.portal-freshness-ok .portal-freshness-badge{background:#0f766e17;color:#0f766e}.portal-freshness-warning .portal-freshness-badge{background:#b453091a;color:#b45309}.portal-freshness-note{font-size:11px;font-weight:600;color:#b45309}.portal-header-student{font-size:13px;color:var(--text-secondary)}.portal-header-right{display:flex;align-items:center;gap:8px}.lang-toggle{padding:6px 12px;background:var(--accent-blue-light);color:var(--accent-blue);border:none;border-radius:var(--radius);font-size:13px;font-weight:600;cursor:pointer;min-height:36px}.sign-out-btn{padding:6px 12px;background:transparent;color:var(--text-tertiary);border:1px solid var(--border);border-radius:var(--radius);font-size:13px;cursor:pointer;min-height:36px}.child-switcher{display:flex;gap:8px;padding:8px 16px;background:var(--surface);border-bottom:1px solid var(--border);overflow-x:auto}.child-switcher-btn{padding:6px 14px;border:1px solid var(--border);border-radius:20px;background:var(--surface);color:var(--text-secondary);font-size:13px;cursor:pointer;white-space:nowrap;min-height:36px;transition:all .15s}.child-switcher-btn.active{background:var(--accent-blue);color:#fff;border-color:var(--accent-blue)}.portal-content{flex:1;padding:16px 16px 80px;overflow-y:auto}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translate(-50%);max-width:640px;width:100%;display:flex;background:var(--surface);border-top:1px solid var(--border);box-shadow:0 -2px 8px #0000000f;z-index:100}.bottom-nav-tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px 4px;min-height:56px;background:transparent;border:none;color:var(--text-tertiary);font-size:10px;cursor:pointer;text-decoration:none;transition:color .15s;gap:3px}.bottom-nav-tab:hover,.bottom-nav-tab:focus{color:var(--accent-blue);text-decoration:none}.bottom-nav-tab.active{color:var(--accent-blue)}.bottom-nav-icon{font-size:20px;line-height:1}.bottom-nav-label{font-weight:600;letter-spacing:.02em}.card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-light);padding:16px;margin-bottom:12px}.card-title{font-size:15px;font-weight:700;color:var(--text-primary);margin-bottom:12px}.card-subtitle{font-size:13px;color:var(--text-secondary);margin-bottom:8px}.score-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.score-item{display:flex;flex-direction:column;gap:4px}.score-item-header{display:flex;justify-content:space-between;align-items:baseline}.score-label{font-size:12px;color:var(--text-tertiary);font-weight:600;text-transform:uppercase;letter-spacing:.04em}.score-desc{font-size:12px;color:var(--text-secondary);margin-top:2px}.score-tag-desc{display:block;font-size:11px;color:var(--text-secondary);margin-top:2px}.score-bar-track{height:8px;background:#e8e8e8;border-radius:4px;overflow:hidden;position:relative}.score-bar-fill{height:100%;border-radius:4px;transition:width .4s ease;position:relative}.score-value{font-size:16px;font-weight:700}.score-chip{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;font-size:13px;font-weight:700;color:#fff}.score-5,.score-4{background:var(--accent-green)}.score-3,.score-2{background:var(--accent-orange)}.score-1{background:var(--accent-red)}.score-bar-5,.score-bar-4{background:linear-gradient(to right,#10b981,#34d399)}.score-bar-3,.score-bar-2{background:linear-gradient(to right,#f59e0b,#fbbf24)}.score-bar-1{background:linear-gradient(to right,#ef4444,#f87171)}.score-color-5,.score-color-4{color:var(--accent-green)}.score-color-3,.score-color-2{color:var(--accent-orange)}.score-color-1{color:var(--accent-red)}.feedback-entry{padding:12px 0;border-bottom:1px solid var(--border)}.feedback-entry:last-child{border-bottom:none}.feedback-entry-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:8px}.feedback-class-name{font-size:14px;font-weight:600;color:var(--text-primary)}.feedback-date{font-size:12px;color:var(--text-tertiary)}.feedback-scores{display:flex;gap:6px;margin-bottom:8px;flex-wrap:wrap}.feedback-score-tag{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:12px;font-size:12px;font-weight:600;background:var(--bg)}.feedback-text{font-size:14px;color:var(--text-secondary);line-height:1.6;white-space:pre-wrap}.feedback-timeline-item{display:flex;gap:12px;padding:10px 0;position:relative}.feedback-timeline-item:not(:last-child){border-left:2px solid var(--border);margin-left:5px;padding-left:16px}.feedback-timeline-item:last-child{margin-left:5px;padding-left:16px}.timeline-dot{position:absolute;left:-1px;top:14px;width:10px;height:10px;border-radius:50%;background:var(--text-tertiary);flex-shrink:0;transform:translate(-50%)}.feedback-timeline-item:not(:last-child) .timeline-dot{left:0}.feedback-timeline-item:last-child .timeline-dot{left:0}.feedback-content{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.feedback-content .feedback-date{font-size:12px;color:var(--text-tertiary);font-weight:500}.feedback-content .feedback-text{font-size:14px;color:var(--text-secondary);line-height:1.6;font-style:italic;white-space:pre-wrap;margin:0}.class-group{margin-bottom:16px}.class-group-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.class-name{font-size:15px;font-weight:600;color:var(--text-primary);min-width:0;overflow-wrap:anywhere}.class-time{font-size:12px;color:var(--text-tertiary)}.session-item{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:var(--bg);border-radius:6px;margin-bottom:6px}.session-info{display:flex;flex-direction:column;gap:2px;min-width:0;overflow-wrap:anywhere}.session-date-text{font-size:14px;font-weight:500;color:var(--text-primary)}.session-number-text{font-size:12px;color:var(--text-tertiary)}.attendance-badge{padding:3px 10px;border-radius:12px;font-size:12px;font-weight:600}.attendance-present{background:var(--accent-green-light);color:var(--accent-green)}.attendance-absent{background:var(--accent-red-light);color:var(--accent-red)}.attendance-makeup{background:var(--accent-orange-light);color:var(--accent-orange)}.billing-summary{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}.billing-stat{display:flex;flex-direction:column;gap:2px}.billing-stat-label{font-size:12px;color:var(--text-tertiary);font-weight:600;text-transform:uppercase;letter-spacing:.04em}.billing-stat-value{font-size:18px;font-weight:700;color:var(--text-primary)}.billing-remaining{grid-column:1 / -1;padding:12px;background:var(--accent-blue-light);border-radius:var(--radius);text-align:center}.billing-remaining .billing-stat-value{font-size:24px;color:var(--accent-blue)}.payment-item{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px solid var(--border)}.payment-item:last-child{border-bottom:none}.payment-left{display:flex;flex-direction:column;gap:2px}.payment-date{font-size:14px;font-weight:500;color:var(--text-primary)}.payment-method{font-size:12px;color:var(--text-tertiary)}.payment-note{font-size:12px;color:var(--text-secondary)}.payment-amount{font-size:16px;font-weight:700;color:var(--accent-green)}.goal-item{padding:12px 0;border-bottom:1px solid var(--border)}.goal-item:last-child{border-bottom:none}.goal-header{display:flex;align-items:center;gap:8px;margin-bottom:6px;flex-wrap:wrap}.goal-type-badge{padding:2px 8px;border-radius:12px;font-size:11px;font-weight:600}.goal-type-academic{background:var(--accent-blue-light);color:var(--accent-blue)}.goal-type-behavioral{background:var(--accent-purple-light);color:var(--accent-purple)}.goal-type-social{background:var(--accent-green-light);color:var(--accent-green)}.goal-status-badge{padding:2px 8px;border-radius:12px;font-size:11px;font-weight:600}.goal-status-active{background:var(--accent-green-light);color:var(--accent-green)}.goal-status-completed{background:var(--accent-blue-light);color:var(--accent-blue)}.goal-status-on_hold{background:var(--accent-orange-light);color:var(--accent-orange)}.goal-set-by{font-size:11px;color:var(--text-tertiary)}.goal-text{font-size:14px;color:var(--text-primary);line-height:1.6;margin-bottom:4px}.goal-progress{font-size:13px;color:var(--text-secondary);font-style:italic}.goal-form{margin-top:16px}.goal-form-group{margin-bottom:12px}.goal-form-label{display:block;font-size:13px;font-weight:600;color:var(--text-secondary);margin-bottom:4px}.goal-form-textarea{width:100%;min-height:80px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);font-size:14px;font-family:inherit;resize:vertical;color:var(--text-primary);background:var(--surface)}.goal-form-textarea:focus{outline:none;border-color:var(--accent-blue);box-shadow:0 0 0 3px var(--accent-blue-light)}.goal-form-select{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);font-size:14px;font-family:inherit;color:var(--text-primary);background:var(--surface);min-height:44px}.goal-form-select:focus{outline:none;border-color:var(--accent-blue);box-shadow:0 0 0 3px var(--accent-blue-light)}.goal-form-submit{width:100%;padding:12px;background:var(--accent-blue);color:#fff;border:none;border-radius:var(--radius);font-size:15px;font-weight:600;cursor:pointer;min-height:44px;transition:background .15s}.goal-form-submit:hover:not(:disabled){background:#4a8bc4}.goal-form-submit:disabled{opacity:.6;cursor:not-allowed}.message-item{padding:12px 0;border-bottom:1px solid var(--border)}.message-item:last-child{border-bottom:none}.message-date{font-size:12px;color:var(--text-tertiary);margin-bottom:6px}.message-type-badge{display:inline-block;padding:2px 8px;border-radius:12px;font-size:11px;font-weight:600;background:var(--accent-purple-light);color:var(--accent-purple);margin-left:8px}.message-body{font-size:14px;color:var(--text-primary);line-height:1.6;white-space:pre-wrap}.empty-state{text-align:center;padding:40px 20px;color:var(--text-tertiary)}.empty-state-icon{font-size:36px;margin-bottom:12px}.empty-state-text{font-size:15px}.error-banner{background:var(--accent-red-light);color:var(--accent-red);padding:12px 16px;border-radius:var(--radius);margin-bottom:12px;font-size:14px;display:flex;align-items:center;justify-content:space-between}.error-banner button{background:transparent;border:1px solid var(--accent-red);color:var(--accent-red);padding:4px 12px;border-radius:var(--radius);font-size:13px;cursor:pointer;min-height:32px}.page-loading{display:flex;align-items:center;justify-content:center;padding:60px 0}.section-title{font-size:13px;font-weight:700;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.06em;margin-bottom:12px;margin-top:20px}.section-title:first-child{margin-top:0}.divider{height:1px;background:var(--border);margin:16px 0}.homework-list{display:flex;flex-direction:column;gap:12px}.assignment-card{background:var(--surface);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow-light)}.assignment-header{display:flex;justify-content:space-between;align-items:start;margin-bottom:8px}.assignment-title{font-weight:600;font-size:15px}.assignment-class{font-size:12px;color:var(--text-tertiary)}.assignment-due{font-size:12px;color:var(--text-secondary)}.assignment-due.overdue{color:var(--accent-red);font-weight:600}.submission-status{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600}.submission-status.submitted{background:var(--accent-blue-light);color:var(--accent-blue)}.submission-status.graded{background:var(--accent-green-light);color:var(--accent-green)}.submission-status.reviewed{background:var(--accent-orange-light);color:var(--accent-orange)}.submission-status.not-submitted{background:#fce4e4;color:#c53030;border-radius:12px;padding:4px 12px;font-size:12px;font-weight:600}.upload-area{margin-top:12px;padding:12px;border:2px dashed var(--border);border-radius:var(--radius);text-align:center}.upload-area input[type=file]{margin:8px 0}.upload-btn{background:var(--accent-blue);color:#fff;border:none;padding:8px 16px;border-radius:var(--radius);font-size:14px;cursor:pointer;min-height:44px}.upload-btn:disabled{opacity:.5;cursor:not-allowed}.grade-display{margin-top:8px;padding:8px;background:var(--accent-green-light);border-radius:var(--radius);font-size:13px}.teacher-notes-display{margin-top:4px;font-size:13px;color:var(--text-secondary);font-style:italic}.late-badge{display:inline-block;padding:1px 6px;background:var(--accent-red-light);color:var(--accent-red);border-radius:8px;font-size:10px;font-weight:600;margin-left:6px}.portal-content--single{padding-bottom:24px}.portal-section{margin-bottom:24px}.portal-section-header{font-size:18px;font-weight:600;padding:0;margin:0;color:#1a1a1a;display:flex;align-items:center;gap:10px}.portal-section-header svg{flex-shrink:0}.portal-degraded-banner{margin-top:12px;padding:10px 12px;border:1px solid rgba(230,126,34,.28);border-radius:12px;background:linear-gradient(135deg,#fff8ebfa,#fff4e2f0)}.portal-degraded-banner-title{font-size:12px;font-weight:700;color:#8a4b08}.portal-degraded-banner-body{margin-top:2px;font-size:12px;color:#9a5b16}.portal-degraded-banner-detail{margin-top:6px;font-size:11px;color:#a16207;word-break:break-word}.portal-section-card{border-radius:16px;padding:16px 20px;box-shadow:0 4px 12px #0000000d;border-left:4px solid transparent;position:relative}.portal-card-blue{background:#f0f7ff;border-left-color:#3b82f6}.portal-card-orange{background:#fff5f5;border-left-color:#e76f51}.portal-card-green{background:#f0fdf4;border-left-color:#10b981}.portal-card-purple{background:#f5f3ff;border-left-color:#8b5cf6}.portal-card-blue{background:#eff6ff;border-left-color:#3b82f6}.portal-card-teal{background:#f1f5f9;border-left-color:#64748b}.portal-card-slate{background:#f8fafc;border-left-color:#475569}.portal-section-empty{font-size:13px;color:var(--text-tertiary);font-style:italic}.portal-section-sublabel{font-size:12px;font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.04em;margin:12px 0 8px}.ta-flash-message{margin-top:12px;padding:10px 12px;border-radius:12px;font-size:13px;font-weight:600}.ta-flash-success{background:var(--accent-green-light);color:var(--accent-green)}.ta-flash-error{background:var(--accent-red-light);color:var(--accent-red)}.ta-chip-row{display:flex;flex-wrap:wrap;gap:8px}.ta-chip{border:1px solid rgba(71,85,105,.14);background:#ffffffeb;color:var(--text-primary);border-radius:999px;padding:10px 14px;font-size:13px;font-weight:600;cursor:pointer}.ta-chip.is-active{background:#475569;border-color:#475569;color:#fff}.ta-chip-row-sessions .ta-chip{font-weight:500}.ta-roster-row{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:14px 0;border-top:1px solid rgba(148,163,184,.18)}.ta-roster-copy{min-width:0}.ta-roster-status{margin-top:3px;font-size:12px;color:var(--text-tertiary)}.ta-status-group{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.ta-status-btn{min-width:84px;padding:9px 12px;border-radius:999px;border:1px solid rgba(71,85,105,.16);background:#fff;color:var(--text-secondary);font-size:13px;font-weight:600;cursor:pointer}.ta-status-btn.is-active{background:#475569;border-color:#475569;color:#fff}.ta-status-btn:disabled{cursor:wait;opacity:.7}@media(max-width:640px){.ta-roster-row{flex-direction:column;align-items:stretch}.ta-status-group{justify-content:flex-start}.ta-status-btn{flex:1 1 30%}}.collapsible-toggle{display:block;width:100%;padding:11px 0;margin-top:12px;background:#0000000a;border:none;border-radius:20px;color:#3b82f6;font-size:14px;font-weight:600;cursor:pointer;text-align:center;transition:background .15s}.collapsible-toggle:hover{background:#00000012}.homework-row{padding:10px 0;border-bottom:1px solid var(--border)}.homework-row-clickable{cursor:pointer}.homework-row-clickable:hover .homework-row-affordance{color:var(--accent-orange)}.homework-row-clickable:focus-visible{outline:2px solid var(--accent-orange);outline-offset:6px;border-radius:10px}.homework-row:last-of-type{border-bottom:none}.homework-row-top{display:flex;justify-content:space-between;align-items:center;gap:8px}.homework-row-title{font-size:14px;font-weight:600;color:var(--text-primary)}.homework-row-meta{display:flex;align-items:center;gap:6px;margin-top:4px;flex-wrap:wrap}.homework-row-affordance{margin-left:auto;display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;color:var(--text-tertiary);white-space:nowrap}.homework-row-chevron{display:inline-block;font-size:12px;line-height:1;transform-origin:center;transition:transform .16s ease}.homework-row-chevron.expanded{transform:rotate(180deg)}.score-bars{display:flex;flex-direction:column;gap:10px}.score-bar-row{display:flex;align-items:center;gap:10px}.score-bar-label{font-size:12px;color:var(--text-tertiary);font-weight:600;width:90px;flex-shrink:0}.score-bar-row .score-bar-track{flex:1;height:10px}.score-bar-number{font-size:16px;font-weight:600;width:32px;text-align:right;flex-shrink:0}.progress-recent{margin-top:4px}.progress-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:14px 0 16px}.progress-summary-card{padding:12px;border-radius:14px;background:#ffffffc7;border:1px solid rgba(16,185,129,.12)}.progress-summary-label{display:block;font-size:11px;font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.04em}.progress-summary-value{display:block;margin-top:6px;font-size:18px;font-weight:700;color:var(--text-primary)}.progress-trend-panel{margin-bottom:16px;padding:12px;border-radius:14px;background:#ffffffb8;border:1px solid rgba(16,185,129,.12)}.progress-trend-chart{display:block;width:100%;height:88px}.progress-trend-area{fill:#10b9811f}.progress-trend-line{fill:none;stroke:#10b981;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.progress-trend-point{fill:#10b981;stroke:#fff;stroke-width:2}.progress-trend-labels{display:flex;justify-content:space-between;margin-top:6px;font-size:11px;color:var(--text-tertiary)}.billing-row{display:flex;justify-content:space-between;gap:8px}.billing-cell{display:flex;flex-direction:column;align-items:center;flex:1}.billing-cell-label{font-size:11px;color:var(--text-tertiary);font-weight:600;text-transform:uppercase;letter-spacing:.04em}.billing-cell-value{font-size:16px;font-weight:700;color:var(--text-primary)}.billing-cell-green{color:var(--accent-green)}.billing-cell-blue{color:var(--accent-blue)}.billing-cell-warning{color:#b45309}.billing-obligation-totals{margin-top:14px}.billing-obligation-grid{margin-top:12px}.billing-semester-list{display:flex;flex-direction:column;gap:14px}.billing-semester-row{padding:14px;border:1px solid rgba(100,116,139,.16);border-radius:16px;background:#ffffff7a}.billing-semester-header{margin-bottom:8px;color:var(--text-primary);font-size:15px;font-weight:700}.billing-payment-details>summary,.billing-rollover-details>summary{list-style:none;cursor:pointer}.billing-payment-details>summary::-webkit-details-marker,.billing-rollover-details>summary::-webkit-details-marker{display:none}.billing-rollover-details{margin-top:8px}.rollover-history-list{display:flex;flex-direction:column;gap:8px;margin-top:8px}.rollover-history-row{padding:10px;border-radius:10px;background:#14b8a60f}.rollover-history-heading,.rollover-history-meta{display:flex;justify-content:space-between;gap:10px}.rollover-direction,.rollover-amount{color:var(--text-primary);font-weight:700}.rollover-semesters,.rollover-note{margin-top:4px;color:var(--text-secondary);font-size:13px}.rollover-history-meta{margin-top:4px;color:var(--text-muted);font-size:11px}.rollover-id{overflow-wrap:anywhere;text-align:right}.billing-balance-hero{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:14px 0 6px}.billing-balance-label{font-size:13px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em}.billing-balance-value{font-size:28px;font-weight:800;line-height:1}.billing-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:8px}.billing-summary-card{display:flex;flex-direction:column;gap:6px;padding:12px;border-radius:14px;background:#ffffffd1;border:1px solid rgba(100,116,139,.14)}.billing-summary-card-balance{grid-column:span 2}.billing-summary-label{font-size:11px;font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.04em}.billing-summary-value{font-size:18px;font-weight:700;color:var(--text-primary)}.message-history-list{display:flex;flex-direction:column}.ta-flash-message{margin-top:12px;padding:10px 12px;border-radius:12px;background:#10b9811f;color:#047857;font-size:12px;font-weight:600}.ta-pill-row{display:flex;gap:8px;flex-wrap:wrap}.ta-pill{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:8px 12px;border:1px solid rgba(59,130,246,.18);border-radius:999px;background:#ffffffeb;color:var(--text-primary);font-size:13px;font-weight:600;cursor:pointer}.ta-pill.is-active{background:#2563eb;border-color:#2563eb;color:#fff}.ta-pill-session{flex-direction:column;align-items:flex-start;min-width:108px}.ta-class-caption{margin-top:12px;font-size:12px;color:var(--text-secondary)}.ta-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:14px}.ta-summary-card{display:flex;flex-direction:column;gap:6px;padding:12px;border-radius:14px;background:#ffffffe0;border:1px solid rgba(16,185,129,.16)}.ta-summary-card strong{font-size:20px;color:var(--text-primary)}.ta-summary-label{font-size:11px;font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.04em}.ta-roster-list{display:flex;flex-direction:column;gap:10px}.ta-roster-row{display:flex;flex-direction:column;gap:10px;padding:12px;border-radius:14px;background:#ffffffe0;border:1px solid rgba(100,116,139,.14)}.ta-roster-meta{display:flex;justify-content:space-between;align-items:center;gap:10px}.ta-roster-name{font-size:15px;font-weight:600;color:var(--text-primary)}.ta-roster-status{font-size:12px;color:var(--text-secondary)}.ta-status-group{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.ta-status-button{min-height:40px;padding:8px 10px;border:1px solid rgba(100,116,139,.18);border-radius:12px;background:#fff;color:var(--text-primary);font-size:13px;font-weight:600;cursor:pointer}.ta-status-button.is-active{border-color:#059669;background:#10b98124;color:#065f46}.ta-status-button:disabled{opacity:.6;cursor:wait}@media(max-width:640px){.progress-summary-grid,.billing-summary-grid{grid-template-columns:1fr}.billing-summary-card-balance{grid-column:auto}.ta-summary-grid{grid-template-columns:1fr}}.truncate-toggle{display:inline;margin-left:6px;padding:0;background:none;border:none;color:#3b82f6;font-size:13px;font-weight:600;font-style:normal;cursor:pointer}.truncate-toggle:hover{text-decoration:underline}.schedule-class-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--border)}.schedule-class-row:last-of-type{border-bottom:none}.past-sessions-list{margin-top:8px}@media(min-width:641px){.portal-shell{border-left:1px solid var(--border);border-right:1px solid var(--border)}}
