:root{--tutto-primary:#2165c1;--tutto-primary-hover:#1b56a8;--tutto-primary-active:#164788;--tutto-primary-soft:#edf3fb;--tutto-primary-soft-2:#f6f9fd;--tutto-primary-border:#c8daf0;--tutto-primary-rgb:33, 101, 193;--tutto-accent:#4a8fd4;--tutto-lime:#d6e7a7;--tutto-lime-soft:#f3f8e8;--tutto-lime-border:#e3edcb;--tutto-sage:#a6c69b;--tutto-sage-soft:#eef5ec;--tutto-sage-border:#d4e4cf;--tutto-sage-text:#3d5c45;--tutto-interactive-hover-shadow:0 4px 14px rgba(var(--tutto-primary-rgb), .08);--tutto-interactive-active-glow:0 0 0 3px rgba(var(--tutto-primary-rgb), .1);--tutto-focus-ring:0 0 0 3px rgba(var(--tutto-primary-rgb), .18);--tutto-text-primary:#1a2332;--tutto-text-secondary:#5e6a7c;--tutto-text-tertiary:#94a0b0;--tutto-text-muted:var(--tutto-text-tertiary);--tutto-background:#f6f8fb;--tutto-surface:#fff;--tutto-border:#e4e9f0;--tutto-border-strong:#d5dce6;--tutto-success:#4a7d57;--tutto-success-soft:var(--tutto-sage-soft);--tutto-success-text:var(--tutto-sage-text);--tutto-warning-soft:#fef3c7;--tutto-warning-text:#92400e;--tutto-error:#dc2626;--tutto-error-soft:#fee2e2;--app-page-gutter:16px;--app-shell-gutter:var(--app-page-gutter);--app-page-max-compact:100%;--app-page-max-standard:100%;--app-page-max-wide:100%;--app-page-active-max:var(--app-page-max-standard);--shell-content-width:var(--app-page-active-max);--app-shell-width:100%;--content-max-width:var(--app-page-max-standard);--header-height:64px;--bottom-nav-height:64px;--app-sidebar-width:208px;--app-sidebar-width-tablet:188px;--auth-user-bar-height:48px;--tutto-radius-sm:10px;--tutto-radius-md:12px;--tutto-radius-lg:16px;--tutto-radius-xl:20px;--tutto-shadow-1:0 1px 2px #1a23320a;--tutto-shadow-2:0 8px 24px rgba(var(--tutto-primary-rgb), .08);--tutto-surface-muted:#eef2f7;--tutto-surface-raised:var(--tutto-surface);--fab-size:52px;--fab-icon-size:22px;--fab-offset:16px;--fab-breathing-room:12px;--bottom-nav-max-width:100%;--teacher-bottom-nav-max-width:100%;--shell-fixed-right:max(var(--app-page-gutter), calc((100vw - min(var(--shell-content-width), 100vw)) / 2 + var(--app-page-gutter)));--page-floating-action-clearance:calc(var(--bottom-nav-height) + var(--fab-offset) + var(--fab-size) + var(--fab-breathing-room));--shell-content-padding-bottom:var(--page-floating-action-clearance);--shell-toast-bottom:90px;--shell-assign-padding-bottom:150px;--flora-content-max-width:var(--app-page-max-standard);--flora-wide-content-max-width:var(--app-page-max-wide);--flora-compact-content-max-width:var(--app-page-max-compact);--flora-page-gutter:var(--app-page-gutter);--flora-page-padding-top:calc(env(safe-area-inset-top,0px) + 12px);--flora-page-padding-bottom:var(--shell-content-padding-bottom);--flora-section-gap:24px;--flora-section-heading-gap:12px;--flora-page-header-gap:16px;--flora-card-radius:16px;--flora-card-radius-compact:12px;--flora-card-border:1px solid var(--tutto-border);--flora-card-shadow:0 1px 3px rgba(var(--tutto-primary-rgb), .04);--flora-card-shadow-hover:0 4px 14px rgba(var(--tutto-primary-rgb), .07);--flora-btn-height:var(--flora-control-height);--flora-input-height:var(--flora-control-height);--flora-radius-sm:10px;--flora-radius-md:12px;--flora-radius-lg:16px;--flora-transition:.17s ease;--flora-card-padding:16px;--flora-card-padding-compact:12px 14px;--flora-control-height:44px;--flora-control-radius:12px;--flora-chip-height:40px;--flora-chip-radius:9999px;--flora-overlay-z:100;--flora-sheet-z:101;--flora-primary:var(--tutto-primary);--flora-primary-dark:var(--tutto-primary-hover);--flora-primary-soft:var(--tutto-primary-soft);--flora-accent:var(--tutto-accent);--flora-text-primary:var(--tutto-text-primary);--flora-text-secondary:var(--tutto-text-secondary);--flora-text-muted:var(--tutto-text-tertiary);--flora-border:var(--tutto-border);--flora-border-soft:var(--tutto-primary-border);--flora-surface:var(--tutto-surface);--flora-surface-page:var(--tutto-background);--flora-surface-soft:var(--tutto-primary-soft-2);--flora-font-page-title:clamp(1.25rem, 4.5vw, 1.375rem);--flora-font-section-title:.9375rem;--flora-font-card-title:.9375rem;--flora-font-body:.8125rem;--flora-font-caption:.75rem}@media (width>=768px){:root{--app-page-gutter:28px;--app-page-max-compact:720px;--app-page-max-standard:min(1120px, calc(100vw - var(--app-sidebar-width-tablet) - 56px));--app-page-max-wide:min(calc(100vw - var(--app-sidebar-width-tablet) - 48px), 1200px);--content-max-width:var(--app-page-max-standard)}}@media (width>=1024px){:root{--app-page-gutter:36px;--app-page-max-compact:720px;--app-page-max-standard:min(1120px, calc(100vw - var(--app-sidebar-width) - 72px));--app-page-max-wide:min(calc(100vw - var(--app-sidebar-width) - 48px), 1200px);--content-max-width:var(--app-page-max-standard);--shell-content-padding-bottom:32px}.app-shell--with-sidebar{--shell-content-padding-bottom:32px}}.app-page{box-sizing:border-box;--app-page-active-max:var(--app-page-max-standard);--shell-content-width:var(--app-page-active-max);width:100%;min-height:100%;margin:0 auto}.app-page--standard{--app-page-active-max:var(--app-page-max-standard)}.app-page--compact{--app-page-active-max:var(--app-page-max-compact)}.app-page--wide{--app-page-active-max:var(--app-page-max-wide)}.app-page-inner{width:100%;max-width:var(--app-page-active-max);padding-left:var(--app-page-gutter);padding-right:var(--app-page-gutter);box-sizing:border-box;margin:0 auto}@media (width>=768px){.app-page--wide{width:100vw;max-width:100vw;padding-left:max(var(--app-page-gutter), calc((100vw - var(--app-page-max-wide)) / 2));padding-right:max(var(--app-page-gutter), calc((100vw - var(--app-page-max-wide)) / 2));margin-left:calc(50% - 50vw)}.app-page--wide .app-page-inner{max-width:var(--app-page-max-wide);padding-left:0;padding-right:0}}.dashboard.app-page .app-page-inner{padding-left:0;padding-right:0}.flora-page{background:var(--flora-surface-page);min-height:100vh;color:var(--flora-text-primary);font-family:Pretendard,Inter,sans-serif}.flora-page-body{gap:var(--flora-section-gap);padding-top:4px;padding-bottom:var(--flora-page-padding-bottom);flex-direction:column;display:flex}.flora-page-body--compact{gap:16px}.flora-page-header{padding:var(--flora-page-padding-top) 0 var(--flora-page-header-gap);background:var(--flora-surface-page)}.flora-page-header--sticky{z-index:20;position:sticky;top:0}.flora-page-header-row{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.flora-page-header-copy{flex:1;min-width:0}.flora-page-header-eyebrow{font-size:var(--flora-font-caption);color:var(--flora-text-muted);letter-spacing:.02em;margin:0 0 2px;font-weight:600}.flora-page-header-title{font-size:var(--flora-font-page-title);color:var(--flora-text-primary);margin:0;font-weight:800;line-height:1.25}.flora-page-header-desc{font-size:var(--flora-font-body);color:var(--flora-text-secondary);margin:4px 0 0;font-weight:600;line-height:1.45}.flora-page-header-summary{font-size:var(--flora-font-caption);color:var(--flora-primary);margin:8px 0 0;font-weight:700;line-height:1.45}.flora-page-header-action{flex-shrink:0;align-items:flex-start;padding-top:2px;display:flex}@media (width<=430px){.flora-page-header-row{flex-wrap:wrap}.flora-page-header-action{width:100%}.flora-page-header-action .flora-btn--primary{justify-content:center;width:100%}}.flora-secondary-header{padding:var(--flora-page-padding-top) 0 12px;background:var(--flora-surface-page);grid-template-columns:auto 1fr auto;align-items:center;gap:8px;display:grid}.flora-secondary-header-main{min-width:0}.flora-secondary-header-eyebrow{font-size:var(--flora-font-caption);color:var(--flora-text-muted);margin:0 0 2px;font-weight:600}.flora-secondary-header-title{font-size:var(--flora-font-page-title);color:var(--flora-text-primary);margin:0;font-weight:800;line-height:1.25}.flora-secondary-header-spacer{flex-shrink:0;width:44px;height:44px}.flora-secondary-header--sticky{z-index:20;position:sticky;top:0}.flora-secondary-page-body,.cls-detail-body{gap:var(--flora-section-gap);padding-bottom:var(--flora-page-padding-bottom);flex-direction:column;display:flex}.cls-detail-body{padding-top:4px}.flora-section-header{margin-bottom:var(--flora-section-heading-gap);justify-content:space-between;align-items:center;gap:12px;display:flex}.flora-section-title{font-size:var(--flora-font-section-title);color:var(--flora-text-primary);margin:0;font-weight:800;line-height:1.35}.flora-section-link{min-height:40px;font-size:var(--flora-font-body);color:var(--flora-primary);cursor:pointer;background:0 0;border:none;border-radius:8px;flex-shrink:0;align-items:center;padding:6px 4px;font-family:inherit;font-weight:700;text-decoration:none;display:inline-flex}.flora-section-link:hover{color:var(--flora-primary-dark)}.flora-section-link:focus-visible{outline:2px solid var(--flora-primary);outline-offset:2px}.flora-btn{min-height:var(--flora-control-height);border-radius:var(--flora-control-radius);font-size:var(--flora-font-body);cursor:pointer;border:1.5px solid #0000;justify-content:center;align-items:center;gap:4px;padding:0 16px;font-family:inherit;font-weight:700;line-height:1.2;transition:background .17s,border-color .17s,color .17s,transform .12s;display:inline-flex}.flora-btn:active{transform:scale(.98)}.flora-btn:focus-visible{outline:2px solid var(--flora-primary);outline-offset:2px}.flora-btn--primary{background:var(--flora-primary);border-color:var(--flora-primary);color:#fff}.flora-btn--primary:hover{background:var(--flora-primary-dark);border-color:var(--flora-primary-dark)}.flora-btn--primary:active{background:var(--tutto-primary-active);border-color:var(--tutto-primary-active)}.flora-btn--primary:disabled,.flora-btn--secondary:disabled,.flora-btn--soft:disabled,.flora-btn--destructive:disabled{opacity:.52;cursor:not-allowed;transform:none}.flora-btn--secondary{background:var(--flora-surface);border-color:var(--tutto-border-strong);color:var(--flora-text-primary)}.flora-btn--secondary:hover{background:var(--flora-primary-soft);border-color:var(--flora-border-soft);color:var(--flora-primary)}.flora-btn--destructive{background:var(--tutto-error);border-color:var(--tutto-error);color:#fff}.flora-btn--destructive:hover{background:#b91c1c;border-color:#b91c1c}.flora-btn--ghost{color:var(--flora-primary);background:0 0;border-color:#0000}.flora-btn--ghost:hover{background:var(--flora-primary-soft)}.flora-btn--soft{background:var(--flora-surface);border-color:var(--flora-border-soft);color:var(--flora-primary)}.flora-btn--soft:hover{background:var(--flora-primary-soft)}.flora-search-wrap{margin-bottom:12px}.flora-search-field{min-height:var(--flora-control-height);background:var(--flora-surface);border:1.5px solid var(--flora-border-soft);border-radius:var(--flora-control-radius);align-items:center;gap:10px;padding:0 14px;transition:border-color .17s,box-shadow .17s;display:flex}.flora-search-field:focus-within{border-color:var(--flora-primary);box-shadow:var(--tutto-focus-ring)}.flora-search-icon{color:var(--flora-text-muted);flex-shrink:0;display:inline-flex}.flora-search-input{min-width:0;color:var(--flora-text-primary);background:0 0;border:none;outline:none;flex:1;font-family:inherit;font-size:.9375rem}.flora-search-input::placeholder{color:var(--flora-text-muted)}.flora-search-clear{background:var(--flora-primary-soft);width:28px;height:28px;color:var(--flora-text-secondary);cursor:pointer;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-family:inherit;font-size:12px;display:inline-flex}.flora-search-clear:focus-visible{outline:2px solid var(--flora-primary);outline-offset:2px}.flora-chip-row,.filter-chip-row{scrollbar-width:none;-webkit-overflow-scrolling:touch;gap:8px;padding:0 0 10px;display:flex;overflow-x:auto}.flora-chip-row::-webkit-scrollbar{display:none}.filter-chip-row::-webkit-scrollbar{display:none}.flora-chip,.filter-chip,.teacher-hw-filter-chip,.teacher-sub-filter-chip,.student-hw-filter-chip,.student-notif-filter-chip,.cls-filter-btn{border:1px solid var(--tutto-border);background:var(--tutto-surface);min-height:36px;color:var(--flora-text-secondary);cursor:pointer;white-space:nowrap;box-shadow:none;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;gap:6px;padding:7px 13px;font-family:inherit;font-size:.8125rem;font-weight:700;transition:background .17s,border-color .17s,color .17s,transform .12s;display:inline-flex}.flora-chip:active,.filter-chip:active,.teacher-hw-filter-chip:active,.teacher-sub-filter-chip:active,.student-hw-filter-chip:active,.cls-filter-btn:active{transform:scale(.98)}.flora-chip:focus-visible,.filter-chip:focus-visible,.teacher-hw-filter-chip:focus-visible,.teacher-sub-filter-chip:focus-visible,.student-hw-filter-chip:focus-visible,.cls-filter-btn:focus-visible{outline:2px solid var(--flora-primary);outline-offset:2px}.flora-chip-count,.teacher-hw-filter-count,.teacher-sub-filter-count,.student-hw-filter-count,.student-notif-filter-count{background:rgba(var(--tutto-primary-rgb), .1);border-radius:999px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 5px;font-size:.6875rem;font-weight:800;line-height:1;display:inline-flex}.flora-chip.active,.flora-chip.on,.filter-chip.active,.filter-chip.on,.teacher-hw-filter-chip.active,.teacher-sub-filter-chip.active,.student-hw-filter-chip.active,.student-notif-filter-chip.active,.cls-filter-btn.active{background:var(--flora-primary);border-color:var(--flora-primary);color:#fff;box-shadow:0 1px 3px rgba(var(--tutto-primary-rgb), .18)}.flora-chip.active .flora-chip-count,.flora-chip.on .flora-chip-count,.filter-chip.active .flora-chip-count,.teacher-hw-filter-chip.active .teacher-hw-filter-count,.teacher-sub-filter-chip.active .teacher-sub-filter-count,.student-hw-filter-chip.active .student-hw-filter-count,.student-notif-filter-chip.active .student-notif-filter-count{color:#fff;background:#ffffff38}.flora-chip:not(.active):not(.on) .flora-chip-count,.teacher-hw-filter-chip:not(.active) .teacher-hw-filter-count,.teacher-sub-filter-chip:not(.active) .teacher-sub-filter-count,.student-hw-filter-chip:not(.active) .student-hw-filter-count{color:var(--flora-primary)}.flora-card--planner-accent{background:linear-gradient(180deg, var(--tutto-lime-soft) 0%, var(--flora-surface) 42%)}.flora-card--feedback-accent{background:linear-gradient(180deg, var(--tutto-sage-soft) 0%, var(--flora-surface) 42%)}.flora-card--selected{border-color:var(--tutto-primary-border);box-shadow:var(--tutto-interactive-active-glow)}.flora-filter-reset,.filter-reset-btn{color:var(--flora-primary);font-size:var(--flora-font-body);cursor:pointer;background:0 0;border:none;min-height:40px;margin:0 0 8px;padding:4px 0;font-family:inherit;font-weight:700}.flora-select,.teacher-hw-sort-select{min-height:var(--flora-control-height);border:1.5px solid var(--flora-border-soft);border-radius:var(--flora-control-radius);background:var(--flora-surface);color:var(--flora-text-primary);font-size:var(--flora-font-body);cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8' fill='none'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%236b7280' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;padding:0 36px 0 14px;font-family:inherit;font-weight:600}.flora-select:focus-visible,.teacher-hw-sort-select:focus-visible{outline:2px solid var(--flora-primary);outline-offset:2px;border-color:var(--flora-primary)}.teacher-hw-search-field{min-height:var(--flora-control-height);background:var(--flora-surface);border:1.5px solid var(--flora-border-soft);border-radius:var(--flora-control-radius);align-items:center;gap:10px;padding:0 14px;display:flex}.teacher-hw-search-field:focus-within,.teacher-sub-search:focus-visible{border-color:var(--flora-primary);box-shadow:0 0 0 3px rgba(var(--tutto-primary-rgb), .12)}.teacher-hw-search-input,.teacher-sub-search{min-width:0;min-height:var(--flora-control-height);border:1.5px solid var(--flora-border-soft);border-radius:var(--flora-control-radius);background:var(--flora-surface);color:var(--flora-text-primary);flex:1;padding:0 14px;font-family:inherit;font-size:.9375rem}.teacher-hw-search-input{background:0 0;border:none;min-height:auto;padding:0}.teacher-sub-search:focus-visible{outline:none}.teacher-sub-search{width:100%;margin-bottom:12px}.teacher-sub-search:focus-visible{border-color:var(--flora-primary);box-shadow:0 0 0 3px rgba(var(--tutto-primary-rgb), .12)}.flora-card{background:var(--flora-surface);border:var(--flora-card-border);border-radius:var(--flora-card-radius);padding:var(--flora-card-padding);box-shadow:var(--flora-card-shadow)}.flora-card--compact{border-radius:var(--flora-card-radius-compact);padding:var(--flora-card-padding-compact)}.flora-card--interactive{cursor:pointer;text-align:left;width:100%;font-family:inherit;transition:transform .12s,box-shadow .17s,border-color .17s}.flora-card--interactive:hover{box-shadow:var(--tutto-interactive-hover-shadow);border-color:var(--tutto-primary-border);transform:translateY(-1px)}.flora-card--interactive:active{border-color:var(--tutto-primary-border);box-shadow:var(--tutto-interactive-active-glow);transform:scale(.99)}.flora-card--interactive:focus-visible{outline:2px solid var(--flora-primary);outline-offset:2px}.flora-metric-card{background:var(--flora-surface);border:var(--flora-card-border);border-radius:var(--flora-card-radius-compact);box-shadow:var(--flora-card-shadow);padding:12px 14px}.hub-section-hdr{margin-bottom:var(--flora-section-heading-gap,12px)}.hub-section-title{font-size:var(--flora-font-section-title,.9375rem);color:var(--flora-text-primary,var(--tutto-text-primary));font-weight:800}.student-state--empty,.teacher-hw-empty,.hub-empty{text-align:center;padding:20px 12px}.flora-empty-icon,.student-state-icon,.teacher-hw-empty-icon{margin-bottom:8px;font-size:28px;line-height:1}.flora-empty-title,.student-state-title,.teacher-hw-empty-title{font-size:var(--flora-font-card-title);color:var(--flora-text-primary);margin:0 0 4px;font-weight:700}.flora-empty-desc,.student-state-desc,.teacher-hw-empty-desc,.hub-empty{font-size:var(--flora-font-body);color:var(--flora-text-muted);margin:0;font-weight:600;line-height:1.45}.flora-list-meta,.cnt-bar{font-size:var(--flora-font-body);color:var(--flora-text-secondary);margin-bottom:10px;font-weight:700}.flora-list-meta strong,.cnt-bar span{color:var(--flora-primary)}.app-icon{vertical-align:middle;flex-shrink:0;display:inline-flex}.app-icon--nav{width:22px;height:22px}.app-icon--action{width:20px;height:20px}.app-icon--sm,.app-icon--meta{width:16px;height:16px}.app-icon--empty{width:28px;height:28px}.bottom-nav-icon .app-icon{color:inherit}.student-state-icon .app-icon,.flora-empty-icon .app-icon,.teacher-hw-empty-icon .app-icon,.timetable-empty-icon .app-icon,.empty-tab-ic .app-icon{color:var(--tutto-text-tertiary,#98a2b3)}.student-metric-icon .app-icon{color:inherit}.teacher-dashboard-task-icon .app-icon,.student-dashboard-task-icon .app-icon,.dashboard-activity-icon .app-icon,.student-notif-icon .app-icon,.auth-brand-icon .app-icon{color:var(--tutto-primary,#2165c1)}.hw-status .app-icon{color:inherit}*{box-sizing:border-box;-webkit-tap-highlight-color:#2165c124;margin:0;padding:0}button,a,[role=button],input[type=button],input[type=submit],input[type=reset],label[for],select,summary{-webkit-tap-highlight-color:#2165c124}body{background:var(--tutto-background);color:var(--tutto-text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:100%;min-height:100dvh;font-family:Pretendard,Inter,sans-serif;overflow:clip auto}#root{width:100%;min-height:100dvh;overflow:visible}.pressable{transition:transform .15s,opacity .15s,box-shadow .15s}.pressable:active:not(:disabled){opacity:.88;transform:scale(.97)}.pressable:focus-visible{outline:2px solid var(--tutto-primary);outline-offset:2px}.fade-in{animation:.28s fade-in}@keyframes fade-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.animated-number{font-variant-numeric:tabular-nums;display:inline-block}.animated-number--enter{animation:.3s cubic-bezier(.34,1.4,.64,1) number-enter}@keyframes number-enter{0%{opacity:0;transform:scale(.82)}to{opacity:1;transform:scale(1)}}.submission-empty-icon--bounce{animation:.45s cubic-bezier(.34,1.4,.64,1) bounce-in}@keyframes bounce-in{0%{opacity:0;transform:scale(.6)}70%{transform:scale(1.08)}to{opacity:1;transform:scale(1)}}.feedback-success-box--animated{animation:.28s fade-in}.feedback-success-sub--pulse{animation:1s infinite pulse-text}@keyframes pulse-text{0%,to{opacity:1}50%{opacity:.55}}.feedback-success-icon{margin-bottom:8px;font-size:28px}.submissions-list{animation:.22s fade-in}.submissions-filter.on{transition:background .2s,color .2s,border-color .2s}.submission-card--v2{transition:box-shadow .2s,border-color .2s}.submission-card--v2:active{box-shadow:0 1px 4px rgba(var(--tutto-primary-rgb), .08)}.bottom-nav-item .bottom-nav-inner{transition:transform .12s}.bottom-nav-item:active .bottom-nav-inner{transform:scale(.98)}.hdr-chip-btn{transition:transform .12s,background .15s,opacity .12s}.hdr-chip-btn:active{opacity:.9;transform:scale(.96)}.tutto-brand-link{min-width:0;color:inherit;align-items:center;text-decoration:none;display:inline-flex}.tutto-brand-wrap{align-items:center;display:inline-flex}.tutto-brand{width:auto;max-width:100%;height:auto;display:block}.tutto-brand--symbol{height:var(--tutto-brand-symbol-height,28px)}.tutto-brand--compact{height:var(--tutto-brand-compact-height,28px);width:auto}.tutto-brand--compact.tutto-brand--width-led{width:var(--tutto-brand-compact-width,auto);height:auto}.tutto-brand--full{width:min(100%, var(--tutto-brand-full-width,352px));height:auto}.tutto-brand--wordmark-tagline{width:min(100%, var(--tutto-brand-wordmark-tagline-width,268px));height:auto}.legal-brand-logo{--tutto-brand-compact-height:24px}.auth-page{background:radial-gradient(ellipse 80% 50% at 50% -10%, var(--tutto-primary-soft) 0%, transparent 55%), linear-gradient(180deg, var(--tutto-primary-soft-2) 0%, var(--tutto-background) 100%);box-sizing:border-box;flex-direction:column;justify-content:center;align-items:center;width:100%;min-height:100vh;padding:24px 16px;display:flex;overflow-x:hidden}.auth-card{width:100%;max-width:var(--content-max-width);background:var(--tutto-surface);border:1px solid var(--tutto-border);box-shadow:0 8px 28px rgba(var(--tutto-primary-rgb), .07);border-radius:20px;padding:32px 22px 24px;overflow:visible}.auth-brand{box-sizing:border-box;flex-direction:column;justify-content:center;align-items:center;width:100%;margin-bottom:10px;padding-top:8px;display:flex;overflow:visible}.auth-brand .tutto-brand-wrap{box-sizing:border-box;width:fit-content;max-width:100%;margin-inline:auto;line-height:0;display:block;overflow:visible}.auth-brand .tutto-brand--wordmark-tagline{--tutto-brand-wordmark-tagline-width:236px;width:min(calc(100% - 24px), var(--tutto-brand-wordmark-tagline-width));object-fit:contain;object-position:center;height:auto;max-height:none;margin-inline:auto;display:block}.auth-brand .tutto-brand--compact{--tutto-brand-compact-height:36px;margin-inline:auto}.auth-title{color:var(--tutto-text-primary);margin-top:10px;font-size:22px;font-weight:800}@media (width<=430px){.auth-brand .tutto-brand--wordmark-tagline{--tutto-brand-wordmark-tagline-width:214px}}@media (width<=412px){.auth-brand .tutto-brand--wordmark-tagline{--tutto-brand-wordmark-tagline-width:212px}}@media (width<=390px){.auth-brand .tutto-brand--wordmark-tagline{--tutto-brand-wordmark-tagline-width:208px}}@media (width<=375px){.auth-brand .tutto-brand--wordmark-tagline{--tutto-brand-wordmark-tagline-width:204px}}@media (width<=360px){.auth-brand .tutto-brand--wordmark-tagline{--tutto-brand-wordmark-tagline-width:200px}}@media (width<=344px){.auth-brand .tutto-brand--wordmark-tagline{--tutto-brand-wordmark-tagline-width:188px}}@media (width<=320px){.auth-brand .tutto-brand--wordmark-tagline{--tutto-brand-wordmark-tagline-width:184px}}@media (width<=430px){.auth-brand{padding-inline:12px}}@media (width<=390px){.auth-page{padding-top:max(24px, env(safe-area-inset-top,0px))}.auth-brand{padding-top:12px}.auth-brand .tutto-brand-wrap{padding-top:3px}}@media (width<=344px){.auth-brand{padding-top:14px}.auth-brand .tutto-brand-wrap{padding-top:4px}}@media (width>=768px){.auth-brand{padding-top:12px}}.auth-subtitle{color:var(--tutto-text-secondary);margin-top:10px;margin-bottom:14px;font-size:14px}.auth-subtitle--verification{text-align:center;margin-top:8px}.auth-card--verification-success .auth-brand{text-align:center;align-items:center}.auth-verification-icon{color:#059669;background:#ecfdf5;border-radius:50%;justify-content:center;align-items:center;width:52px;height:52px;margin:12px auto 4px;font-size:28px;font-weight:700;line-height:1;display:flex}.auth-card--verification-success .auth-title{color:#111827;text-align:center;margin:0;font-size:20px;font-weight:700}.auth-mode-tabs{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:18px;display:grid}.auth-mode-tab{border:1.5px solid var(--tutto-primary-soft);height:42px;color:var(--tutto-text-secondary);cursor:pointer;background:#f9fafb;border-radius:12px;font-family:inherit;font-size:14px;font-weight:700}.auth-mode-tab.active{background:var(--tutto-primary-soft);border-color:var(--tutto-primary);color:var(--tutto-primary);box-shadow:inset 0 0 0 1px rgba(var(--tutto-primary-rgb), .06)}.auth-mode-tabs--roles{grid-template-columns:repeat(3,1fr)}@media (width<=380px){.auth-mode-tabs--roles{grid-template-columns:1fr}.auth-mode-tabs--roles .auth-mode-tab{height:40px;font-size:13px}}.auth-mode-tabs--secondary{margin-top:-6px;margin-bottom:16px}.student-code-input{letter-spacing:.12em;text-transform:uppercase;font-weight:600}.auth-form{flex-direction:column;gap:14px;display:flex}.auth-field{flex-direction:column;gap:6px;display:flex}.auth-label{color:var(--tutto-text-secondary);font-size:13px;font-weight:700}.auth-input{width:100%;height:48px;color:var(--tutto-text-primary);background:#fff;border:1.5px solid #e5e7eb;border-radius:12px;padding:0 14px;font-family:inherit;font-size:15px}.auth-input:focus{border-color:var(--tutto-primary);box-shadow:0 0 0 3px rgba(var(--tutto-primary-rgb), .12);outline:none}.auth-submit{background:linear-gradient(135deg, var(--tutto-primary), var(--tutto-primary-hover));color:#fff;cursor:pointer;width:100%;height:52px;box-shadow:0 5px 16px rgba(var(--tutto-primary-rgb), .28);border:none;border-radius:14px;margin-top:4px;font-family:inherit;font-size:16px;font-weight:800}.auth-submit:disabled{opacity:.7;cursor:not-allowed}.auth-notice{color:#065f46;background:#ecfdf5;border-radius:12px;padding:10px 12px;font-size:13px;line-height:1.5}.auth-error{color:#b91c1c;background:#fef2f2;border-radius:12px;padding:10px 12px;font-size:13px;line-height:1.5}.auth-footnote{color:#6b7280;margin-top:14px;font-size:12px;line-height:1.5}.loading-brand-group{--loading-logo-width:196px;--loading-optical-offset-y:14px;--loading-brand-gap:13px;justify-content:center;align-items:stretch;gap:var(--loading-brand-gap);width:var(--loading-logo-width);box-sizing:border-box;text-align:center;max-width:100%;transform:translateY(var(--loading-optical-offset-y));flex-direction:column;display:inline-flex}@media (width>=768px){.loading-brand-group{--loading-logo-width:202px}}.loading-brand-group .tutto-brand-wrap{flex-shrink:0;width:100%;line-height:0;display:block}.loading-brand-group p,.loading-brand-group .route-loading-fallback-text{text-align:center;box-sizing:border-box;width:100%;margin:0;font-size:14px;line-height:1.4}.loading-brand-group .auth-loading-brand-logo{--tutto-brand-compact-width:var(--loading-logo-width);width:100%;max-width:100%;height:auto;display:block}.auth-loading,.auth-bootstrap-error{box-sizing:border-box;text-align:center;width:100%;min-width:0;min-height:100dvh;color:var(--tutto-text-secondary);flex-direction:column;justify-content:center;align-items:center;padding:24px;display:flex}.auth-loading-brand-logo{--tutto-brand-compact-width:168px;width:min(100%, var(--tutto-brand-compact-width));height:auto}.auth-loading-brand-logo.tutto-brand--compact{height:auto}.route-loading-fallback .auth-loading-brand-logo,.auth-loading .auth-loading-brand-logo,.auth-bootstrap-error .auth-loading-brand-logo{margin-bottom:0}.route-loading-fallback{box-sizing:border-box;width:100%;min-width:0;max-width:none;min-height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));text-align:center;color:var(--tutto-text-secondary);flex-direction:column;justify-content:center;align-self:stretch;align-items:center;padding:24px 16px;display:flex}@media (width<=767px){.app-shell--with-nav .route-loading-fallback{min-height:calc(100dvh - env(safe-area-inset-top,0px) - var(--mobile-app-chrome-height) - var(--bottom-nav-height) - env(safe-area-inset-bottom,0px))}}@media (width>=768px){.app-shell--with-sidebar .route-loading-fallback{min-height:100dvh}}.route-loading-fallback-text{margin:0;font-size:14px}.auth-bootstrap-error p{max-width:360px;line-height:1.5}.route-error-page{box-sizing:border-box;width:100%;max-width:420px;min-height:100vh;margin:0 auto;padding-top:48px}.route-error-page .auth-submit{width:auto;min-width:160px;max-width:280px;padding:0 24px}@media (width<=430px){.route-error-page .auth-submit{width:100%;max-width:320px}}.route-error-title{color:var(--tutto-text-primary);margin:0;font-size:18px;font-weight:800}.route-error-body{max-width:360px;color:var(--tutto-text-secondary);margin:0;font-size:14px;line-height:1.6}.auth-user-bar{padding:10px var(--app-page-gutter) 0;max-width:var(--app-page-max-standard);box-sizing:border-box;justify-content:space-between;align-items:center;gap:10px;width:100%;margin:0 auto;display:flex}.student-user-bar{gap:8px}.student-user-left{flex:1;min-width:0}.teacher-user-bar{gap:8px}.teacher-user-left{flex:1;align-items:center;gap:10px;min-width:0;display:flex}.teacher-notif-hdr{padding:0 var(--app-page-gutter,16px);justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px;display:flex}.teacher-notif-subtitle{color:#6b7280;margin:4px 0 0;font-size:14px}.teacher-notif-body{padding:0 var(--app-page-gutter,16px) 24px}.auth-user-email{color:#6b7280;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12px;overflow:hidden}.auth-logout-btn{color:var(--tutto-primary);cursor:pointer;background:0 0;border:none;flex-shrink:0;font-family:inherit;font-size:12px;font-weight:700}.auth-inline-link{color:var(--tutto-primary);font-size:13px;font-weight:700;text-decoration:none}.auth-inline-link:hover{text-decoration:underline}.auth-footnote--link-row{text-align:center;margin-top:4px}.auth-user-link{flex-shrink:0;font-size:12px}.account-settings-page{max-width:var(--app-page-max-standard);padding:16px var(--app-page-gutter) 32px;margin:0 auto}.account-settings-header h1{margin:0;font-size:20px;font-weight:800}.account-settings-email{color:var(--tutto-text-secondary);margin-top:6px;font-size:13px}.account-settings-section{border:1.5px solid var(--tutto-primary-soft);background:#fff;border-radius:16px;margin-top:24px;padding:18px 16px}.account-settings-section h2{margin:0 0 12px;font-size:16px;font-weight:800}.account-settings-form{margin-top:8px}.account-settings-section--danger{background:snow;border-color:#fecaca}.account-settings-muted{color:var(--tutto-text-secondary);margin:0;font-size:14px;line-height:1.6}.account-delete-submit{background:#dc2626;border-color:#dc2626}.account-delete-submit:disabled{opacity:.6}.account-delete-form{gap:12px;margin-top:12px;display:grid}.account-delete-check{color:var(--tutto-text-secondary);align-items:flex-start;gap:8px;font-size:14px;line-height:1.5;display:flex}.account-delete-check input{margin-top:3px}.account-settings-actions{gap:12px;margin-top:24px;display:grid}.account-settings-actions .account-settings-home-btn{text-align:center;box-sizing:border-box;justify-content:center;align-items:center;margin-top:0;text-decoration:none;display:flex}.account-settings-actions .account-settings-home-btn:focus-visible{outline:2px solid rgba(var(--tutto-primary-rgb), .45);outline-offset:2px}.logout-btn{border:1px solid var(--tutto-primary-border);background:var(--tutto-primary-soft-2);height:36px;color:var(--tutto-primary);cursor:pointer;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;gap:6px;margin-right:6px;padding:0 14px;font-family:inherit;font-size:14px;font-weight:700;line-height:1;transition:background .15s,border-color .15s;display:inline-flex}.logout-btn-icon{flex-shrink:0;width:16px;height:16px}.logout-btn-text{white-space:nowrap}.logout-btn:hover:not(:disabled){background:var(--tutto-primary-soft);border-color:var(--tutto-primary-border)}.logout-btn:active:not(:disabled){background:#dce9fb}.logout-btn:focus-visible{outline:2px solid var(--tutto-primary);outline-offset:2px}.logout-btn:disabled{opacity:.72;cursor:not-allowed}.logout-btn-spinner{border:2px solid var(--tutto-primary-border);border-top-color:var(--tutto-primary);border-radius:50%;flex-shrink:0;width:14px;height:14px;animation:.75s linear infinite logout-btn-spin;display:inline-block}@keyframes logout-btn-spin{to{transform:rotate(360deg)}}.logout-btn--block{width:100%;margin-top:0;margin-right:0;display:flex}.logout-btn--sidebar{border-radius:var(--tutto-radius-sm,10px);gap:3px;width:100%;height:auto;min-height:32px;margin:0;padding:0 5px;font-size:.6875rem;line-height:1.2}.app-sidebar-footer-btn--logout.logout-btn .logout-btn-icon{width:13px;height:13px}.legal-page{background:linear-gradient(#f5f9ff 0%,#fff 40%);flex-direction:column;min-height:100vh;display:flex}.legal-header{padding:20px var(--app-page-gutter) 0}.legal-brand{color:inherit;flex-direction:column;text-decoration:none;display:inline-flex}.legal-brand-name{color:var(--tutto-primary);font-size:22px;font-weight:800}.legal-brand-tagline{color:var(--tutto-text-secondary);margin-top:4px;font-size:13px}.legal-main{padding:16px var(--app-page-gutter) 32px;flex:1}.legal-document{border:1.5px solid var(--tutto-primary-soft);background:#fff;border-radius:16px;max-width:720px;margin:0 auto;padding:24px 18px}.legal-document h1{margin:0;font-size:22px;font-weight:800}.legal-effective-date{color:var(--tutto-text-secondary);margin:8px 0 20px;font-size:13px}.legal-section{margin-top:22px}.legal-section h2{margin:0 0 10px;font-size:16px;font-weight:800}.legal-section p{color:var(--tutto-text-primary);white-space:pre-wrap;margin:0 0 8px;font-size:14px;line-height:1.7}.legal-contact{border-top:1px solid var(--tutto-primary-soft);padding-top:18px}.legal-muted{color:var(--tutto-text-secondary);font-size:13px}.legal-footer{padding:16px var(--app-page-gutter) 28px;text-align:center;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;font-size:13px;display:flex}.legal-footer a{color:var(--tutto-text-secondary);text-decoration:none}.legal-footer a:hover{color:var(--tutto-primary);text-decoration:underline}.auth-legal-footer{width:100%;max-width:var(--content-max-width);text-align:center;color:var(--tutto-text-secondary);box-sizing:border-box;flex-shrink:0;margin-top:20px;font-size:13px}.auth-legal-footer a{color:var(--tutto-text-secondary);text-decoration:none}.auth-legal-footer a:hover{color:var(--tutto-primary);text-decoration:underline}.auth-legal-sep{margin:0 6px}.signup-consent{border:1px solid var(--tutto-primary-soft);background:#fafcff;border-radius:12px;gap:10px;margin-top:4px;padding:14px 12px;display:grid}.signup-consent-row{color:var(--tutto-text-secondary);align-items:flex-start;gap:8px;font-size:13px;line-height:1.5;display:flex}.signup-consent-row input{flex-shrink:0;margin-top:3px}.signup-consent-row--all{color:var(--tutto-text-primary);font-weight:700}.signup-consent-row a{color:var(--tutto-primary);text-decoration:underline}.signup-consent-summary{color:var(--tutto-text-secondary);font-size:12px}.signup-consent-summary summary{cursor:pointer;-webkit-user-select:none;user-select:none}.signup-consent-summary ul{margin:8px 0 0;padding-left:18px}.signup-consent-summary li+li{margin-top:4px}.account-settings-links{gap:8px;margin-top:8px;display:grid}.account-settings-link-row{font-size:14px}.account-settings-link-row a{color:var(--tutto-primary);text-decoration:none}.account-settings-link-row a:hover{text-decoration:underline}.bottom-nav{width:100%;max-width:var(--bottom-nav-max-width);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--tutto-border);padding-bottom:env(safe-area-inset-bottom,0px);z-index:50;box-shadow:0 -10px 30px rgba(var(--tutto-primary-rgb), .08);background:#fffffff5;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}@media (width>=768px){.app-shell--with-sidebar .bottom-nav{display:none}}.bottom-nav-icon-wrap{width:30px;height:30px;box-shadow:none;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex;position:relative}.bottom-nav-badge{color:#fff;text-align:center;pointer-events:none;background:#dc2626;border-radius:9999px;min-width:15px;height:15px;padding:0 3px;font-size:9px;font-weight:800;line-height:15px;position:absolute;top:-2px;right:-6px}.bottom-nav-item{cursor:pointer;min-width:0;min-height:56px;color:var(--tutto-text-tertiary);background:0 0;border:none;flex:1;justify-content:center;align-items:center;padding:4px 0;font-family:inherit;text-decoration:none;display:flex}.bottom-nav-item:active{opacity:.85}.bottom-nav-inner{max-width:100%;box-shadow:none;background:0 0;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:4px 6px;display:flex}.bottom-nav-icon{justify-content:center;align-items:center;line-height:1;display:inline-flex}.bottom-nav-label{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:9px;font-weight:700;line-height:1.15;overflow:hidden}.bottom-nav-item.active{color:var(--tutto-primary)}.bottom-nav-item.active .bottom-nav-inner{box-shadow:none;background:0 0}.bottom-nav-item.active .bottom-nav-icon-wrap{background:var(--tutto-primary-soft);box-shadow:none}.bottom-nav-item.active .bottom-nav-icon{color:var(--tutto-primary)}.bottom-nav-item.active .bottom-nav-label{color:var(--tutto-primary);font-weight:800}.app-shell--with-nav .dashboard .dashboard-content{padding-bottom:calc(var(--page-floating-action-clearance) + env(safe-area-inset-bottom,0px))}.app-shell--with-nav .submissions-page,.app-shell--with-nav .teacher-activity-page{padding-bottom:calc(var(--shell-content-padding-bottom) + env(safe-area-inset-bottom,0px))}.app-shell--with-nav .dashboard .teacher-hw-section,.app-shell--with-nav .dashboard .hw-section,.app-shell--with-nav .student-detail-page .detail-tab-content{padding-bottom:16px}.app-shell--with-nav .students-page.app-page{padding-bottom:calc(var(--page-floating-action-clearance) + env(safe-area-inset-bottom,0px))}.app-shell--with-nav .students-page .stu-list{padding-bottom:16px}.app-shell--with-nav .assign-page .assign-wrap{padding-bottom:calc(var(--shell-assign-padding-bottom) + env(safe-area-inset-bottom,0px))}.app-shell--with-nav .dashboard .toast,.app-shell--with-nav .students-page .toast,.app-shell--with-nav .student-detail-page .toast,.app-shell--with-nav .assign-page .toast{bottom:calc(var(--shell-toast-bottom) + env(safe-area-inset-bottom,0px))}.app-shell--with-nav .teacher-questions-page,.app-shell--with-nav .teacher-question-detail-page{padding-bottom:calc(var(--shell-content-padding-bottom) + env(safe-area-inset-bottom,0px))}@media (width<=359px){.bottom-nav-label{font-size:8px}.bottom-nav-inner{padding:4px}}.teacher-bottom-nav.bottom-nav{max-width:var(--teacher-bottom-nav-max-width)}.teacher-bottom-nav .bottom-nav-inner{padding:4px 5px}.teacher-bottom-nav .bottom-nav-label{font-size:8.5px}@media (width>=390px){.teacher-bottom-nav .bottom-nav-label{font-size:9px}.teacher-bottom-nav .bottom-nav-inner{padding:4px 6px}}.app-shell--with-nav .teacher-homework-page .teacher-hw-section,.app-shell--with-nav .teacher-homework-page .hw-section{padding-bottom:calc(var(--page-floating-action-clearance) + env(safe-area-inset-bottom,0px))}.app-shell--with-nav .teacher-homework-page .app-page-inner{padding-bottom:0}.app-system-announcement-shell{flex-direction:column;min-width:0;display:flex}.app-system-announcement-shell-body{min-width:0}.app-system-announcement-shell:has(.system-update-banner) .app-system-announcement-shell-body{padding-top:1rem}.system-update-banner{color:var(--text-primary,#1f2937);background:linear-gradient(#2165c114,#2165c10a);border:1px solid #2165c140;border-radius:12px;flex-direction:column;flex-shrink:0;gap:.75rem;margin:.75rem 1rem 0;padding:.875rem 1rem;display:flex;box-shadow:0 1px 2px #0f172a0f}.system-update-banner-copy{min-width:0}.system-update-banner-title{color:#2165c1;margin:0;font-size:.9375rem;font-weight:700}.system-update-banner-desc{margin:.25rem 0 0;font-size:.875rem;line-height:1.45}.system-update-banner-actions{flex-direction:column;align-items:stretch;gap:.5rem;min-width:0;display:flex}.system-update-banner-actions-main{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.system-update-banner-action{border-radius:var(--flora-control-radius,10px);cursor:pointer;white-space:nowrap;border:1.5px solid #0000;justify-content:center;align-items:center;gap:.375rem;min-height:40px;padding:.5rem .875rem;font-family:inherit;font-size:.875rem;font-weight:600;line-height:1.2;transition:background .17s,border-color .17s,color .17s,transform .12s;display:inline-flex}.system-update-banner-action:focus-visible{outline-offset:2px;outline:2px solid #2165c1}.system-update-banner-action:active{transform:scale(.98)}.system-update-banner-action--primary{color:#fff;background:#2165c1;border-color:#2165c1}.system-update-banner-action--primary:hover{background:#1a52a0;border-color:#1a52a0}.system-update-banner-action--primary:active{background:#164690;border-color:#164690}.system-update-banner-action--primary .app-icon{color:currentColor}.system-update-banner-action--secondary{color:#2165c1;background:#fff;border-color:#2165c152}.system-update-banner-action--secondary:hover{background:#2165c10f;border-color:#2165c17a}.system-update-banner-action--secondary:active{background:#2165c11a}.system-update-banner-action--tertiary{color:var(--text-secondary,#64748b);background:0 0;border-color:#0000;align-self:center;min-height:36px;padding:.375rem .75rem;font-weight:500}.system-update-banner-action--tertiary:hover{color:#475569;background:#0f172a0a}.system-update-banner-actions-main .system-update-banner-action--secondary{flex:9.5rem;min-width:0}.system-update-banner-actions-main .system-update-banner-action--primary{flex:none}.system-announcement-modal-backdrop{z-index:1200;overscroll-behavior:contain;background:#0f172a73;justify-content:center;align-items:flex-end;padding:1rem;display:flex;position:fixed;inset:0;overflow:hidden}.system-announcement-modal{background:#fff;border-radius:16px 16px 12px 12px;flex-direction:column;width:min(100%,100vw - 32px);max-height:min(80dvh,720px);padding:1rem 1rem 0;display:flex;overflow:hidden;box-shadow:0 12px 40px #0f172a2e}.system-announcement-modal-header{flex-shrink:0;justify-content:space-between;gap:1rem;display:flex}.system-announcement-modal-sender{color:#2165c1;margin:0;font-size:.8125rem;font-weight:700}.system-announcement-modal-title{margin:.25rem 0 0;font-size:1.125rem;line-height:1.35}.system-announcement-modal-release{color:var(--text-secondary,#64748b);margin:.35rem 0 0;font-size:.875rem}.system-announcement-modal-close{cursor:pointer;color:var(--text-secondary,#64748b);background:0 0;border:none;flex-shrink:0;width:44px;height:44px;margin:-8px -8px -8px 0;padding:0;font-size:1.5rem;line-height:1}.system-announcement-modal-meta{color:var(--text-secondary,#64748b);flex-shrink:0;margin-top:.5rem;font-size:.8125rem}.system-announcement-modal-body{white-space:pre-wrap;overflow-wrap:anywhere;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;flex:auto;min-height:0;margin-top:1rem;padding-right:.125rem;font-size:.9375rem;line-height:1.65;overflow:hidden auto}.system-announcement-modal-body p{margin:0 0 .625rem}.system-announcement-modal-spacer{min-height:.625rem}.system-announcement-modal-footer{padding:.75rem 0 calc(.75rem + env(safe-area-inset-bottom,0px));background:#fff;border-top:1px solid #0f172a14;flex-shrink:0;justify-content:flex-end;align-items:center;gap:.75rem;margin-top:0;display:flex}.system-announcement-modal-footer .system-update-banner-btn,.system-announcement-modal-footer .system-update-banner-link{border-radius:var(--flora-control-radius,10px);cursor:pointer;justify-content:center;align-items:center;min-height:44px;padding:.625rem 1rem;font-family:inherit;font-size:.875rem;font-weight:600;line-height:1.2;transition:background .17s,border-color .17s,color .17s,transform .12s;display:inline-flex}.system-announcement-modal-footer .system-update-banner-btn{color:#fff;background:#2165c1;border:1.5px solid #2165c1}.system-announcement-modal-footer .system-update-banner-btn:hover{background:#1a52a0;border-color:#1a52a0}.system-announcement-modal-footer .system-update-banner-link{color:#2165c1;background:0 0;border:none;font-weight:600}.system-announcement-modal-footer .system-update-banner-link:hover{background:#2165c10f}@media (width>=768px){.app-system-announcement-shell:has(.system-update-banner) .app-system-announcement-shell-body{padding-top:1.25rem}.system-update-banner{flex-direction:row;justify-content:space-between;align-items:center;gap:1rem;margin:1rem 1.25rem 0}.system-update-banner-actions{flex-flow:row;flex-shrink:0;align-items:center;gap:8px}.system-update-banner-actions-main{flex-wrap:nowrap}.system-update-banner-actions-main .system-update-banner-action--secondary,.system-update-banner-actions-main .system-update-banner-action--primary{flex:none}.system-update-banner-action--tertiary{border-left:1px solid #2165c129;border-radius:0;align-self:center;min-height:40px;margin-left:4px;padding-left:.75rem}.system-update-banner-action--tertiary:hover{background:0 0}.system-announcement-modal-backdrop{align-items:center;padding:1.5rem}.system-announcement-modal{border-radius:16px;width:min(680px,100vw - 48px);max-height:min(80dvh,720px);padding:1.25rem 1.5rem 0}.system-announcement-modal-footer{padding:1rem 0 1.5rem}}@media (width>=1024px){.app-system-announcement-shell:has(.system-update-banner) .app-system-announcement-shell-body{padding-top:1.5rem}.system-update-banner{margin:1rem 1.5rem 0}.system-announcement-modal{width:min(840px,100vw - 64px)}}@media (width<=767px){.app-system-announcement-shell{padding-top:var(--mobile-space-2,8px)}.system-announcement-modal-backdrop{padding:calc(12px + env(safe-area-inset-top,0px)) 12px calc(12px + env(safe-area-inset-bottom,0px))}.system-announcement-modal{width:min(100%,100vw - 24px);max-height:calc(100dvh - 24px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));padding:1rem 1rem 0}.system-announcement-modal-footer{padding:.75rem 0 calc(.75rem + env(safe-area-inset-bottom,0px))}.system-update-banner{margin:0 var(--mobile-page-gutter,16px);padding:.875rem var(--mobile-page-gutter,16px);gap:.625rem}.system-update-banner-action{min-height:44px}.system-update-banner-action--tertiary{width:100%;max-width:100%;min-height:44px}}.app-shell{background:var(--tutto-background);min-height:100dvh}.app-shell-body{min-height:100dvh;display:block}.app-shell-main{min-width:0;min-height:auto;overflow:visible}.app-sidebar{display:none}@media (width>=768px){.app-shell-body{align-items:flex-start;min-height:100dvh;display:flex}.app-shell--with-sidebar .app-shell-body{min-height:100dvh}.app-sidebar{width:var(--app-sidebar-width);z-index:40;border-right:1px solid var(--tutto-border);background:var(--tutto-surface);height:100dvh;max-height:100dvh;box-shadow:1px 0 0 rgba(var(--tutto-primary-rgb), .04);flex-direction:column;flex-shrink:0;align-self:flex-start;display:flex;position:sticky;top:0}.app-sidebar-inner{flex-direction:column;gap:8px;height:100%;padding:20px 12px 16px;display:flex}.app-sidebar-brand{min-width:0;color:inherit;align-items:center;padding:6px 8px 14px;text-decoration:none;display:inline-flex}.app-sidebar-brand .tutto-brand--compact{--tutto-brand-compact-height:38px;max-width:100%}.app-sidebar-nav{flex-direction:column;flex:1;gap:4px;min-height:0;display:flex;overflow-y:auto}.app-sidebar-item{border-radius:var(--tutto-radius-md);min-height:44px;color:var(--tutto-text-secondary);transition:background var(--flora-transition), color var(--flora-transition);align-items:center;gap:10px;padding:0 12px;font-size:.875rem;font-weight:700;text-decoration:none;display:flex}.app-sidebar-item:hover{background:var(--tutto-primary-soft-2);color:var(--tutto-primary)}.app-sidebar-item.active{background:var(--tutto-primary-soft);color:var(--tutto-primary)}.app-sidebar-item:focus-visible{outline:2px solid var(--tutto-primary);outline-offset:2px}.app-sidebar-icon{flex-shrink:0;justify-content:center;width:20px;display:inline-flex}.app-sidebar-label{flex:1;min-width:0}.app-sidebar-badge{background:var(--tutto-error);color:#fff;text-align:center;border-radius:999px;min-width:18px;height:18px;padding:0 5px;font-size:.625rem;font-weight:800;line-height:18px}.app-sidebar-footer{border-top:1px solid var(--tutto-border);margin-top:auto;padding-top:12px}.app-sidebar-footer-link{border-radius:var(--tutto-radius-sm);min-height:40px;color:var(--tutto-text-secondary);align-items:center;gap:8px;padding:0 10px;font-size:.8125rem;font-weight:700;text-decoration:none;display:inline-flex}.app-sidebar-footer-actions{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px;display:grid}.app-sidebar-footer-actions--logout-only{grid-template-columns:minmax(0,1fr)}.app-sidebar-footer-btn{border:1px solid var(--tutto-border);border-radius:var(--tutto-radius-sm);background:var(--tutto-surface);min-height:32px;color:var(--tutto-text-secondary);box-sizing:border-box;justify-content:center;align-items:center;gap:3px;min-width:0;padding:0 5px;font-size:.6875rem;font-weight:700;line-height:1.2;text-decoration:none;display:inline-flex}.app-sidebar-footer-btn .app-icon{flex-shrink:0;width:13px;height:13px}.app-sidebar-footer-btn span{white-space:nowrap;flex-shrink:0}.app-sidebar-footer-btn--account:hover{background:var(--tutto-primary-soft-2);border-color:rgba(var(--tutto-primary-rgb), .22);color:var(--tutto-primary)}.app-sidebar-footer-btn--account:focus-visible,.app-sidebar-footer-btn--logout:focus-visible{outline:2px solid rgba(var(--tutto-primary-rgb), .45);outline-offset:2px}.app-sidebar-footer-btn--logout.logout-btn{border-color:rgba(var(--tutto-primary-rgb), .22);background:var(--tutto-primary-soft-2);color:var(--tutto-primary)}.app-sidebar-footer-btn--logout.logout-btn:hover:not(:disabled){background:var(--tutto-primary-soft);border-color:rgba(var(--tutto-primary-rgb), .32)}.app-sidebar-footer-link:hover{background:var(--tutto-primary-soft-2);color:var(--tutto-primary)}.app-shell-main{min-width:0;min-height:auto;padding-bottom:var(--shell-content-padding-bottom,32px);flex:1;overflow:visible}.app-shell--with-sidebar .auth-user-bar{display:none}.app-shell--with-sidebar.app-shell--with-nav{--shell-content-padding-bottom:32px}}@media (width>=768px) and (width<=1023px){.app-sidebar{width:var(--app-sidebar-width-tablet,188px)}.app-sidebar-inner{padding:16px 10px 12px}.app-sidebar-brand .tutto-brand--compact{--tutto-brand-compact-height:34px}.app-sidebar-item{min-height:42px;padding:0 10px;font-size:.8125rem}}@media (width<=767px){:root{--mobile-space-1:4px;--mobile-space-2:8px;--mobile-space-3:12px;--mobile-space-4:16px;--mobile-space-5:20px;--mobile-space-6:24px;--mobile-space-7:32px;--mobile-page-gutter:var(--app-page-gutter,16px);--mobile-section-gap:var(--mobile-space-4);--mobile-content-padding-bottom:calc(var(--bottom-nav-height,64px) + var(--mobile-space-3));--mobile-sticky-bottom:calc(var(--bottom-nav-height,64px) + env(safe-area-inset-bottom,0px));--mobile-sticky-action-height:68px;--mobile-sticky-action-padding-y:var(--mobile-space-3);--mobile-sticky-action-padding-x:var(--mobile-space-4);--mobile-sticky-surface-border:1px solid #0f172a14;--mobile-sticky-surface-shadow:0 -6px 16px #0f172a0f;--mobile-type-page-title-size:1.125rem;--mobile-type-page-title-weight:800;--mobile-type-page-title-lh:1.3;--mobile-type-section-title-size:.875rem;--mobile-type-section-title-weight:800;--mobile-type-section-title-lh:1.35;--mobile-type-card-title-size:.9375rem;--mobile-type-card-title-weight:800;--mobile-type-card-title-lh:1.35;--mobile-type-body-size:.875rem;--mobile-type-body-lh:1.5;--mobile-type-meta-size:.8125rem;--mobile-type-meta-lh:1.45;--mobile-type-chip-size:.75rem;--mobile-type-chip-weight:700;--mobile-type-btn-size:.875rem;--mobile-type-btn-weight:700;--mobile-type-nav-label-size:10px;--mobile-type-nav-label-weight:700;--mobile-type-input-size:16px;--mobile-card-radius:14px;--mobile-card-radius-compact:var(--tutto-radius-md,12px);--mobile-card-padding-y:14px;--mobile-card-padding-x:var(--mobile-space-4);--mobile-card-padding-compact-y:var(--mobile-space-3);--mobile-card-padding-compact-x:14px;--mobile-metric-padding-y:10px;--mobile-metric-padding-x:var(--mobile-space-3);--mobile-touch-target:44px;--mobile-chip-height:36px;--mobile-chip-padding-y:6px;--mobile-chip-padding-x:10px;--mobile-btn-height:44px;--mobile-btn-radius:var(--tutto-radius-md,12px);--mobile-icon-btn-size:44px;--mobile-nav-icon-size:22px;--mobile-fab-size:42px;--mobile-fab-icon-size:18px;--mobile-fab-label-size:.8125rem;--mobile-fab-pill-min-width:108px;--mobile-fab-pill-padding-x:12px;--mobile-fab-breathing-room:10px;--mobile-secondary-control-height:36px;--mobile-filter-group-gap:var(--mobile-space-3);--mobile-home-context-top-gap:7px;--mobile-app-chrome-height:52px;--mobile-page-header-top:var(--mobile-space-2);--mobile-page-header-bottom:var(--mobile-space-3);--mobile-page-header-subtitle-gap:6px;--mobile-page-header-desc-size:.875rem;--mobile-page-header-desc-weight:500;--mobile-page-header-desc-lh:1.45;--mobile-page-header-desc-color:var(--tutto-text-secondary);--mobile-toolbar-top-gap:var(--mobile-space-2);--mobile-search-to-filter-gap:var(--mobile-space-2);--mobile-filter-to-results-gap:var(--mobile-space-2);--mobile-mgmt-summary-filter-gap:var(--mobile-space-3);--mobile-mgmt-summary-to-filter-gap:calc(var(--mobile-space-2) + var(--mobile-space-2) + var(--mobile-mgmt-summary-filter-gap));--mobile-card-list-gap:var(--mobile-space-3);--mobile-fab-page-padding-bottom:var(--page-floating-action-clearance);--fab-size:var(--mobile-fab-size);--fab-icon-size:var(--mobile-fab-icon-size);--fab-breathing-room:var(--mobile-fab-breathing-room);--page-floating-action-clearance:calc(var(--bottom-nav-height) + var(--fab-offset) + var(--mobile-fab-size) + var(--mobile-fab-breathing-room));--shell-content-padding-bottom:var(--page-floating-action-clearance)}.app-shell--with-nav .app-shell-main,.app-shell--with-nav .student-page.app-page:not(.student-question-detail-page),.app-shell--with-nav .parent-page.app-page,.app-shell--with-nav .teacher-page.app-page:not(.teacher-question-detail-page){padding-bottom:calc(var(--mobile-content-padding-bottom) + env(safe-area-inset-bottom,0px))}.app-shell--with-nav .teacher-surface--header-cta.app-page,.app-shell--with-nav .classes-page.app-page,.app-shell--with-nav .students-page.app-page,.app-shell--with-nav .teacher-homework-page.app-page,.app-shell--with-nav .teacher-page.teacher-surface--header-cta.app-page,.app-shell--with-nav .teacher-page.classes-page.app-page,.app-shell--with-nav .teacher-page.students-page.app-page,.app-shell--with-nav .teacher-page.teacher-homework-page.app-page{padding-bottom:calc(var(--page-floating-action-clearance) + env(safe-area-inset-bottom,0px))}.feedback-mobile-sticky-action,.planner-share-feedback-mobile-action{padding:var(--mobile-sticky-action-padding-y) var(--mobile-sticky-action-padding-x);background:var(--tutto-surface);border-top:var(--mobile-sticky-surface-border);box-shadow:var(--mobile-sticky-surface-shadow);left:0;right:0;bottom:var(--mobile-sticky-bottom);z-index:35;position:fixed}.student-hw-filter-chip,.teacher-sub-filter-chip,.teacher-sub-kind-chip,.student-notif-filter-chip,.student-feedback-page .filter-chip,.student-feedback-page .student-mgmt-filter-subrow .filter-chip{min-height:var(--mobile-chip-height);padding:var(--mobile-chip-padding-y) var(--mobile-chip-padding-x);font-size:var(--mobile-type-chip-size);font-weight:var(--mobile-type-chip-weight);line-height:1.2}.teacher-sub-subject-chip{min-height:var(--mobile-chip-height);font-size:var(--mobile-type-chip-size)}.feedback-save-btn,.student-hw-btn,.teacher-sub-card-cta,.planner-bottom-share-btn--primary,.planner-share-feedback-save-btn,.qa-composer-submit{min-height:var(--mobile-btn-height);border-radius:var(--mobile-btn-radius);font-size:var(--mobile-type-btn-size);font-weight:var(--mobile-type-btn-weight)}.student-question-detail-page.detail-info-page,.student-question-detail-page .qa-page,.student-timetable-page.timetable-page,.student-notifications-page .student-notifications-surface,.parent-home-page .parent-home-workspace,.parent-notifications-page .parent-notifications-surface,.parent-session-detail-page .cls-detail-body{justify-content:flex-start;min-height:0;max-height:none}.student-question-detail-page.detail-info-page{min-height:100dvh;max-height:none}.student-question-detail-page .qa-page{flex:auto;min-height:0;max-height:none}.teacher-question-detail-page.detail-info-page,.teacher-question-detail-page .qa-page,.student-planner-page,.student-home-workspace,.teacher-page--home .teacher-dashboard-grid{justify-content:flex-start;min-height:0;max-height:none}.teacher-question-detail-page.detail-info-page{min-height:100dvh;max-height:none}.teacher-question-detail-page .qa-page{flex:auto;min-height:0;max-height:none}}@media (width>=768px){.feedback-mobile-sticky-action,.planner-share-feedback-mobile-action{box-shadow:none;background:0 0;border:none;padding:0;position:static}}@media (width<=767px){html,body,#root{height:auto;min-height:auto;overflow:hidden auto}.app-shell,.app-shell-body,.app-shell-main{height:auto;min-height:auto;overflow:visible}.flora-page,.app-page{height:auto;min-height:auto}.classes-page.app-page,.students-page.app-page,.submissions-page.app-page,.dashboard.app-page,.timetable-page.app-page{min-height:auto}.student-mgmt-surface,.student-hw-surface,.student-content-surface.student-mgmt-surface{box-shadow:none;background:0 0;border:none;border-radius:0;padding:0}.student-mgmt-summary-section,.student-mgmt-filter-section,.student-hw-summary-section,.student-hw-filter-section{padding:0 0 var(--mobile-space-3);border-bottom:none}.student-mgmt-result-section,.student-hw-result-section{padding-top:0}.student-content-surface__body{min-height:0;padding:0}.flora-page-header,.teacher-page .flora-page-header,.teacher-management-page .flora-page-header,.student-page .flora-page-header,.parent-page .flora-page-header,.timetable-page-header.flora-page-header{padding:var(--mobile-page-header-top) var(--mobile-page-gutter) var(--mobile-page-header-bottom);margin:0}.flora-page-header-title,.teacher-page .flora-page-header-title,.student-page .flora-page-header-title,.parent-page .flora-page-header-title{font-size:var(--mobile-type-page-title-size);font-weight:var(--mobile-type-page-title-weight);line-height:var(--mobile-type-page-title-lh);letter-spacing:-.01em}.flora-page-header-desc,.teacher-page .flora-page-header-desc,.student-page .flora-page-header-desc,.parent-page .flora-page-header-desc{margin-top:var(--mobile-page-header-subtitle-gap);font-size:var(--mobile-page-header-desc-size);font-weight:var(--mobile-page-header-desc-weight);line-height:var(--mobile-page-header-desc-lh);color:var(--mobile-page-header-desc-color);letter-spacing:normal}.flora-page-header-row,.teacher-management-page .flora-page-header-row{gap:var(--mobile-space-2);min-height:0}.teacher-surface--header-cta .flora-page-header-action,.teacher-surface--header-cta .teacher-empty-cta,.teacher-surface--header-cta .cls-state--empty .cls-btn--primary,.teacher-surface--header-cta .teacher-hw-empty-cta{display:none}.teacher-management-page .teacher-toolbar,.teacher-management-page .teacher-sub-toolbar{padding:0 var(--mobile-page-gutter);gap:var(--mobile-toolbar-top-gap);margin-bottom:var(--mobile-space-2);background:0 0;border:none}.teacher-management-page .teacher-toolbar-row,.teacher-management-page .teacher-toolbar-row--primary{gap:var(--mobile-search-to-filter-gap)}.teacher-management-page .flora-list-meta.cnt-bar,.teacher-management-page>.flora-list-meta.cnt-bar{padding:0 var(--mobile-page-gutter);margin:0 0 var(--mobile-space-2);font-size:var(--mobile-type-meta-size);color:var(--tutto-text-secondary);font-weight:700}.teacher-management-page .teacher-results-region,.teacher-management-page>.teacher-results-region{padding:0 var(--mobile-page-gutter) var(--mobile-space-4)}.flora-search-wrap,.teacher-management-page .flora-search-wrap{width:100%}.flora-search-field,.teacher-management-page .flora-search-field,.teacher-management-page .teacher-sub-toolbar .flora-search-field{min-height:var(--mobile-touch-target);height:var(--mobile-touch-target);border:1px solid var(--tutto-border);border-radius:var(--mobile-btn-radius);background:var(--tutto-surface);box-shadow:none;padding:0 var(--mobile-space-3);gap:var(--mobile-space-2)}.flora-search-field:focus-within,.teacher-management-page .flora-search-field:focus-within{border-color:var(--tutto-primary);box-shadow:var(--tutto-focus-ring)}.flora-search-input,.teacher-management-page .flora-search-input{font-size:var(--mobile-type-input-size);font-weight:500;line-height:1.2}.flora-search-icon .app-icon,.teacher-management-page .flora-search-icon .app-icon{width:18px;height:18px}.teacher-management-page .flora-chip-row,.teacher-management-page .filter-chip-row,.teacher-management-page .teacher-hw-filter-row,.teacher-management-page .teacher-sub-filter-row,.teacher-management-page .teacher-sub-kind-filter-row,.teacher-management-page .teacher-sub-subject-filters,.stu-filter-toolbar--mobile .filter-chip-row{gap:var(--mobile-space-2);-webkit-overflow-scrolling:touch;scrollbar-width:none;flex-wrap:nowrap;padding-bottom:2px;overflow-x:auto}.teacher-management-page .flora-chip-row::-webkit-scrollbar{display:none}.teacher-management-page .filter-chip-row::-webkit-scrollbar{display:none}.stu-filter-toolbar--mobile .filter-chip-row::-webkit-scrollbar{display:none}.stu-filter-toolbar--mobile,.teacher-management-page .teacher-filter-group{gap:var(--mobile-space-2)}.teacher-management-page .teacher-filter-group+.teacher-filter-group{margin-top:0}.teacher-management-page .teacher-filter-group-label{font-size:var(--mobile-type-meta-size);margin:0;font-weight:600}.teacher-toolbar--students .stu-view-toggle-wrap{margin-top:calc(-1 * var(--mobile-space-1));align-self:flex-end;padding:0}.teacher-toolbar--students .stu-view-toggle{width:auto;min-height:auto;padding:var(--mobile-space-1) 0;color:var(--tutto-text-secondary);font-size:var(--mobile-type-meta-size);text-underline-offset:2px;background:0 0;border:none;border-radius:0;font-weight:600;text-decoration:underline}.teacher-toolbar--students .stu-view-toggle--active{color:var(--tutto-primary);background:0 0;border:none}.teacher-management-page .cls-card,.teacher-management-page .stu-card,.teacher-management-page .teacher-hw-card,.teacher-management-page .teacher-sub-card,.teacher-questions-page .qa-thread-card,.student-notif-card,.student-notif-list-item{border-radius:var(--mobile-card-radius-compact);border:1px solid var(--tutto-border);box-shadow:none}.teacher-management-page .cls-card-list,.teacher-management-page .stu-list,.teacher-management-page .teacher-hw-list,.teacher-management-page .teacher-sub-list,.teacher-questions-page .qa-thread-list{gap:var(--mobile-card-list-gap)}.teacher-surface--header-cta.flora-page,.classes-page.flora-page,.students-page.flora-page,.teacher-homework-page.flora-page{padding-bottom:calc(var(--page-floating-action-clearance) + env(safe-area-inset-bottom,0px))}.app-shell--with-nav .teacher-surface--header-cta .teacher-results-region,.app-shell--with-nav .classes-page .teacher-results-region,.app-shell--with-nav .students-page .teacher-results-region{padding-bottom:var(--mobile-space-2)}.teacher-collection-empty,.teacher-results-region .teacher-hw-empty,.teacher-results-region .teacher-sub-empty,.teacher-results-region .stu-empty,.teacher-results-region .cls-state--empty,.teacher-results-region .cls-state{min-height:0;padding:var(--mobile-space-5) var(--mobile-space-3);box-shadow:none;background:0 0;border:none;border-radius:0}.cls-state{box-shadow:none;padding:var(--mobile-space-5) var(--mobile-space-3);background:0 0;border:none}.teacher-questions-page .student-page-body,.teacher-questions-page .qa-thread-list-wrap{flex:0 auto;min-height:0}.teacher-questions-page .student-empty-state{min-height:0;padding:var(--mobile-space-5) var(--mobile-space-3)}.timetable-page .timetable-page-header{padding-left:var(--mobile-page-gutter);padding-right:var(--mobile-page-gutter)}.timetable-page .timetable-calendar-toolbar{margin-left:var(--mobile-page-gutter);margin-right:var(--mobile-page-gutter);width:auto;max-width:none;padding:var(--mobile-space-3) var(--mobile-space-3) var(--mobile-space-2);border-radius:var(--mobile-card-radius-compact);border:1px solid var(--tutto-border);background:var(--tutto-surface)}.timetable-page .timetable-day-tabs{padding-left:var(--mobile-page-gutter);padding-right:var(--mobile-page-gutter)}.timetable-page .timetable-calendar-shell{margin-left:var(--mobile-page-gutter);margin-right:var(--mobile-page-gutter);border-radius:var(--mobile-card-radius-compact);width:auto}.app-shell--with-nav .teacher-page.timetable-page .timetable-page-header{padding-left:var(--mobile-page-gutter);padding-right:var(--mobile-page-gutter)}.app-shell--with-nav .teacher-page.timetable-page .timetable-calendar-shell,.app-shell--with-nav .teacher-page.timetable-page .timetable-legend-row{margin-left:var(--mobile-page-gutter);margin-right:var(--mobile-page-gutter);width:auto}.app-shell--with-nav .teacher-notifications-page .teacher-notifications-body,.student-notifications-page .student-page-body,.parent-notifications-page .parent-page-body{padding-left:var(--mobile-page-gutter);padding-right:var(--mobile-page-gutter)}.student-notif-groups,.student-notif-list{width:100%}.teacher-page--home .dashboard-panel--tasks,.teacher-page--home .dashboard-panel--classes,.teacher-page--home .dashboard-panel--activity,.teacher-page--home .dashboard-panel--homework .teacher-hw-section{margin-left:var(--mobile-page-gutter);margin-right:var(--mobile-page-gutter);width:auto}.teacher-page--home .dashboard-metrics-section{padding-left:var(--mobile-page-gutter);padding-right:var(--mobile-page-gutter)}.teacher-page--home .dashboard-panel--activity{background:var(--tutto-surface);border:1px solid var(--tutto-border);border-top:2px solid var(--tutto-sage);box-shadow:none}.teacher-page--home .dashboard-activity-card{padding:var(--mobile-card-padding-compact-y) var(--mobile-card-padding-compact-x);border-radius:var(--mobile-card-radius-compact);background:var(--tutto-sage-soft);border:none}.teacher-page--home .dashboard-activity-card--clickable{border:1px solid var(--tutto-sage-border)}.teacher-page--home .dashboard-activity-type-label{font-size:var(--mobile-type-chip-size)}.teacher-page--home .dashboard-activity-time,.teacher-page--home .dashboard-activity-context{font-size:var(--mobile-type-meta-size)}.teacher-page--home .teacher-hw-filter-chip.on,.teacher-page--home .dashboard-hw-filter-chip.active{background:var(--tutto-sage-soft);border-color:var(--tutto-sage-border);color:var(--tutto-sage-text)}.cls-card-subject,.dashboard-activity-type-label,.teacher-sub-card-meta,.flora-list-meta{font-size:max(var(--mobile-type-meta-size), .8125rem)}.app-shell--with-nav .teacher-page .flora-page-header,.app-shell--with-nav .teacher-management-page>.flora-page-header,.app-shell--with-nav .teacher-management-page .teacher-management-content>.flora-page-header,.app-shell--with-nav .teacher-page.timetable-page .timetable-page-header{padding:var(--mobile-page-header-top) var(--mobile-page-gutter) var(--mobile-page-header-bottom)}.app-shell--with-nav .teacher-page .flora-page-header-title,.app-shell--with-nav .teacher-questions-page .flora-page-header-title,.app-shell--with-nav .teacher-page.timetable-page .timetable-page-header .flora-page-header-title{font-size:var(--mobile-type-page-title-size);font-weight:var(--mobile-type-page-title-weight);line-height:var(--mobile-type-page-title-lh);letter-spacing:-.01em}.app-shell--with-nav .teacher-management-page>.teacher-toolbar,.app-shell--with-nav .teacher-management-page .teacher-management-content>.teacher-toolbar,.app-shell--with-nav .teacher-management-page>.flora-list-meta.cnt-bar,.app-shell--with-nav .teacher-management-page .teacher-management-content>.flora-list-meta.cnt-bar{padding-left:var(--mobile-page-gutter);padding-right:var(--mobile-page-gutter)}.app-shell--with-nav .teacher-management-page>.teacher-results-region,.app-shell--with-nav .teacher-management-page .teacher-management-content>.teacher-results-region,.app-shell--with-nav .teacher-management-page .teacher-results-region.cls-page-body{padding:0 var(--mobile-page-gutter) var(--mobile-space-4)}.app-shell--with-nav .teacher-management-page .stu-list,.app-shell--with-nav .teacher-management-page .cls-card-list,.app-shell--with-nav .teacher-management-page .teacher-hw-list,.app-shell--with-nav .teacher-management-page .cnt-bar{padding-left:0;padding-right:0}.app-shell--with-nav .teacher-management-page .teacher-toolbar--homework .teacher-hw-filter-scroll,.app-shell--with-nav .teacher-management-page .teacher-hw-filter-scroll,.app-shell--with-nav .teacher-toolbar--homework .teacher-hw-filter-scroll,.app-shell--with-nav .teacher-hw-filter-scroll,.app-shell--with-nav .submissions-page .teacher-sub-filter-row,.app-shell--with-nav .submissions-page .teacher-sub-kind-filter-row,.app-shell--with-nav .submissions-page .teacher-sub-subject-filters{max-width:100%;margin-left:0;margin-right:0}.app-shell--with-nav .teacher-management-page .teacher-hw-filter-row,.app-shell--with-nav .teacher-hw-filter-row,.app-shell--with-nav .teacher-hw-filter-scroll .teacher-hw-filter-row{padding-left:0;padding-right:0;scroll-padding-left:0}.teacher-hw-filter-group,.teacher-hw-filter-scroll{min-width:0;max-width:100%}.app-shell--with-nav .teacher-management-page .teacher-toolbar--homework .teacher-hw-toolbar{gap:var(--mobile-space-2)}.app-shell--with-nav .teacher-management-page .teacher-toolbar--homework .teacher-hw-sort-wrap{align-self:flex-end;width:auto;max-width:100%;height:auto;margin-left:auto}.app-shell--with-nav .teacher-management-page .teacher-toolbar--homework .teacher-hw-sort-select{width:auto;min-width:132px;max-width:100%;min-height:var(--mobile-secondary-control-height);height:var(--mobile-secondary-control-height);background-position:right 8px center;padding:0 28px 0 10px;font-size:.75rem}.app-shell--with-nav .teacher-questions-page>.flora-page-header,.app-shell--with-nav .teacher-questions-page .qa-page-header,.app-shell--with-nav .teacher-notifications-page .flora-page-header{padding:var(--mobile-page-header-top) var(--mobile-page-gutter) var(--mobile-space-2);margin-bottom:var(--mobile-space-2)}.app-shell--with-nav .teacher-questions-page>.teacher-toolbar,.app-shell--with-nav .teacher-questions-page .qa-filter-row{padding-left:var(--mobile-page-gutter);padding-right:var(--mobile-page-gutter)}.app-shell--with-nav .teacher-notifications-page.teacher-management-page .flora-page-header-row{min-height:0}.teacher-notifications-page .flora-page-header-row{align-items:flex-start;gap:var(--mobile-space-2);min-height:0}.teacher-notifications-page .flora-page-header-action{align-self:flex-start}.teacher-notifications-page .flora-page-header-copy:not(:has(.flora-page-header-summary)){padding-bottom:0}.teacher-notifications-page .flora-page-header{margin-bottom:var(--mobile-space-2)}.teacher-notifications-page .teacher-notifications-body{gap:var(--mobile-space-2);padding-top:0}.teacher-notifications-page .teacher-notifications-surface{gap:var(--mobile-space-2)}.teacher-notifications-page .teacher-notifications-surface,.teacher-notifications-page .student-mgmt-surface{gap:var(--mobile-space-2);padding:0}.teacher-notifications-page .student-mgmt-summary-section{padding:0 0 var(--mobile-space-2);border-bottom:none}.teacher-notifications-page .student-mgmt-summary-bar{gap:var(--mobile-space-3);padding:0}.teacher-notifications-page .student-mgmt-filter-section{padding:0 0 var(--mobile-space-2);border-bottom:none}.teacher-notifications-page .student-mgmt-filter-toolbar{justify-content:space-between;align-items:center;gap:var(--mobile-space-2);margin-bottom:var(--mobile-space-2);display:flex}.teacher-notifications-page .student-mgmt-filter-header{justify-content:space-between;align-items:center;gap:var(--mobile-space-2);width:100%;display:flex}.teacher-notifications-page .student-mgmt-filter-subrow{gap:var(--mobile-space-2);padding:0}.teacher-notifications-page .student-notif-filter-chip{min-height:var(--mobile-chip-height)}.app-shell--with-nav .teacher-page.timetable-page .timetable-calendar-shell{margin-left:var(--mobile-page-gutter);margin-right:var(--mobile-page-gutter);width:auto;max-width:calc(100% - (2 * var(--mobile-page-gutter)));box-sizing:border-box}.timetable-week-nav{padding:10px var(--mobile-page-gutter);grid-template-rows:auto auto;grid-template-columns:44px 1fr 44px auto;align-items:center;gap:8px;min-height:0;display:grid}.timetable-week-nav-label{flex:unset;text-align:center;white-space:nowrap;text-overflow:clip;grid-area:1/1/auto/-1;min-width:0;font-size:.8125rem;font-weight:700;overflow:visible}.timetable-week-nav-arrow:first-child{grid-area:2/1;width:44px;height:36px}.timetable-week-nav-arrow:nth-child(3){grid-area:2/3;width:44px;height:36px}.timetable-week-nav-today{grid-area:2/4;min-height:36px;padding:6px 10px;font-size:.75rem}.app-shell--with-nav .teacher-page.timetable-page .timetable-week-nav-label{text-overflow:clip;overflow:visible}.timetable-day-tabs{padding-left:var(--mobile-page-gutter);padding-right:var(--mobile-page-gutter)}.hwd-page .hwd-meta-val .datetime-display--stacked,.hwd-page .datetime-display--stacked{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.hwd-page .datetime-display--stacked .datetime-date-line{color:var(--tutto-text-primary);font-size:.8125rem;font-weight:700;line-height:1.3}.hwd-page .datetime-display--stacked .datetime-time-line{color:var(--tutto-text-secondary);font-size:.75rem;font-weight:600;line-height:1.3}.hwd-page .hwd-student-row{grid-template-columns:40px minmax(0,1fr) auto;grid-template-areas:"avatar info status";align-items:start;gap:4px 10px;padding:12px 0;display:grid}.hwd-page .assign-stu-av{grid-area:avatar}.hwd-page .hwd-student-info{grid-area:info;min-width:0}.hwd-page .hwd-student-row>.submission-badge{grid-area:status;place-self:start end}.hwd-page .hwd-student-name{word-break:keep-all;font-size:.9375rem;font-weight:800;line-height:1.3}.hwd-page .hwd-student-sub{color:var(--tutto-text-secondary);margin-top:2px;font-size:.75rem}.hwd-page .hwd-student-extra{word-break:keep-all;margin-top:4px;font-size:.75rem;line-height:1.35}.stu-detail-next-session-meta{text-align:left;flex-direction:column;align-items:flex-start;gap:2px;line-height:1.4;display:flex}.stu-detail-next-session-meta-line{color:var(--tutto-text-secondary);font-size:.8125rem}.stu-detail-next-session-meta-cycle{color:var(--tutto-text-primary);font-size:.8125rem;font-weight:700}.stu-detail-next-session-meta-progress{color:var(--tutto-text-secondary);font-size:.75rem}.stu-detail-attention-meta-cycle{color:var(--tutto-text-primary);text-align:left;margin:4px 0 0;font-size:.8125rem;font-weight:700;line-height:1.35}.stu-detail-attention-meta-progress{color:var(--tutto-text-secondary);text-align:left;margin:2px 0 0;font-size:.75rem;line-height:1.35}.app-shell--with-nav .teacher-management-page .teacher-page-stack>.flora-list-meta.cnt-bar,.app-shell--with-nav .teacher-management-page .teacher-management-content>.flora-list-meta.cnt-bar{padding-left:var(--mobile-page-gutter);padding-right:var(--mobile-page-gutter);box-sizing:border-box}.app-shell--with-nav .submissions-page .teacher-results-region .teacher-sub-list{padding-left:0;padding-right:0}.students-page .stu-filter-toolbar--mobile,.students-page .teacher-toolbar--students .teacher-toolbar-row--filters{min-width:0;max-width:100%;padding-left:0;padding-right:0}.students-page .stu-filter-toolbar--mobile .filter-chip-row{margin-left:0;padding-left:0}.app-shell--with-nav .teacher-questions-page .teacher-page-stack>.qa-page-header.flora-page-header{padding:var(--mobile-page-header-top) var(--mobile-page-gutter) var(--mobile-page-header-bottom);box-sizing:border-box;margin-bottom:0}.app-shell--with-nav .teacher-questions-page .teacher-page-stack>.teacher-toolbar,.app-shell--with-nav .teacher-questions-page .teacher-page-stack>.teacher-results-region{padding-left:var(--mobile-page-gutter);padding-right:var(--mobile-page-gutter);box-sizing:border-box}.app-shell--with-nav .teacher-questions-page .teacher-toolbar{padding-top:0;padding-bottom:var(--mobile-space-2)}.app-shell--with-nav .teacher-questions-page .teacher-toolbar .qa-filter-row,.app-shell--with-nav .teacher-questions-page .teacher-results-region .qa-thread-list{margin-left:0;margin-right:0;padding-left:0;padding-right:0}.app-shell--with-nav .teacher-page.timetable-page .timetable-calendar-toolbar,.app-shell--with-nav .student-page.student-timetable-page .timetable-calendar-toolbar{background:0 0;border:none;border-radius:0;width:100%;max-width:100%;margin-left:0;margin-right:0;padding:0}.app-shell--with-nav .teacher-page.timetable-page .timetable-week-nav,.app-shell--with-nav .student-page.student-timetable-page .timetable-week-nav{padding:10px 12px}.app-shell--with-nav .teacher-page.timetable-page .timetable-day-tabs,.app-shell--with-nav .student-page.student-timetable-page .timetable-day-tabs{padding:8px 12px 10px}.app-shell--with-nav .teacher-page.timetable-page .timetable-grid-scroll,.app-shell--with-nav .student-page.student-timetable-page .timetable-grid-scroll{padding-left:0;padding-right:0}.app-shell--with-nav .teacher-page.timetable-page .timetable-grid,.app-shell--with-nav .teacher-page.timetable-page .timetable-grid-body,.app-shell--with-nav .teacher-page.timetable-page .timetable-grid-body--daily,.app-shell--with-nav .student-page.student-timetable-page .timetable-grid,.app-shell--with-nav .student-page.student-timetable-page .timetable-grid-body,.app-shell--with-nav .student-page.student-timetable-page .timetable-grid-body--daily{box-sizing:border-box;width:100%;max-width:100%}.app-shell--with-nav .student-page.student-timetable-page .timetable-calendar-shell{margin-left:var(--mobile-page-gutter);margin-right:var(--mobile-page-gutter);width:auto;max-width:calc(100% - (2 * var(--mobile-page-gutter)));box-sizing:border-box;border-radius:var(--mobile-card-radius-compact)}.app-shell--with-nav .student-page.student-timetable-page .timetable-page-header{padding-left:var(--mobile-page-gutter);padding-right:var(--mobile-page-gutter)}.app-shell--with-nav .student-page.student-timetable-page .timetable-page-header .flora-page-header-title{font-size:var(--mobile-type-page-title-size);font-weight:var(--mobile-type-page-title-weight);line-height:var(--mobile-type-page-title-lh);letter-spacing:-.01em}.app-shell--with-nav .flora-page-header .flora-page-header-desc,.app-shell--with-nav .teacher-questions-page .qa-page-header .flora-page-header-desc,.app-shell--with-nav .submissions-page.teacher-management-page .flora-page-header-desc,.app-shell--with-nav .teacher-notifications-page .flora-page-header-desc,.app-shell--with-nav .student-notifications-page .student-page-hdr .flora-page-header-desc,.app-shell--with-nav .student-timetable-page .timetable-page-header .flora-page-header-desc,.app-shell--with-nav .parent-home-page .flora-page-header-desc,.app-shell--with-nav .parent-notifications-page .flora-page-header-desc,.app-shell--with-nav .parent-classes-page .flora-page-header-desc,.app-shell--with-nav .parent-hw-page .flora-page-header-desc,.app-shell--with-nav .parent-timetable-page .timetable-page-header .flora-page-header-desc{margin-top:var(--mobile-page-header-subtitle-gap);font-size:var(--mobile-page-header-desc-size);font-weight:var(--mobile-page-header-desc-weight);line-height:var(--mobile-page-header-desc-lh);color:var(--mobile-page-header-desc-color);letter-spacing:normal;-webkit-line-clamp:unset;-webkit-box-orient:unset;display:block;overflow:visible}.notification-filter-action-row{justify-content:space-between;align-items:center;gap:var(--mobile-space-2);width:100%;display:flex}.notification-status-filters{flex:auto;align-items:center;min-width:0;display:flex}.notification-status-filters .student-notif-filter-row,.notification-status-filters .filter-chip-row{justify-content:flex-start;align-items:center;gap:var(--mobile-space-2);flex-wrap:nowrap;width:auto;max-width:100%;margin:0;padding:0;display:inline-flex;overflow-x:auto}.notification-mark-all-read{min-height:var(--mobile-touch-target);padding:0 var(--mobile-space-1);color:var(--tutto-primary);font-size:var(--mobile-type-meta-size);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:0;flex-shrink:0;justify-content:center;align-items:center;font-family:inherit;font-weight:600;line-height:1.3;display:inline-flex}.notification-mark-all-read:hover:not(:disabled){color:var(--tutto-primary-hover,var(--tutto-primary))}.notification-mark-all-read:disabled{opacity:.55;cursor:not-allowed}.notification-mark-all-read:focus-visible{outline:2px solid var(--tutto-primary);outline-offset:2px;border-radius:4px}.teacher-notifications-page .student-mgmt-filter-header,.student-notifications-page .student-mgmt-filter-header,.parent-notifications-page .student-mgmt-filter-header{margin-bottom:var(--mobile-space-1);justify-content:flex-start}.teacher-notifications-page .flora-page-header-action .student-refresh-link,.student-notifications-page .student-page-hdr-action .student-refresh-link,.parent-notifications-page .flora-page-header-action .student-refresh-link{min-height:var(--mobile-touch-target);padding:0 var(--mobile-space-1);font-size:var(--mobile-type-meta-size);font-weight:600}.notification-refresh--header,.notification-mark-all--header{display:inline-flex}.notification-refresh--toolbar,.notification-mark-all--toolbar{display:none}.notification-mark-all-read{display:inline-flex}}@media (width>=768px){.notification-refresh--header,.notification-mark-all--header,.notification-mark-all-read{display:none!important}.notification-mark-all--toolbar{display:inline-flex!important}.notification-filter-action-row,.notification-status-filters{width:100%;display:block}.teacher-notif-mobile-controls,.student-notif-mobile-controls{display:none!important}}@media (width<=767px){.teacher-notif-mobile-controls{gap:var(--mobile-space-2);padding:0 var(--mobile-page-gutter) var(--mobile-space-2);margin-top:calc(-1 * var(--mobile-space-1));flex-direction:column;display:flex}.teacher-notifications-page .flora-page-header-action{display:none!important}.teacher-notif-summary-refresh-row{justify-content:space-between;align-items:center;gap:var(--mobile-space-2);min-height:var(--mobile-touch-target);width:100%;display:flex}.teacher-notif-summary-text{min-width:0;font-size:var(--mobile-type-meta-size);font-weight:600;line-height:var(--mobile-type-meta-lh);color:var(--tutto-text-secondary);white-space:nowrap;text-overflow:ellipsis;flex:auto;margin:0;overflow:hidden}.teacher-notif-refresh-inline{min-height:var(--mobile-touch-target);padding:0 var(--mobile-space-1);font-size:var(--mobile-type-meta-size);flex-shrink:0;font-weight:600}.teacher-notif-mark-all-primary{width:100%;min-height:var(--mobile-btn-height);height:var(--mobile-btn-height);padding:0 var(--mobile-space-4);border-radius:var(--mobile-btn-radius);font-size:var(--mobile-type-btn-size);font-weight:var(--mobile-type-btn-weight);box-sizing:border-box;justify-content:center;align-items:center;display:flex}.teacher-notif-mark-all-primary:disabled{opacity:.55;cursor:not-allowed}.teacher-notifications-page .student-mgmt-filter-action,.teacher-notifications-page .student-mgmt-result-meta{display:none!important}.teacher-notifications-page .student-mgmt-filter-section{padding-top:0;padding-bottom:var(--mobile-space-2)}.teacher-notifications-page .student-mgmt-filter-header{margin-bottom:var(--mobile-space-1)}.teacher-notifications-page .teacher-notifications-body{gap:var(--mobile-space-2);padding-top:0}.teacher-notifications-page .flora-page-header{margin-bottom:var(--mobile-space-1);padding-bottom:var(--mobile-space-1)}.student-notif-mobile-controls{gap:var(--mobile-space-2);padding:0 var(--mobile-page-gutter) var(--mobile-space-2);margin-top:calc(-1 * var(--mobile-space-1));flex-direction:column;display:flex}.parent-notifications-page .student-notif-mobile-controls{display:flex}.student-notifications-page .student-page-hdr-action,.student-notifications-page .flora-page-header-action,.parent-notifications-page .flora-page-header-action{display:none!important}.student-notif-summary-refresh-row{justify-content:space-between;align-items:center;gap:var(--mobile-space-2);min-height:var(--mobile-touch-target);width:100%;display:flex}.student-notif-summary-text{min-width:0;font-size:var(--mobile-type-meta-size);font-weight:600;line-height:var(--mobile-type-meta-lh);color:var(--tutto-text-secondary);white-space:nowrap;text-overflow:ellipsis;flex:auto;margin:0;overflow:hidden}.student-notif-refresh-inline{min-height:var(--mobile-touch-target);padding:0 var(--mobile-space-1);font-size:var(--mobile-type-meta-size);flex-shrink:0;font-weight:600}.student-notif-mark-all-primary{width:100%;min-height:var(--mobile-btn-height);height:var(--mobile-btn-height);padding:0 var(--mobile-space-4);border-radius:var(--mobile-btn-radius);font-size:var(--mobile-type-btn-size);font-weight:var(--mobile-type-btn-weight);box-sizing:border-box;justify-content:center;align-items:center;display:flex}.student-notif-mark-all-primary:disabled{opacity:.55;cursor:not-allowed}.student-notifications-page .student-mgmt-filter-action,.parent-notifications-page .student-mgmt-filter-action,.parent-notifications-page .notification-mark-all-read,.student-notifications-page .student-mgmt-result-meta,.parent-notifications-page .student-mgmt-result-meta{display:none!important}.student-notifications-page .student-mgmt-filter-section{padding-top:0;padding-bottom:var(--mobile-space-2)}.student-notifications-page .student-mgmt-filter-header{margin-bottom:var(--mobile-space-1)}}.mobile-app-chrome{display:none}@media (width<=767px){.app-shell--with-nav{--shell-content-padding-bottom:var(--mobile-content-padding-bottom)}.app-shell .auth-user-bar{display:none!important}.mobile-app-chrome{box-sizing:border-box;min-height:calc(env(safe-area-inset-top,0px) + var(--mobile-app-chrome-height));padding-top:env(safe-area-inset-top,0px);padding-right:var(--app-page-gutter);padding-bottom:0;padding-left:var(--app-page-gutter);z-index:45;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--tutto-border);box-shadow:0 1px 0 rgba(var(--tutto-primary-rgb), .04);background:#fffffff7;justify-content:space-between;align-items:center;gap:12px;display:flex;position:sticky;top:0}.mobile-app-chrome-brand{min-width:0;color:inherit;flex:1;align-items:center;text-decoration:none;display:inline-flex}.mobile-app-chrome-brand .tutto-brand--compact{--tutto-brand-compact-height:29px;max-width:min(100%,176px)}.mobile-app-chrome-actions{flex-shrink:0;align-items:center;gap:4px;display:inline-flex}.mobile-app-chrome-icon-btn{border-radius:var(--tutto-radius-md);width:44px;height:44px;color:var(--tutto-text-secondary);cursor:pointer;transition:background var(--flora-transition), color var(--flora-transition);background:0 0;border:none;justify-content:center;align-items:center;padding:0;text-decoration:none;display:inline-flex}.mobile-app-chrome-icon-btn:hover{background:var(--tutto-primary-soft-2);color:var(--tutto-primary)}.mobile-app-chrome-icon-btn:focus-visible{outline:2px solid var(--tutto-primary);outline-offset:2px}.app-notif-bell--mobile-chrome{justify-content:center;align-items:center;display:inline-flex}.app-notif-bell--mobile-chrome .student-notif-btn{border-radius:var(--tutto-radius-md);width:44px;height:44px;color:var(--tutto-text-secondary);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.app-notif-bell--mobile-chrome .student-notif-btn:hover{background:var(--tutto-primary-soft-2);color:var(--tutto-primary)}.app-notif-bell--mobile-chrome .student-notif-btn:focus-visible{outline:2px solid var(--tutto-primary);outline-offset:2px}.app-notif-bell--mobile-chrome .student-notif-count{top:4px;right:4px}.app-shell .app-notif-bell--dashboard{display:none!important}.app-shell.student-shell.app-shell--with-nav .student-page.app-page{padding-bottom:calc(var(--shell-content-padding-bottom) + env(safe-area-inset-bottom,0px))}.app-shell--with-nav .dashboard-hdr--home,.app-shell--with-nav .student-dashboard-hdr{padding-top:4px}.app-shell--with-nav .teacher-page--home .dashboard-hdr--home .dashboard-hdr-datetime-col,.app-shell--with-nav .student-home-page .student-dashboard-hdr-meta{justify-content:flex-start}.bottom-nav{min-height:calc(var(--bottom-nav-height) + env(safe-area-inset-bottom,0px));box-shadow:0 -1px 0 var(--tutto-border), 0 -8px 24px rgba(var(--tutto-primary-rgb), .06);background:#fffffffa;padding-top:2px}.bottom-nav-item{min-height:54px;padding:2px 0}.bottom-nav-inner{gap:3px;max-width:100%;padding:4px}.bottom-nav-icon .app-icon{width:22px;height:22px}.bottom-nav-label{letter-spacing:-.01em;font-size:10px;font-weight:700;line-height:1.1}.bottom-nav-item.active{color:var(--tutto-primary)}.bottom-nav-item.active .bottom-nav-inner{box-shadow:none;background:0 0}.bottom-nav-item.active .bottom-nav-icon-wrap{background:var(--tutto-primary-soft);box-shadow:none}.bottom-nav-item.active .bottom-nav-icon{color:var(--tutto-primary)}.teacher-bottom-nav .bottom-nav-inner{padding:3px 2px}.teacher-bottom-nav .bottom-nav-label{max-width:52px;font-size:9.5px}.teacher-bottom-nav .bottom-nav-icon .app-icon{width:21px;height:21px}.app-shell.student-shell .student-bottom-nav .bottom-nav-label{max-width:56px;font-size:10px}.parent-bottom-nav .bottom-nav-label{font-size:10.5px}}@media (width<=374px){.teacher-bottom-nav .bottom-nav-label{max-width:48px;font-size:9px}.teacher-bottom-nav .bottom-nav-icon .app-icon{width:20px;height:20px}.bottom-nav-inner{padding:3px 2px}}@media (width>=375px) and (width<=767px){.teacher-bottom-nav .bottom-nav-label{max-width:54px;font-size:10px}}@media (width>=390px) and (width<=767px){.teacher-bottom-nav .bottom-nav-inner{padding:4px 3px}.teacher-bottom-nav .bottom-nav-label{font-size:10px}}@media (width>=430px) and (width<=767px){.teacher-bottom-nav .bottom-nav-label{max-width:58px;font-size:10.5px}.bottom-nav-label{font-size:10.5px}}@media (width>=768px){.mobile-app-chrome{display:none!important}}:root{--teacher-sidebar-width:var(--app-sidebar-width,208px);--teacher-content-max:1180px;--teacher-header-measure:1060px;--teacher-toolbar-measure:1060px;--teacher-management-measure:100%;--teacher-dashboard-max:1180px;--teacher-frame-gutter-total:calc(var(--teacher-page-gutter-desktop) * 2);--teacher-main-available:calc(100vw - var(--teacher-sidebar-width) - var(--teacher-frame-gutter-total));--teacher-page-gutter-desktop:36px;--teacher-page-gutter-tablet:24px;--teacher-page-top:30px;--teacher-header-gap:24px;--teacher-header-desc-gap:6px;--teacher-header-meta-gap:7px;--teacher-header-content-gap:24px;--teacher-header-body-gap:24px;--teacher-header-summary-reserve:calc(var(--teacher-header-meta-gap) + 1.25rem);--teacher-section-gap:24px;--teacher-toolbar-gap:10px;--teacher-control-gap:10px;--teacher-control-height:42px;--teacher-search-field-padding-inline:14px;--teacher-search-icon-text-gap:12px;--teacher-chip-height:36px;--teacher-radius-control:10px;--teacher-radius-panel:16px;--teacher-grid-gap:24px}@media (width>=1280px){:root{--teacher-page-gutter-desktop:40px}}@media (width>=1600px){:root{--teacher-content-max:min(1680px, max(1180px, var(--teacher-main-available)));--teacher-dashboard-max:min(1400px, var(--teacher-content-max))}}@media (width>=2560px){:root{--teacher-content-max:min(1760px, max(1180px, var(--teacher-main-available)));--teacher-dashboard-max:min(1480px, var(--teacher-content-max))}}.teacher-page.app-page{--app-page-active-max:var(--teacher-content-max);--shell-content-width:var(--teacher-content-max);width:100%}.teacher-page--home.app-page{--app-page-active-max:var(--teacher-dashboard-max);--shell-content-width:var(--teacher-dashboard-max)}@media (width>=768px){.app-shell--with-sidebar .app-shell-main{padding-top:var(--teacher-page-top);padding-inline:var(--teacher-page-gutter-tablet);box-sizing:border-box}}@media (width>=1024px){.app-shell--with-sidebar .app-shell-main{padding-inline:var(--teacher-page-gutter-desktop)}}.teacher-surface,.teacher-surface--frame-standard{width:100%;max-width:var(--teacher-content-max);box-sizing:border-box;margin-inline:auto}.teacher-surface--frame-dashboard,.teacher-page--home .teacher-surface{max-width:var(--teacher-dashboard-max)}.teacher-surface--frame-wide,.teacher-surface--frame-wide-calendar,.teacher-page.timetable-page .teacher-surface{max-width:var(--teacher-content-max)}.teacher-page.app-page .app-page-inner{width:100%;max-width:var(--app-page-active-max);box-sizing:border-box;margin-inline:auto;padding-left:0;padding-right:0}.teacher-page-stack{flex-direction:column;gap:0;display:flex}.teacher-page-stack>.teacher-toolbar,.teacher-page-stack>.teacher-toolbar-row{margin-bottom:var(--teacher-section-gap)}.teacher-page-stack>.flora-list-meta.cnt-bar{margin-top:0;margin-bottom:var(--teacher-section-gap)}.teacher-page-header,.teacher-page .flora-page-header,.dashboard-hdr--home{background:0 0;margin:0;padding:0}.teacher-page-header-row,.teacher-page:not(.teacher-management-page) .flora-page-header-row{max-width:var(--teacher-header-measure);grid-template-columns:minmax(0,1fr) auto;align-items:start;column-gap:24px;width:100%;min-height:72px;display:grid}.teacher-page .flora-page-header-row:not(:has(.flora-page-header-action)){grid-template-columns:minmax(0,1fr)}.teacher-page-header-title,.teacher-page .flora-page-header-title,.dashboard-hdr--home .dashboard-greeting{letter-spacing:-.02em;color:var(--tutto-text-primary);margin:0;font-size:clamp(1.375rem,2vw,1.75rem);font-weight:800;line-height:1.25}.teacher-page--home .dashboard-hdr--home .dashboard-greeting-name{color:var(--tutto-primary)}.teacher-page-header-desc,.teacher-page .flora-page-header-desc,.dashboard-hdr--home .dashboard-hdr-summary{margin-top:var(--teacher-header-desc-gap);color:var(--tutto-text-secondary);font-size:.875rem;font-weight:500;line-height:1.45}.teacher-page-header-meta,.dashboard-hdr--home .dashboard-hdr-meta{text-align:right;flex-shrink:0;padding-top:0}.teacher-page .teacher-hw-section,.teacher-page .qa-page-header.flora-page-header,.teacher-page .timetable-page-header.flora-page-header{padding-top:0;padding-bottom:0}@media (width>=768px){.teacher-page .teacher-hw-filter-scroll,.teacher-page .teacher-sub-filter-scroll{margin-inline:0;overflow:visible}.teacher-page .teacher-hw-filter-scroll:after,.teacher-page .teacher-sub-filter-scroll:after{display:none}.teacher-page .teacher-hw-filter-row,.teacher-page .teacher-sub-filter-row{flex-wrap:wrap;padding-inline:0;overflow:visible}}.teacher-page .flora-page-header,.teacher-page .teacher-page-header,.teacher-page .dashboard-hdr--home,.teacher-management-page>.flora-page-header,.teacher-management-page>.teacher-management-content>.flora-page-header,.teacher-page .teacher-hw-section>.flora-page-header{margin:0 0 var(--teacher-header-body-gap);padding:0}.teacher-page:not(.teacher-management-page) .flora-page-header-copy:not(:has(.flora-page-header-summary)){padding-bottom:var(--teacher-header-summary-reserve)}.teacher-page .teacher-hw-section>.flora-page-header .flora-page-header-copy:not(:has(.flora-page-header-summary)){padding-bottom:var(--teacher-header-summary-reserve)}.teacher-page .flora-page-header-action{align-self:start;padding-top:0}.teacher-page .flora-page-header-summary{margin-top:var(--teacher-header-meta-gap);color:var(--tutto-primary);margin-bottom:0;font-size:.8125rem;font-weight:600}.teacher-page .flora-page-header-action .flora-btn--primary,.teacher-page .flora-btn--primary.teacher-header-cta{min-height:var(--teacher-control-height);height:var(--teacher-control-height);border-radius:var(--teacher-radius-control);white-space:nowrap;padding:0 16px;font-size:.875rem;font-weight:700}.teacher-header-measure,.teacher-page:not(.teacher-management-page) .flora-page-header-row,.teacher-page:not(.teacher-management-page) .teacher-page-header-row,.teacher-page:not(.teacher-management-page) .teacher-toolbar,.teacher-page:not(.teacher-management-page) .teacher-toolbar-row,.teacher-page:not(.teacher-management-page) .teacher-hw-section>.teacher-toolbar,.teacher-page:not(.teacher-management-page) .teacher-hw-filters,.teacher-page:not(.teacher-management-page) .teacher-hw-filter-scroll,.teacher-page:not(.teacher-management-page) .flora-list-meta.cnt-bar{max-width:var(--teacher-toolbar-measure);box-sizing:border-box;width:100%}.teacher-page--home:not(.teacher-management-page) .dashboard-hdr--home .dashboard-hdr-inner.teacher-page-header-row{max-width:var(--teacher-dashboard-max);width:100%}.teacher-management-page .flora-page-header,.teacher-management-page>.teacher-management-content>.flora-page-header,.teacher-management-page .teacher-toolbar,.teacher-management-page .flora-list-meta.cnt-bar{width:var(--teacher-management-measure);box-sizing:border-box;max-width:none}.teacher-management-page .flora-page-header-row{width:var(--teacher-management-measure);grid-template-columns:minmax(0,1fr) auto;align-items:start;column-gap:24px;max-width:none;min-height:72px;display:grid}.teacher-management-page .flora-page-header-copy:not(:has(.flora-page-header-summary)){padding-bottom:var(--teacher-header-summary-reserve)}.teacher-management-page .teacher-page-stack>.teacher-toolbar,.teacher-management-page .teacher-page-stack>.teacher-management-content>.teacher-toolbar{margin-bottom:var(--teacher-section-gap)}.teacher-management-page .teacher-page-stack>.flora-list-meta.cnt-bar,.teacher-management-page .teacher-page-stack>.teacher-management-content>.flora-list-meta.cnt-bar{margin:0 0 var(--teacher-section-gap)}.teacher-management-page .flora-search-wrap,.teacher-management-page .search-wrap{min-width:0;max-width:none}@media (width>=768px){.teacher-management-page .teacher-toolbar--students .teacher-toolbar-row--primary{gap:var(--teacher-control-gap);grid-template-columns:minmax(280px,1fr) minmax(110px,120px) minmax(110px,120px) minmax(110px,120px) auto;align-items:center;width:100%;max-width:none;display:grid}.teacher-management-page .teacher-toolbar--students .search-wrap,.teacher-management-page .teacher-toolbar--students .flora-search-wrap{flex:none;grid-column:1;min-width:0;max-width:none}.teacher-management-page .teacher-toolbar--students .stu-filter-toolbar--desktop{display:contents}.teacher-management-page .teacher-toolbar--students .stu-filter-toolbar--desktop .stu-filter-select:first-child{grid-column:2}.teacher-management-page .teacher-toolbar--students .stu-filter-toolbar--desktop .stu-filter-select:nth-child(2){grid-column:3}.teacher-management-page .teacher-toolbar--students .stu-filter-toolbar--desktop .stu-filter-select:nth-child(3){grid-column:4}.teacher-management-page .teacher-toolbar--students .stu-view-toggle-wrap{grid-column:5;justify-self:end;margin-left:0}.teacher-management-page .teacher-toolbar--homework{width:100%;max-width:none}.teacher-management-page .teacher-toolbar--homework .teacher-hw-toolbar{gap:var(--teacher-control-gap);grid-template-columns:minmax(280px,1fr) minmax(150px,170px);align-items:center;width:100%;max-width:none;display:grid}.teacher-management-page .teacher-toolbar--homework .flora-search-wrap{min-width:0;max-width:none}.teacher-management-page .teacher-toolbar--homework .teacher-hw-filter-group{width:100%}.teacher-management-page .teacher-toolbar--homework .teacher-hw-filter-row{flex-wrap:wrap;width:100%}}@media (width>=768px) and (width<=1023px){.teacher-management-page .teacher-toolbar--students .teacher-toolbar-row--primary{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr);grid-template-areas:"search search search""grade subject weekday""archive archive archive"}.teacher-management-page .teacher-toolbar--students .search-wrap,.teacher-management-page .teacher-toolbar--students .flora-search-wrap{grid-area:search}.teacher-management-page .teacher-toolbar--students .stu-filter-toolbar--desktop .stu-filter-select:first-child{grid-area:grade}.teacher-management-page .teacher-toolbar--students .stu-filter-toolbar--desktop .stu-filter-select:nth-child(2){grid-area:subject}.teacher-management-page .teacher-toolbar--students .stu-filter-toolbar--desktop .stu-filter-select:nth-child(3){grid-area:weekday}.teacher-management-page .teacher-toolbar--students .stu-view-toggle-wrap{grid-area:archive;justify-self:stretch}.teacher-management-page .teacher-toolbar--homework .teacher-hw-toolbar{grid-template-columns:minmax(0,1fr);grid-template-areas:"search""sort"}.teacher-management-page .teacher-toolbar--homework .flora-search-wrap{grid-area:search}.teacher-management-page .teacher-toolbar--homework .teacher-hw-sort-wrap{grid-area:sort;width:100%;max-width:none}}@media (width>=1024px){.teacher-management-page .teacher-toolbar--homework .teacher-hw-filter-row{justify-content:flex-start}}.teacher-management-page .teacher-toolbar .flora-search-wrap,.teacher-management-page .teacher-sub-toolbar .flora-search-wrap{align-self:center;min-width:0;margin:0}.teacher-management-page .teacher-sub-toolbar .flora-search-wrap,.teacher-management-page .teacher-sub-toolbar .flora-search-field{width:100%}.teacher-management-page .teacher-toolbar .flora-search-field,.teacher-management-page .teacher-sub-toolbar .flora-search-field{min-height:var(--teacher-control-height);height:var(--teacher-control-height);border-width:1px;border-color:var(--tutto-border);border-radius:var(--teacher-radius-control);box-sizing:border-box;padding:0 var(--teacher-search-field-padding-inline);gap:var(--teacher-search-icon-text-gap);background:var(--tutto-surface);margin:0}.teacher-management-page .teacher-toolbar .flora-search-field:focus-within,.teacher-management-page .teacher-sub-toolbar .flora-search-field:focus-within{border-color:var(--tutto-primary);box-shadow:var(--tutto-focus-ring)}.teacher-management-page .teacher-toolbar .flora-search-icon,.teacher-management-page .teacher-sub-toolbar .flora-search-icon{color:var(--flora-text-muted,var(--tutto-text-tertiary));flex-shrink:0;margin:0}.teacher-management-page .teacher-toolbar .flora-search-input,.teacher-management-page .teacher-sub-toolbar .flora-search-input{appearance:none;min-width:0;margin:0;padding:0;font-size:.8125rem;font-weight:500;line-height:1.2}.teacher-management-page .teacher-toolbar .flora-search-input::-webkit-search-decoration{-webkit-appearance:none;display:none}.teacher-management-page .teacher-toolbar .flora-search-input::-webkit-search-cancel-button{-webkit-appearance:none;display:none}.teacher-management-page .teacher-sub-toolbar .flora-search-input::-webkit-search-decoration{-webkit-appearance:none;display:none}.teacher-management-page .teacher-sub-toolbar .flora-search-input::-webkit-search-cancel-button{-webkit-appearance:none;display:none}.teacher-management-page .teacher-toolbar .teacher-hw-sort-wrap{height:var(--teacher-control-height);align-self:center;align-items:center;gap:0;margin:0;display:flex}.teacher-management-page .teacher-toolbar .teacher-hw-sort-select,.teacher-management-page .teacher-toolbar .stu-filter-select,.teacher-management-page .teacher-toolbar .stu-view-toggle{height:var(--teacher-control-height);min-height:var(--teacher-control-height);box-sizing:border-box;appearance:none;margin:0;line-height:1.2}.teacher-management-page .teacher-toolbar--homework .teacher-hw-toolbar,.teacher-management-page .teacher-toolbar--students .teacher-toolbar-row--primary{align-items:center}@media (width<=767px){.teacher-management-page .teacher-toolbar .flora-search-wrap{margin-bottom:0}.teacher-management-page .teacher-toolbar--homework,.teacher-management-page .teacher-toolbar--students,.teacher-management-page .teacher-toolbar-row--primary{width:100%;min-width:0;max-width:100%}.teacher-management-page .teacher-hw-filter-scroll{max-width:100%;margin-inline:0;overflow-x:auto}.teacher-management-page .teacher-hw-filter-row{flex-wrap:nowrap;max-width:100%;overflow-x:auto}.teacher-management-page .flora-page-header-row{grid-template-columns:minmax(0,1fr);gap:12px}.teacher-management-page .flora-page-header-action{justify-self:start}}.teacher-management-page .teacher-results-region,.teacher-management-page>.teacher-results-region,.teacher-management-page>.teacher-management-content>.teacher-results-region,.teacher-notifications-page.teacher-management-page>.teacher-notifications-body,.teacher-page .teacher-results-region,.teacher-page .teacher-hw-section>.teacher-results-region,.teacher-page .teacher-hw-list,.teacher-page .stu-list,.teacher-page .teacher-sub-list,.teacher-page .cls-card-list,.teacher-page .qa-thread-list{box-sizing:border-box;width:100%;max-width:none}.teacher-notifications-page .teacher-notifications-body{padding-left:0;padding-right:0}.teacher-notifications-page .student-notif-groups{width:100%}.teacher-toolbar,.teacher-toolbar-row{gap:var(--teacher-control-gap);flex-direction:column;display:flex}@media (width>=768px){.teacher-toolbar--split,.teacher-toolbar-row{align-items:center;gap:var(--teacher-control-gap);flex-flow:wrap}.teacher-page:not(.teacher-management-page) .teacher-toolbar .search-wrap,.teacher-page:not(.teacher-management-page) .teacher-toolbar-row .search-wrap,.teacher-page:not(.teacher-management-page) .teacher-toolbar .flora-search-wrap{flex:480px;min-width:280px;max-width:640px}}@media (width>=1600px){.teacher-page:not(.teacher-management-page) .teacher-toolbar .search-wrap,.teacher-page:not(.teacher-management-page) .teacher-toolbar-row .search-wrap,.teacher-page:not(.teacher-management-page) .teacher-toolbar .flora-search-wrap{max-width:min(720px,100%)}}.teacher-toolbar-filters{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.teacher-toolbar-utilities{align-items:center;gap:8px;margin-left:auto;display:flex}.teacher-results-region{width:100%;min-height:200px}.teacher-page .flora-list-meta,.teacher-page .cnt-bar{color:var(--tutto-text-secondary);margin:0;padding:0;font-size:.8125rem;font-weight:700}.teacher-collection-empty,.teacher-results-region .teacher-hw-empty,.teacher-results-region .teacher-sub-empty,.teacher-results-region .stu-empty,.teacher-results-region .cls-state--empty{text-align:center;width:100%;min-height:200px;box-shadow:none;box-sizing:border-box;background:0 0;border:none;border-radius:0;flex-direction:column;justify-content:flex-start;align-items:center;padding:24px 16px 16px;display:flex}.teacher-collection-empty-icon,.teacher-results-region .teacher-hw-empty-icon,.teacher-results-region .teacher-sub-empty-icon,.teacher-results-region .stu-empty-ic{background:var(--tutto-primary-soft-2);width:44px;height:44px;color:var(--tutto-primary);border-radius:12px;justify-content:center;align-items:center;margin-bottom:12px;display:inline-flex}.teacher-results-region .stu-empty{color:var(--tutto-text-primary);font-size:.875rem;font-weight:700;line-height:1.5}.teacher-results-region .stu-empty small{color:var(--tutto-text-secondary);margin-top:6px;font-size:.8125rem;font-weight:500;display:block}.teacher-collection-empty-title,.teacher-results-region .teacher-hw-empty-title,.teacher-results-region .teacher-sub-empty-title{max-width:300px;color:var(--tutto-text-primary);margin:0;font-size:.875rem;font-weight:700}.teacher-collection-empty-desc,.teacher-results-region .teacher-hw-empty-desc,.teacher-results-region .teacher-sub-empty-desc{max-width:300px;color:var(--tutto-text-secondary);margin:6px 0 0;font-size:.8125rem;font-weight:500;line-height:1.5}.teacher-collection-empty-action{margin-top:16px}.teacher-search-field,.teacher-page .search-box,.teacher-page .search-box input,.teacher-page .flora-search-wrap input,.teacher-page .teacher-sub-search,.teacher-page .stu-filter-select{min-height:var(--teacher-control-height);height:var(--teacher-control-height);border-radius:var(--teacher-radius-control);border:1px solid var(--tutto-border);box-sizing:border-box;font-size:.8125rem;font-weight:500}.teacher-page .search-box input:focus,.teacher-page .flora-search-wrap input:focus,.teacher-page .teacher-sub-search:focus,.teacher-page .stu-filter-select:focus{border-color:var(--tutto-primary);box-shadow:var(--tutto-focus-ring);outline:none}.teacher-page .flora-chip,.teacher-page .filter-chip,.teacher-page .teacher-hw-filter-chip,.teacher-page .teacher-sub-filter-chip,.teacher-page .cls-filter-btn{min-height:var(--teacher-chip-height);padding-inline:14px}.teacher-dashboard-grid{gap:var(--teacher-grid-gap);grid-template-columns:1fr;display:grid}.teacher-dashboard-span-12,.teacher-dashboard-span-8,.teacher-dashboard-span-4,.teacher-dashboard-span-3{min-width:0}@media (width>=768px){.teacher-dashboard-metrics{display:block}}@media (width>=1024px){.teacher-dashboard-grid{grid-template-columns:repeat(12,minmax(0,1fr));align-items:start}.teacher-dashboard-span-12{grid-column:span 12}.teacher-dashboard-span-8{grid-column:span 8}.teacher-dashboard-span-4{grid-column:span 4}.teacher-dashboard-span-3{grid-column:span 3}}.teacher-panel,.dashboard-panel{background:var(--tutto-surface);border:1px solid var(--tutto-border);border-radius:var(--teacher-radius-panel);box-sizing:border-box;min-height:0;padding:20px}.teacher-page--home .dashboard-panel{min-height:180px}.teacher-page--home .dashboard-panel .teacher-collection-empty{min-height:0;padding:20px 12px 8px}.teacher-collection-empty-icon .app-icon{color:var(--tutto-primary);opacity:1}.dashboard-panel--tasks .teacher-collection-empty-icon{will-change:auto;animation:none;transform:none}.teacher-panel-header{margin-bottom:14px}.teacher-panel-header--embedded{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px;display:flex}.teacher-panel-header-copy{min-width:0}.dashboard-panel--tasks{border-top:3px solid #2165c159}.dashboard-panel--classes{border-top:3px solid #d6e7a7}.dashboard-panel--activity{border-top:3px solid #a6c69b}.dashboard-panel--homework{border-top:3px solid #2165c133}.teacher-panel-title,.dashboard-section-title{color:var(--tutto-text-primary);margin:0;font-size:1.0625rem;font-weight:750;line-height:1.35}.teacher-panel-subtitle{color:var(--tutto-text-secondary);margin:4px 0 0;font-size:.8125rem;font-weight:500}.dashboard-hdr--home .dashboard-hdr-meta,.dashboard-hdr--home .dashboard-hdr-datetime-col{flex-shrink:0;padding-top:0}.teacher-page--home .dashboard-hdr--home .dashboard-hdr-datetime-col{place-self:start end}.teacher-page--home .dashboard-hdr--home .dashboard-hdr-datetime-col .dashboard-datetime{flex-direction:column;align-items:flex-end;gap:3px;display:flex}.teacher-page--home .dashboard-hdr--home .dashboard-hdr-datetime-col .dashboard-hdr-date{color:var(--tutto-text-secondary);font-size:.8125rem;font-weight:600;line-height:1.35}.teacher-page--home .dashboard-hdr--home .dashboard-hdr-datetime-col .dashboard-hdr-clock,.teacher-page--home .dashboard-hdr--home .dashboard-hdr-datetime-col .dashboard-clock-time{letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--tutto-primary);font-size:1.375rem;font-weight:800;line-height:1.1}.teacher-page--home .dashboard-hdr--home .dashboard-hdr-datetime-col .dashboard-datetime-cluster{flex-direction:column;align-items:flex-end;gap:10px;display:flex}@media (width>=768px){.dashboard-hdr--home .dashboard-hdr-inner{max-width:var(--teacher-dashboard-max);grid-template-columns:minmax(0,1fr) auto;align-items:start;column-gap:24px;width:100%;min-height:72px;display:grid}.dashboard-hdr--home .dashboard-hdr-greeting,.dashboard-hdr--home .dashboard-greeting,.dashboard-hdr--home .teacher-page-header-title{margin:0}.dashboard-hdr--home .dashboard-hdr-datetime-col{justify-content:flex-end;place-self:start end;align-items:flex-start;padding-top:0;display:flex}.dashboard-hdr--home .dashboard-datetime-cluster{flex-direction:column;align-items:flex-end;gap:10px;display:flex}.app-notif-bell--dashboard{justify-content:flex-end;display:flex}.app-notif-bell--dashboard .student-notif-btn{border:1px solid var(--tutto-border);background:var(--tutto-surface);border-radius:10px;justify-content:center;align-items:center;width:36px;height:36px;transition:background .15s,border-color .15s;display:inline-flex}.app-notif-bell--dashboard .student-notif-btn:hover{background:var(--tutto-primary-soft);border-color:var(--tutto-primary-border)}.app-notif-bell--dashboard .student-notif-btn:focus-visible{outline:2px solid var(--tutto-primary);outline-offset:2px}}@media (width<=767px){.teacher-page-header-row,.teacher-page .flora-page-header-row,.dashboard-hdr--home .dashboard-hdr-inner{flex-direction:column;gap:8px;max-width:none;min-height:0;display:flex}.teacher-page-header-meta,.dashboard-hdr--home .dashboard-hdr-meta,.dashboard-hdr--home .dashboard-hdr-datetime-col{text-align:left;align-self:flex-start;padding-top:0}.teacher-page--home .dashboard-hdr--home .dashboard-hdr-datetime-col .dashboard-datetime,.teacher-page--home .dashboard-hdr--home .dashboard-hdr-datetime-col .dashboard-datetime-cluster{align-items:flex-start}}.stu-filter-toolbar--desktop{display:none}.stu-filter-toolbar--mobile{flex-direction:column;gap:8px;display:flex}.teacher-toolbar--students{gap:var(--teacher-toolbar-gap)}.teacher-toolbar--students .teacher-toolbar-row--primary{gap:var(--teacher-control-gap);flex-direction:column;display:flex}@media (width>=768px){.stu-filter-toolbar--desktop{flex-flow:row;flex:0 auto;align-items:center;gap:8px;min-width:0;display:flex}.stu-filter-toolbar--mobile{display:none}.teacher-toolbar--students .teacher-toolbar-row--primary{flex-flow:row;align-items:center;gap:10px}.teacher-toolbar--students .search-wrap{flex:360px;min-width:280px;max-width:none}.teacher-toolbar--students .stu-filter-select{flex:0 116px;width:auto;min-width:110px;max-width:120px}.teacher-toolbar--students .stu-view-toggle-wrap{flex:none;margin-left:0}.stu-filter-select{min-height:var(--teacher-control-height);border:1px solid var(--tutto-border);border-radius:var(--teacher-radius-control);background:var(--tutto-surface);color:var(--tutto-text-primary);cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%235E6A7C' d='M3 4.5 6 7.5 9 4.5'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;padding:0 32px 0 12px;font-family:inherit;font-size:.8125rem;font-weight:600}.stu-filter-select:focus-visible{border-color:var(--tutto-primary);box-shadow:var(--tutto-focus-ring);outline:none}}@media (width>=768px) and (width<=1023px){.teacher-toolbar--students .teacher-toolbar-row--primary{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr);grid-template-areas:"search search search""grade subject weekday""archive archive archive";align-items:center;gap:10px;display:grid}.teacher-toolbar--students .search-wrap{grid-area:search;min-width:0;max-width:none}.teacher-toolbar--students .stu-filter-toolbar--desktop{display:contents}.teacher-toolbar--students .stu-filter-toolbar--desktop .stu-filter-select:first-child{grid-area:grade;width:100%;min-width:0}.teacher-toolbar--students .stu-filter-toolbar--desktop .stu-filter-select:nth-child(2){grid-area:subject;width:100%;min-width:0}.teacher-toolbar--students .stu-filter-toolbar--desktop .stu-filter-select:nth-child(3){grid-area:weekday;width:100%;min-width:0}.teacher-toolbar--students .stu-view-toggle-wrap{grid-area:archive;justify-self:start;margin-left:0;padding:0}.teacher-toolbar--students .stu-filter-toolbar--desktop .filter-reset-btn{display:none}}.teacher-page .stu-view-toggle-wrap{padding:0}.teacher-page .stu-view-toggle{white-space:nowrap;width:auto;min-height:var(--teacher-control-height);height:var(--teacher-control-height);border-radius:var(--teacher-radius-control);border:1px solid var(--tutto-border);background:var(--tutto-surface);color:var(--tutto-text-primary);padding:0 14px;font-size:.8125rem;font-weight:600}.teacher-page .stu-view-toggle--active{border-color:var(--tutto-primary);background:var(--tutto-primary-soft-2);color:var(--tutto-primary)}.teacher-page .teacher-sub-toolbar{background:0 0;border:none;width:100%;padding:0}.teacher-sub-empty-wrap{width:100%;list-style:none}.teacher-page.timetable-page .timetable-page-header{padding-left:0;padding-right:0}.teacher-page.timetable-page .timetable-calendar-shell,.teacher-page.timetable-page .timetable-legend-row{margin-left:0;margin-right:0}.teacher-page.timetable-page .timetable-calendar-toolbar{box-sizing:border-box;grid-template-rows:auto auto;grid-template-columns:minmax(0,1fr);gap:10px;width:100%;max-width:none;padding:14px 20px 12px;display:grid}.teacher-page.timetable-page .timetable-week-nav{grid-row:1;justify-self:center;gap:8px;width:max-content;max-width:calc(100% - 40px);min-height:48px;padding:0}.teacher-page.timetable-page .timetable-week-nav-label{font-size:.9375rem;font-weight:700}.teacher-page.timetable-page .timetable-week-nav-arrow{width:36px;height:36px;font-size:1.125rem}.teacher-page.timetable-page .timetable-week-nav-today{border-radius:8px;padding:6px 12px;font-size:.8125rem}.teacher-page.timetable-page .timetable-legend-inline{grid-row:2;place-self:end;max-width:100%;margin:0}.teacher-page.timetable-page .timetable-legend{gap:8px}.teacher-page.timetable-page .timetable-legend-item{gap:5px;height:22px;padding:0 8px;font-size:.6875rem}.teacher-page.timetable-page .timetable-legend-multi-swatch-dot{width:8px;height:8px}@media (width<=1023px){.teacher-page.timetable-page .timetable-calendar-toolbar{padding-inline:16px}.teacher-page.timetable-page .timetable-week-nav{max-width:100%}.teacher-page.timetable-page .timetable-legend-inline{justify-self:stretch}.teacher-page.timetable-page .timetable-legend{justify-content:flex-end}}@media (width<=767px){.teacher-page.timetable-page .timetable-week-nav{box-sizing:border-box;grid-template-rows:auto;grid-template-columns:44px minmax(0,1fr) 44px auto;align-items:center;gap:4px;width:100%;min-width:0;max-width:100%;padding:10px 12px;display:grid}.teacher-page.timetable-page .timetable-week-nav-label{flex:unset;text-overflow:clip;white-space:nowrap;text-align:center;grid-area:1/2;width:auto;min-width:0;font-size:.8125rem;font-weight:700;overflow:visible}.teacher-page.timetable-page .timetable-week-nav-arrow:first-child{grid-area:1/1;width:44px;min-width:44px;height:44px;min-height:44px;font-size:1.125rem}.teacher-page.timetable-page .timetable-week-nav-arrow:nth-child(3){grid-area:1/3;width:44px;min-width:44px;height:44px;min-height:44px;font-size:1.125rem}.teacher-page.timetable-page .timetable-week-nav-today{border-radius:8px;grid-area:1/4;justify-content:center;align-items:center;min-width:44px;min-height:44px;padding:0 10px;font-size:.75rem;display:inline-flex}}@media (width<=390px){.teacher-page.timetable-page .timetable-week-nav-label{font-size:.75rem}}@media (width<=360px){.teacher-page.timetable-page .timetable-week-nav{gap:3px;padding-inline:8px}.teacher-page.timetable-page .timetable-week-nav-label{font-size:.6875rem}.teacher-page.timetable-page .timetable-week-nav-today{padding:0 8px;font-size:.6875rem}}@media (width<=344px){.teacher-page.timetable-page .timetable-week-nav-label{font-size:.625rem}}@media (width<=320px){.teacher-page.timetable-page .timetable-week-nav{gap:2px;padding-inline:6px}.teacher-page.timetable-page .timetable-week-nav-label{font-size:.625rem}.teacher-page.timetable-page .timetable-week-nav-today{padding:0 6px}}.teacher-questions-page .student-empty-state{box-shadow:none;background:0 0;border:none}@media (width>=768px){.app-shell--with-sidebar .fab{display:none!important}.app-shell--with-sidebar{--shell-content-padding-bottom:32px;--page-floating-action-clearance:32px;--flora-page-padding-bottom:32px}.teacher-surface--header-cta .teacher-empty-cta,.teacher-surface--header-cta .cls-state--empty .cls-btn--primary,.teacher-surface--header-cta .teacher-hw-empty-cta{display:none}}.teacher-page--home .dashboard-metrics-section,.teacher-page--home .dashboard-panel--activity .dashboard-activity-section{background:0 0;border:none;padding:0}.teacher-hw-section--embedded{min-height:0;box-shadow:none;background:0 0;border:none;padding:0}.teacher-hw-section--embedded .teacher-hw-filter-group.teacher-hw-filters--embedded{margin-bottom:16px}.teacher-page .teacher-hw-section>.flora-page-header{margin-bottom:var(--teacher-header-body-gap)}.teacher-toolbar--homework{flex-direction:column;gap:12px;margin-bottom:0;display:flex}.teacher-toolbar--homework .teacher-hw-toolbar{gap:var(--teacher-control-gap);flex-direction:column;width:100%;max-width:none;margin:0;display:flex}.teacher-toolbar--homework .teacher-hw-filter-group{flex-direction:column;gap:8px;width:100%;display:flex}.teacher-toolbar-group-label{color:var(--tutto-text-secondary);margin:0;font-size:.8125rem;font-weight:600;line-height:1.35}.teacher-toolbar--homework .teacher-hw-filter-scroll{margin:0;overflow:visible}.teacher-toolbar--homework .teacher-hw-filter-scroll:after{display:none}.teacher-toolbar--homework .teacher-hw-filter-row{padding:0}.teacher-page .teacher-hw-section>.flora-list-meta.cnt-bar{margin-top:var(--teacher-section-gap);margin-bottom:var(--teacher-section-gap)}@media (width>=768px){.teacher-toolbar--homework .teacher-hw-toolbar{flex-flow:row;align-items:center;gap:10px}.teacher-toolbar--homework .flora-search-wrap{flex:auto;min-width:280px;max-width:none}.teacher-toolbar--homework .teacher-hw-sort-wrap{flex:0 0 160px;min-width:150px;max-width:170px}}@media (width>=768px) and (width<=1023px){.teacher-toolbar--homework .teacher-hw-toolbar{grid-template-columns:minmax(0,1fr);grid-template-areas:"search""sort";gap:10px;display:grid}.teacher-toolbar--homework .flora-search-wrap{grid-area:search;min-width:0}.teacher-toolbar--homework .teacher-hw-sort-wrap{flex:none;grid-area:sort;width:100%;max-width:none}}.dashboard-panel--homework{flex-direction:column;gap:16px;display:flex}.dashboard-panel--activity{padding-bottom:16px}.dashboard-panel--activity .dashboard-empty--activity{min-height:0;padding-top:16px}@media (width>=768px){.teacher-hw-filters--embedded .teacher-hw-filter-scroll{margin:0;overflow:visible}.teacher-hw-filters--embedded .teacher-hw-filter-row{flex-wrap:wrap;padding-right:0;overflow:visible}.teacher-hw-filters--embedded .teacher-hw-filter-scroll:after{display:none}}.dashboard-section-title--inline{margin:0 0 16px}.dashboard-classes-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.dashboard-classes-item{border:1px solid var(--tutto-border);background:var(--tutto-surface);text-align:left;width:100%;font:inherit;color:inherit;cursor:pointer;transition:border-color var(--flora-transition), box-shadow var(--flora-transition);border-radius:12px;grid-template-columns:auto 1fr auto;grid-template-areas:"time title arrow""time meta arrow";gap:2px 10px;padding:12px 14px;display:grid}.dashboard-classes-item:hover{border-color:var(--tutto-primary-border);box-shadow:var(--tutto-shadow-1)}.dashboard-classes-time{color:var(--tutto-primary);white-space:nowrap;grid-area:time;font-size:.75rem;font-weight:700}.dashboard-classes-title{color:var(--tutto-text-primary);grid-area:title;font-size:.875rem;font-weight:700}.dashboard-classes-meta{color:var(--tutto-text-secondary);grid-area:meta;font-size:.75rem;font-weight:500}.dashboard-classes-arrow{color:var(--tutto-text-tertiary);grid-area:arrow;align-self:center}.dashboard-hdr-date{color:var(--tutto-text-tertiary);white-space:nowrap;font-size:.8125rem;font-weight:500;line-height:1.4}.status-badge,.submission-badge{border-radius:9999px;align-items:center;padding:3px 9px;font-size:11px;font-weight:700;line-height:1.2;display:inline-flex}.status-badge--active{background:var(--tutto-primary-soft);color:var(--tutto-primary)}.status-badge--scheduled{color:#6b7280;background:#f3f4f6}.status-badge--today{color:#92400e;background:#fef3c7}.status-badge--overdue{color:#dc2626;background:#fee2e2}.status-badge--completed{background:var(--tutto-sage-soft);color:var(--tutto-sage-text)}.submission-badge--pending{background:var(--tutto-error-soft);color:var(--tutto-error)}.submission-badge--submitted{background:var(--tutto-primary-soft);color:var(--tutto-primary)}.submission-badge--feedback{background:var(--tutto-sage-soft);color:var(--tutto-sage-text)}.submission-badge--resubmission{background:var(--tutto-warning-soft);color:var(--tutto-warning-text)}.resubmission-banner{background:var(--tutto-warning-soft);color:var(--tutto-warning-text);border:1px solid #fcd34d;border-radius:12px;flex-direction:column;gap:8px;margin-bottom:16px;padding:14px 16px;display:flex}.resubmission-banner-title{align-items:center;gap:8px;font-size:14px;font-weight:700;display:flex}.resubmission-banner-reason{white-space:pre-wrap;margin:0;font-size:13px;line-height:1.5}.resubmission-banner-due{font-size:12px;font-weight:600}.feedback-resubmission-status{background:var(--tutto-warning-soft);color:var(--tutto-warning-text);border-radius:8px;align-items:center;gap:6px;padding:6px 10px;font-size:12px;font-weight:700;display:inline-flex}.feedback-attempt-label{color:var(--tutto-text-muted,#64748b);font-size:12px;font-weight:600}.feedback-resubmission-actions{margin-top:12px}.feedback-resubmission-btn{background:var(--tutto-warning-soft);color:var(--tutto-warning-text);cursor:pointer;border:1px solid #fcd34d;border-radius:8px;align-items:center;gap:6px;padding:8px 14px;font-size:13px;font-weight:700;display:inline-flex}.feedback-resubmission-btn:hover:not(:disabled){background:#fde68a}.feedback-resubmission-btn:disabled{opacity:.6;cursor:not-allowed}.timing-badge{border-radius:9999px;align-items:center;padding:3px 9px;font-size:11px;font-weight:700;line-height:1.2;display:inline-flex}.timing-badge--ontime{background:var(--tutto-sage-soft);color:var(--tutto-sage-text)}.timing-badge--late{color:#dc2626;background:#fee2e2}.hwd-student-badges,.hub-hw-badges,.feedback-badges{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.deadline-badge{color:var(--tutto-primary);align-items:center;font-size:11px;font-weight:700;display:inline-flex}.deadline-badge--today{color:#92400e}.deadline-badge--overdue{color:#dc2626}.hub-section{margin:0 0 var(--flora-section-gap,24px);background:var(--flora-surface,#fff);border:var(--flora-card-border,1.5px solid var(--tutto-primary-soft));border-radius:var(--flora-card-radius,16px);padding:var(--flora-card-padding,16px);box-shadow:var(--flora-card-shadow,0 2px 8px rgba(var(--tutto-primary-rgb), .05))}.hub-section-hdr{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.hub-section-title{color:var(--tutto-text-primary);font-size:15px;font-weight:800}.hub-link-btn{color:var(--tutto-primary);cursor:pointer;background:0 0;border:none;font-family:inherit;font-size:12px;font-weight:700}.hub-empty{color:#9ca3af;text-align:center;padding:12px 0;font-size:13px}.hub-hw-card{text-align:left;background:var(--tutto-primary-soft-2);border:1.5px solid var(--tutto-primary-soft);cursor:pointer;border-radius:12px;width:100%;margin-bottom:8px;padding:12px 14px;font-family:inherit;display:block}.hub-hw-card:last-child{margin-bottom:0}.hub-hw-top{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.hub-hw-subject{color:var(--tutto-primary);font-size:11px;font-weight:700}.hub-hw-title{color:var(--tutto-text-primary);margin-top:4px;font-size:14px;font-weight:800}.hub-hw-meta{color:#6b7280;margin-top:6px;font-size:12px}.hub-next-class{background:linear-gradient(135deg, var(--tutto-primary-soft-2), var(--tutto-primary-soft));border-radius:12px;padding:14px}.hub-next-label{color:var(--tutto-accent);margin-bottom:6px;font-size:11px;font-weight:700}.hub-next-main{color:var(--tutto-text-primary);font-size:16px;font-weight:800}.hub-next-sub{color:#6b7280;margin-top:4px;font-size:13px}.hub-stat-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.hub-stat-item{background:var(--tutto-primary-soft-2);text-align:center;border-radius:12px;padding:12px}.hub-stat-val{color:var(--tutto-primary);font-size:22px;font-weight:900}.hub-stat-lbl{color:#6b7280;margin-top:4px;font-size:11px;font-weight:600}.hub-primary-btn{background:var(--tutto-primary);color:#fff;cursor:pointer;width:calc(100% - 32px);height:52px;box-shadow:0 4px 14px rgba(var(--tutto-primary-rgb), .22);transition:background var(--flora-transition,.17s ease), box-shadow var(--flora-transition,.17s ease);border:none;border-radius:14px;margin:0 16px 14px;font-family:inherit;font-size:15px;font-weight:800;display:block}.hub-primary-btn:hover{background:var(--tutto-primary-hover)}.hub-primary-btn:active{background:var(--tutto-primary-active)}.hub-profile-actions{gap:8px;margin:0 16px 14px;display:flex}.hub-action-btn{cursor:pointer;border:1.5px solid var(--tutto-primary-border);height:42px;color:var(--tutto-primary);background:#fff;border-radius:12px;flex:1;font-family:inherit;font-size:13px;font-weight:700}.hub-action-btn--danger{color:#dc2626;border-color:#fecaca}.filter-chip-row{scrollbar-width:none;gap:8px;padding:0 0 10px;display:flex;overflow-x:auto}.filter-chip-row::-webkit-scrollbar{display:none}.filter-chip{border:1.5px solid var(--tutto-primary-border);color:#6b7280;cursor:pointer;background:#fff;border-radius:9999px;flex-shrink:0;padding:8px 12px;font-family:inherit;font-size:12px;font-weight:700}.filter-chip.on,.filter-chip.active{background:var(--tutto-primary);border-color:var(--tutto-primary);color:#fff}.filter-reset-btn{color:var(--tutto-primary);cursor:pointer;background:0 0;border:none;margin:0 16px 8px;font-family:inherit;font-size:12px;font-weight:700}.card-menu-btn{color:#9ca3af;cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:4px 6px;font-family:inherit;font-size:18px;line-height:1}.card-menu-wrap{position:relative}.card-menu-popover{border:1.5px solid var(--tutto-primary-soft);min-width:120px;box-shadow:0 8px 20px rgba(var(--tutto-primary-rgb), .12);z-index:20;background:#fff;border-radius:10px;position:absolute;top:calc(100% + 4px);right:0;overflow:hidden}.card-menu-item{text-align:left;cursor:pointer;background:0 0;border:none;width:100%;padding:10px 12px;font-family:inherit;font-size:13px;font-weight:600}.card-menu-item--danger{color:#dc2626}.hwd-page.app-page{width:100%;min-height:100vh;color:var(--tutto-text-primary);padding-bottom:calc(var(--shell-content-padding-bottom) + env(safe-area-inset-bottom,0px));background:#f9fafb;margin:0 auto;font-family:Pretendard,Inter,sans-serif}.hwd-content{flex-direction:column;gap:14px;padding:14px 16px 20px;display:flex}.hwd-summary,.hwd-progress-card,.hwd-student-card{border:1.5px solid var(--tutto-primary-soft);box-shadow:0 2px 8px rgba(var(--tutto-primary-rgb), .05);background:#fff;border-radius:16px;padding:16px}.hwd-title{color:var(--tutto-text-primary);margin-top:8px;font-size:20px;font-weight:900}.hwd-desc{color:#374151;margin-top:10px;font-size:14px;line-height:1.6}.hwd-meta-grid{grid-template-columns:1fr 1fr;gap:10px;margin-top:12px;display:grid}.hwd-meta-item{background:var(--tutto-primary-soft-2);border-radius:10px;padding:10px}.hwd-meta-lbl{color:#9ca3af;font-size:11px;font-weight:600}.hwd-meta-val{color:var(--tutto-text-primary);margin-top:4px;font-size:14px;font-weight:700}.hwd-student-row{border-bottom:1px solid var(--tutto-border);text-align:left;cursor:pointer;background:0 0;border-top:none;border-left:none;border-right:none;align-items:center;gap:12px;width:100%;padding:12px 0;font-family:inherit;display:flex}.hwd-student-row:last-child{border-bottom:none}.hwd-student-row:disabled{cursor:default;opacity:.85}.hwd-student-row--static{cursor:default;padding:12px 0 4px}.feedback-rating{color:#92400e;margin-bottom:10px;font-size:14px;font-weight:800}.hwd-student-info{flex:1;min-width:0}.hwd-student-name{font-size:15px;font-weight:800}.hwd-student-sub{color:#6b7280;margin-top:2px;font-size:12px}.hwd-student-row-wrap{border-bottom:1px solid #f3f4f6}.hwd-student-row-wrap:last-child,.hwd-student-row-wrap .hwd-student-row{border-bottom:none}.hwd-verify-btn{box-sizing:border-box;flex:none;align-self:stretch;width:100%;max-width:100%;margin:0;font-size:13px;display:block}.hwd-verify-actions{gap:8px;width:100%;margin-bottom:12px;display:grid}.hwd-verify-actions .hwd-verify-btn{min-height:46px}.hwd-student-extra{color:#9ca3af;margin-top:4px;font-size:11px}.hwd-actions{flex-wrap:wrap;gap:8px;display:flex}.hwd-action-btn{cursor:pointer;border:1.5px solid var(--tutto-primary-border);min-width:0;min-height:46px;color:var(--tutto-primary);background:#fff;border-radius:12px;flex:calc(50% - 4px);font-family:inherit;font-size:14px;font-weight:700}.hwd-action-btn--danger{color:#dc2626;border-color:#fecaca}.hw-card-v2{border:1.5px solid var(--tutto-primary-soft);box-shadow:0 2px 8px rgba(var(--tutto-primary-rgb), .06);background:#fff;border-radius:16px;margin-bottom:12px;overflow:hidden}.hw-card-v2-main{text-align:left;cursor:pointer;background:0 0;border:none;width:100%;padding:14px 16px 12px;font-family:inherit;display:block}.hw-card-v2-top{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.hw-card-v2-subject{color:var(--tutto-primary);font-size:12px;font-weight:700}.hw-card-v2-title{color:var(--tutto-text-primary);margin-top:4px;font-size:15px;font-weight:800;line-height:1.35}.hw-card-v2-stats{color:#6b7280;margin-top:8px;font-size:12px;line-height:1.5}.hw-card-v2-footer{justify-content:space-between;align-items:center;gap:8px;padding:0 16px 14px;display:flex}.hw-card-v2-progress{flex:1}.hw-card-v2-progress-bar{background:var(--tutto-primary-soft);border-radius:9999px;height:6px;margin-top:6px;overflow:hidden}.hw-card-v2-progress-fill{background:linear-gradient(90deg, var(--tutto-accent), var(--tutto-primary));border-radius:9999px;height:100%}.student-detail-hub,.app-shell--with-nav .hwd-page,.app-shell--with-nav .student-detail-hub{padding-bottom:calc(var(--shell-content-padding-bottom) + env(safe-area-inset-bottom,0px))}.submission-history-section{margin-top:16px}.submission-history-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.submission-history-toggle{color:var(--tutto-primary);cursor:pointer;background:0 0;border:none;font-size:13px;font-weight:600}.submission-history-loading,.submission-history-error{color:var(--tutto-text-secondary);margin:0;font-size:14px}.submission-history-error{color:#b91c1c}.submission-history-timeline{flex-direction:column;gap:16px;margin:0;padding:0;list-style:none;display:flex}.submission-history-item{grid-template-columns:28px 1fr;gap:12px;display:grid;position:relative}.submission-history-item:not(:last-child):before{content:"";background:var(--tutto-primary-soft);width:2px;position:absolute;top:28px;bottom:-16px;left:13px}.submission-history-marker{width:28px;height:28px;color:var(--tutto-primary);z-index:1;background:#eff6ff;border-radius:999px;justify-content:center;align-items:center;display:inline-flex}.submission-history-item--success .submission-history-marker{color:#059669;background:#ecfdf5}.submission-history-item--amber .submission-history-marker{color:#b45309;background:#fffbeb}.submission-history-item--verified .submission-history-marker{color:#4338ca;background:#eef2ff}.submission-history-item.is-current .submission-history-card{border-color:var(--tutto-primary);box-shadow:0 0 0 1px rgba(var(--tutto-primary-rgb), .12)}.submission-history-card{border:1px solid var(--tutto-border,#e5e7eb);background:#fff;border-radius:12px;padding:12px 14px}.submission-history-card-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px;display:flex}.submission-history-card-title{color:var(--tutto-text-primary);margin:0;font-size:14px;font-weight:700}.submission-history-time{color:var(--tutto-text-secondary);white-space:nowrap;font-size:12px}.submission-history-body,.submission-history-detail{color:var(--tutto-text-primary);margin:0;font-size:14px;line-height:1.5}.submission-history-detail{color:var(--tutto-text-secondary);font-size:13px}.submission-history-detail--late{color:#b45309;font-weight:600}.submission-history-rating{color:#f59e0b;gap:2px;margin-bottom:6px;display:flex}.submission-history-rating span{opacity:.25}.submission-history-rating span.on{opacity:1}.submission-history-photo-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px;display:grid}.submission-history-photo-thumb{aspect-ratio:1;background:#f3f4f6;border:none;border-radius:10px;padding:0;overflow:hidden}.submission-history-photo-thumb img{object-fit:cover;width:100%;height:100%;display:block}.submission-history-more{border:1px dashed var(--tutto-primary-soft);width:100%;color:var(--tutto-primary);cursor:pointer;background:#f8fbff;border-radius:10px;margin-top:12px;padding:10px 12px;font-size:13px;font-weight:600}.student-shell{background:var(--flora-surface-page,#f9fafb)}.app-shell--with-nav .student-page.app-page{padding-bottom:calc(var(--shell-content-padding-bottom) + env(safe-area-inset-bottom,0px))}.student-page-hdr-action{justify-content:flex-end;min-width:40px;display:flex}.student-user-bar{justify-content:space-between;align-items:center;gap:12px;display:flex}.student-user-left{align-items:center;gap:10px;min-width:0;display:flex}.student-page{min-height:100%}.student-page-hdr.flora-page-header,.student-page-hdr.flora-secondary-header{padding:var(--flora-page-padding-top) 0 8px;background:var(--flora-surface-page);z-index:5;display:block;position:sticky;top:0}.student-page-body{padding:0 0 24px}.student-page-body .hub-section{margin-left:0;margin-right:0}.student-page-back{background:rgba(var(--tutto-primary-rgb), .08);color:var(--tutto-primary);cursor:pointer;border:none;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;min-width:34px;height:34px;padding:0 10px;font-family:inherit;font-size:18px;display:inline-flex}.student-page-back--labeled{white-space:nowrap;min-width:auto;font-size:.875rem;font-weight:600}.student-uploading-label{color:#6b7280;font-size:.85rem;font-weight:400}.student-submit-alert{color:#b91c1c;background:#fef2f2;border-radius:10px;margin-bottom:12px;padding:10px 12px;font-size:.9rem}.student-page-title{text-align:center;margin:0;font-size:1.125rem}.student-page-hdr-spacer{width:40px}.student-greeting{color:#4b5563;margin:0 0 12px;font-size:.95rem}.student-filter-row{margin-bottom:12px}.student-hw-list{flex-direction:column;gap:12px;display:flex}.student-hw-card{text-align:left;display:block}.student-hw-card-top{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.student-hw-desc{color:#6b7280;margin:6px 0 0;font-size:.875rem;line-height:1.4}.student-hw-meta-row{flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;display:flex}.student-hw-tags{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.student-hw-actions{align-items:center;gap:12px;margin-top:14px;display:flex}.student-hw-btn{flex:1}.deadline-badge--soon{color:#92400e;background:#fef3c7}.student-error-box{background:#fef2f2;border:1px solid #fecaca;border-radius:12px;margin-bottom:12px;padding:12px}.student-submit-page .student-submit-title{margin:4px 0 8px;font-size:1.2rem}.student-submit-desc{color:#4b5563;margin:0 0 10px;line-height:1.5}.student-submit-time{color:#6b7280;margin:10px 0 0;font-size:.875rem}.student-submit-updated{color:var(--tutto-primary)}.student-memo-input{width:100%;font:inherit;resize:vertical;box-sizing:border-box;border:1px solid #d1d5db;border-radius:12px;padding:12px}.student-photo-grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.student-photo-item{position:relative}.student-photo-thumb{aspect-ratio:1;background:#e5e7eb;border:none;border-radius:10px;width:100%;padding:0;display:block;overflow:hidden}.student-photo-thumb img{object-fit:cover;width:100%;height:100%}.student-photo-remove{color:#fff;background:#0000008c;border:none;border-radius:999px;width:24px;height:24px;font-size:12px;position:absolute;top:4px;right:4px}.student-submit-btn{width:100%;margin:8px 0 16px}.student-hw-ask-wrap{margin:0 0 12px}.student-hw-ask-btn{width:100%;min-height:44px;font-size:.9375rem;font-weight:600}.student-feedback-panel{margin-top:8px}.student-feedback-date,.student-feedback-meta{color:#6b7280;font-size:.875rem}.student-feedback-rating{margin:8px 0;font-weight:600}.student-feedback-body{white-space:pre-wrap;line-height:1.6}.student-feedback-list{flex-direction:column;gap:10px;display:flex}.student-home-section .student-feedback-list{gap:12px}.student-feedback-card{text-align:left;background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:14px}.student-feedback-card.unread{border-color:var(--tutto-primary-border);box-shadow:0 0 0 1px rgba(var(--tutto-primary-rgb), .15)}.student-feedback-card-top{justify-content:space-between;align-items:center;gap:8px;display:flex}.student-feedback-kind{letter-spacing:.04em;text-transform:uppercase;color:var(--tutto-text-tertiary,#6b7280);font-size:.6875rem;font-weight:800}.student-feedback-read-state{color:#9ca3af;font-size:.6875rem;font-weight:700}.student-feedback-read-state.unread{color:var(--tutto-primary)}.student-feedback-card-title{color:var(--tutto-text-primary,#111827);text-align:left;margin:6px 0 0;font-size:1rem;font-weight:800;line-height:1.35}.student-unread-dot{color:var(--tutto-primary);font-size:.7rem;font-weight:700}.student-feedback-preview{color:#4b5563;margin-top:8px;font-size:.9rem}.student-feedback-detail{--student-fb-detail-inset:var(--flora-page-gutter,16px);z-index:var(--flora-sheet-z);background:var(--flora-surface-page,var(--tutto-background));border-top-left-radius:var(--flora-card-radius,16px);border-top-right-radius:var(--flora-card-radius,16px);box-sizing:border-box;-webkit-overflow-scrolling:touch;flex-direction:column;width:100%;max-width:min(720px,100%);max-height:min(88vh,720px);margin-inline:auto;display:flex;position:fixed;bottom:0;left:0;right:0;overflow:hidden;box-shadow:0 -10px 36px #0f241924}.student-feedback-detail-hdr{justify-content:space-between;align-items:center;gap:var(--flora-section-heading-gap,12px);padding:16px var(--student-fb-detail-inset) var(--flora-section-heading-gap,12px);background:var(--flora-surface-page,var(--tutto-background));flex-shrink:0;margin:0;display:flex}.student-feedback-detail-title{min-width:0;color:var(--flora-text-primary,var(--tutto-text-primary));flex:auto;margin:0;font-size:1rem;font-weight:800;line-height:1.3}.student-feedback-detail-close{min-height:var(--flora-control-height,44px);flex:none;align-items:center;margin:0;padding:0;display:inline-flex}.student-feedback-detail-body{gap:var(--flora-section-heading-gap,12px);min-height:0;padding:0 var(--student-fb-detail-inset) calc(20px + env(safe-area-inset-bottom,0px));scrollbar-gutter:stable;box-sizing:border-box;flex-direction:column;flex:auto;display:flex;overflow-y:auto}.student-feedback-detail-body>.student-fb-hero-card,.student-feedback-detail-body>.student-fb-comment-card,.student-feedback-detail-body>.student-fb-section,.student-feedback-detail-body>.student-fb-info-card,.student-feedback-detail-body>.student-fb-actions{box-sizing:border-box;width:100%;max-width:none;margin-inline:0}.student-feedback-detail .hub-primary-btn{box-sizing:border-box;width:100%;max-width:none;height:auto;min-height:var(--flora-control-height,44px);border-radius:var(--flora-control-radius,12px);margin:0}.student-feedback-detail>.student-state{min-height:0;padding:0 var(--student-fb-detail-inset) calc(20px + env(safe-area-inset-bottom,0px));flex:auto;overflow-y:auto}.student-fb-hero-card,.student-fb-comment-card,.student-fb-section,.student-fb-info-card{box-sizing:border-box;width:100%}.student-fb-hero-card{background:var(--flora-surface,#fff);border:var(--flora-card-border);border-radius:var(--flora-card-radius);padding:var(--flora-card-padding);text-align:center;transition:box-shadow .16s,transform .16s}.student-fb-hero-headline{color:var(--tutto-text-primary);margin:10px 0 0;font-size:1.25rem;font-weight:800;line-height:1.3}.student-fb-hero-headline--plain{margin-top:0;font-size:1.125rem}.student-fb-hero-subtitle{color:#4b5563;margin:8px 0 0;font-size:.9rem;line-height:1.45}.student-fb-hero-date{color:#6b7280;margin:10px 0 0;font-size:.8125rem;font-weight:600}.student-star-rating{flex-direction:column;align-items:center;gap:6px;display:inline-flex}.student-star-rating-stars{letter-spacing:2px;color:#d97706;line-height:1}.student-star-rating--lg .student-star-rating-stars{font-size:26px}.student-star-rating-value{color:#92400e;font-size:.875rem;font-weight:800}.student-fb-comment-card{background:var(--flora-surface,#fff);border:var(--flora-card-border);border-radius:var(--flora-card-radius);padding:var(--flora-card-padding);transition:box-shadow .16s}.student-fb-comment-title{margin:0 0 var(--flora-section-heading-gap,12px);color:var(--flora-primary,var(--tutto-primary));letter-spacing:.01em;font-size:.8125rem;font-weight:800}.student-fb-comment-body{color:#1f2937;margin:0;font-size:.9375rem;line-height:1.75}.student-fb-section{background:var(--flora-surface,#fff);border:var(--flora-card-border);border-radius:var(--flora-card-radius);padding:var(--flora-card-padding)}.student-fb-section-title{margin:0 0 var(--flora-section-heading-gap,12px);color:var(--flora-text-primary,var(--tutto-text-primary));font-size:.875rem;font-weight:800}.student-fb-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));justify-items:start;gap:10px;display:grid}.student-fb-photo-grid:has(.student-fb-photo-item:only-child){grid-template-columns:minmax(0,140px)}.student-fb-photo-item{min-width:0}.student-fb-photo-thumb{aspect-ratio:1;cursor:pointer;background:#f3f4f6;border:1.5px solid #e5e7eb;border-radius:12px;width:100%;padding:0;transition:transform .16s,box-shadow .16s,border-color .16s;display:block;overflow:hidden}.student-fb-photo-thumb:hover{box-shadow:var(--tutto-interactive-hover-shadow);border-color:var(--tutto-primary-border);transform:translateY(-1px)}.student-fb-photo-thumb:active{border-color:var(--tutto-primary-border);box-shadow:var(--tutto-interactive-active-glow);transform:scale(.98)}.student-fb-photo-thumb:focus-visible{outline:2px solid var(--tutto-primary);outline-offset:2px}.student-fb-photo-thumb img{object-fit:cover;width:100%;height:100%;display:block}.student-fb-info-card{background:var(--flora-surface,#fff);border:var(--flora-card-border);border-radius:var(--flora-card-radius);padding:var(--flora-card-padding)}.student-fb-info-list{grid-template-columns:max-content minmax(0,1fr);align-items:start;gap:10px 12px;margin:0;display:grid}.student-fb-info-row{display:contents}.student-fb-info-row dt{color:var(--flora-text-muted,#6b7280);white-space:nowrap;margin:0;font-size:.75rem;font-weight:800;line-height:1.4}.student-fb-info-row dd{min-width:0;color:var(--flora-text-primary,#111827);margin:0;font-size:.875rem;font-weight:600;line-height:1.45}.student-fb-info-row dd .datetime-display{flex-direction:column;gap:2px;width:100%;display:flex}.student-fb-actions{box-sizing:border-box;flex-direction:column;gap:10px;width:100%;max-width:none;margin:0;display:flex}.student-fb-btn{box-sizing:border-box;width:100%;max-width:none;min-height:var(--flora-control-height,44px);border-radius:var(--flora-control-radius,12px);margin:0;transition:background .16s,transform .16s}.student-fb-btn:hover{filter:brightness(.97)}.student-fb-btn:active{transform:scale(.98)}.student-fb-btn:focus-visible,.student-fb-secondary-btn:focus-visible,.student-fb-home-link:focus-visible{outline:2px solid var(--tutto-primary);outline-offset:2px}.student-fb-actions-row{box-sizing:border-box;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;width:100%;max-width:none;margin:0;display:grid}.student-fb-secondary-btn{box-sizing:border-box;width:100%;min-width:0;max-width:none;min-height:var(--flora-control-height,44px);border-radius:var(--flora-control-radius,12px);border:1.5px solid var(--tutto-primary-border);background:var(--flora-surface,#fff);color:var(--tutto-primary);cursor:pointer;margin:0;padding:0 12px;font-family:inherit;font-size:.8125rem;font-weight:700;transition:background .16s,transform .16s,border-color .16s}.student-fb-secondary-btn:hover{background:var(--tutto-primary-soft);border-color:var(--tutto-primary-border)}.student-fb-secondary-btn:active{transform:scale(.98)}.student-fb-home-link{align-self:center;margin:0}.student-fb-empty-actions{width:100%;max-width:none;margin:var(--flora-section-heading-gap,12px) 0 0;box-sizing:border-box;flex-direction:column;align-items:stretch;gap:10px;display:flex}.student-sheet-backdrop{z-index:var(--flora-overlay-z);cursor:pointer;background:#0f241959;border:none;position:fixed;inset:0}.student-notif-bell{position:relative}.student-notif-btn{cursor:pointer;background:0 0;border:none;font-size:1.1rem;position:relative}.student-notif-count{color:#fff;background:#ef4444;border-radius:999px;min-width:16px;height:16px;padding:0 4px;font-size:10px;line-height:16px;position:absolute;top:-6px;right:-8px}.student-notif-popover{z-index:30;background:#fff;border:1px solid #e5e7eb;border-radius:12px;width:min(320px,90vw);position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 10px 30px #0000001f}.student-notif-popover-hdr{border-bottom:1px solid #f3f4f6;justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.student-notif-item{text-align:left;background:0 0;border:none;border-bottom:1px solid #f3f4f6;width:100%;padding:10px 12px;display:block}.student-notif-item.unread{background:var(--tutto-primary-soft-2)}.student-notif-more{text-align:center;padding:10px;font-size:.875rem;display:block}.student-notif-empty{padding:12px}.student-notif-list{flex-direction:column;gap:8px;display:flex}.student-bottom-nav .bottom-nav-item{flex:1}.student-refresh-link{margin-bottom:8px}.pill--feedback{color:#166534;background:#dcfce7}.pill--muted{color:#4b5563;background:#f3f4f6}.pill{border-radius:999px;align-items:center;padding:3px 8px;font-size:11px;font-weight:700;display:inline-flex}.student-home-page.app-page .app-page-inner{padding-left:0;padding-right:0}.student-dashboard-hdr{padding-left:var(--app-shell-gutter);padding-right:var(--app-shell-gutter);margin-bottom:12px}.student-dashboard-hdr-inner{gap:0}.student-home-body{padding-left:var(--app-shell-gutter);padding-right:var(--app-shell-gutter);flex-direction:column;gap:14px;display:flex}.student-home-stats,.student-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:0;display:grid}.student-metric-card{border-radius:var(--tutto-radius-md);border:1px solid var(--tutto-border);background:var(--tutto-surface);color:inherit;font:inherit;cursor:pointer;min-height:78px;box-shadow:none;flex-direction:column;align-items:flex-start;gap:4px;padding:12px;text-decoration:none;display:flex}.student-metric-card--primary{border-color:var(--tutto-primary-border);background:linear-gradient(180deg, var(--tutto-primary-soft-2) 0%, var(--tutto-surface) 100%)}.student-metric-card--success{border-color:var(--tutto-sage-border);background:linear-gradient(180deg, var(--tutto-sage-soft) 0%, var(--tutto-surface) 100%)}.student-home-section{border-top:1px solid var(--tutto-border);margin-bottom:0;padding:14px 0 0}.student-home-metrics-band{flex-direction:column;gap:8px;display:flex}@media (width>=1024px){.student-home-body{grid-template-columns:minmax(0,1.35fr) minmax(0,.65fr);align-items:start;gap:16px 20px;display:grid}.student-home-section--primary{border:1px solid var(--tutto-border);border-radius:var(--tutto-radius-md);background:var(--tutto-surface);border-top:none;grid-column:1/-1;padding:16px 18px}.student-home-metrics-band{grid-column:1/-1;gap:10px}.student-home-stats{display:none}.student-home-section:nth-of-type(2){grid-column:1}.student-home-section:nth-of-type(3){grid-column:2}.student-home-section:nth-of-type(4){grid-column:1/-1}}.student-metric-card:focus-visible,.student-hw-card-hit:focus-visible,.student-feedback-card:focus-visible,.student-notif-list-item:focus-visible,.hub-primary-btn:focus-visible,.hub-link-btn:focus-visible,.student-page-back:focus-visible{outline:2px solid var(--tutto-primary);outline-offset:2px}.student-metric-value{font-size:1.5rem;font-weight:800;line-height:1.1}.student-home-stats .student-metric-card{min-height:88px}.student-metric-label{color:#6b7280;font-size:.8rem;font-weight:700}.student-metric-hint{color:var(--tutto-text-tertiary);font-size:.6875rem;font-weight:500;line-height:1.35}.student-metric-icon{font-size:1.1rem}.student-metric-card--urgent{background:#fffbeb;border-color:#fde68a}.student-metric-card--warn{background:#fef2f2;border-color:#fecaca}.student-metric-card--success{background:#f0fdf4;border-color:#bbf7d0}.student-metric-card--info{background:#eff6ff;border-color:#bfdbfe}.student-home-section{margin-bottom:24px}.student-dashboard-task-list{flex-direction:column;gap:10px;display:flex}.student-dashboard-task{text-align:left;cursor:pointer;box-sizing:border-box;background:#fff;border:1px solid #e5e7eb;border-radius:14px;align-items:flex-start;gap:12px;width:100%;padding:14px 14px 14px 12px;display:flex}.student-dashboard-task:hover{border-color:var(--tutto-primary-border);background:var(--tutto-primary-soft-2);box-shadow:var(--tutto-interactive-hover-shadow)}.student-dashboard-task:active{border-color:var(--tutto-primary-border);box-shadow:var(--tutto-interactive-active-glow);transform:scale(.995)}.student-dashboard-task:focus-visible{outline:2px solid var(--tutto-primary);outline-offset:2px}.student-dashboard-task--homework_overdue{background:snow;border-color:#fecaca}.student-dashboard-task-icon{flex-shrink:0;font-size:1.1rem;line-height:1.4}.student-dashboard-task-body{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.student-dashboard-task-badge{color:#374151;background:#f3f4f6;border-radius:999px;align-self:flex-start;padding:2px 8px;font-size:11px;font-weight:700;line-height:1.4;display:inline-flex}.student-dashboard-task--homework_overdue .student-dashboard-task-badge{color:#b91c1c;background:#fee2e2}.student-dashboard-task--homework_due_today .student-dashboard-task-badge{color:#92400e;background:#fef3c7}.student-dashboard-task--homework_due_soon .student-dashboard-task-badge{color:#c2410c;background:#fff7ed}.student-dashboard-task--question_answered .student-dashboard-task-badge{color:#1d4ed8;background:#eff6ff}.student-dashboard-task--feedback_received .student-dashboard-task-badge{color:#047857;background:#ecfdf5}.student-dashboard-task-title{color:#111827;font-size:.95rem;font-weight:700;line-height:1.35}.student-dashboard-task-subtitle{color:#6b7280;font-size:.82rem;line-height:1.35}.student-dashboard-task-arrow{color:#9ca3af;flex-shrink:0;margin-top:2px;font-size:.95rem;line-height:1.4}.student-section-hdr{margin-bottom:var(--flora-section-heading-gap,12px);justify-content:space-between;align-items:center;gap:12px;display:flex}.student-section-title{font-size:var(--flora-font-section-title,.9375rem);color:var(--flora-text-primary,var(--tutto-text-primary));margin:0;font-weight:800}.student-section-link{flex-shrink:0}.student-hw-page-intro{margin-bottom:4px}.student-hw-page-subtitle{color:#6b7280;margin:0 0 6px;font-size:.875rem;line-height:1.45}.student-hw-page-stats{color:#374151;margin:0 0 12px;font-size:.8125rem;font-weight:700;line-height:1.4}.student-hw-filter-row{scroll-behavior:smooth;-webkit-overflow-scrolling:touch;margin:0 -16px 14px;padding-bottom:2px}.student-hw-filter-chip{justify-content:center;align-items:center;gap:6px;min-height:40px;padding:8px 14px;font-size:13px;transition:background .16s,border-color .16s,color .16s,transform .16s;display:inline-flex}.student-hw-filter-chip:active{transform:scale(.98)}.student-hw-filter-chip:focus-visible{outline:2px solid var(--tutto-primary);outline-offset:2px}.student-hw-filter-chip.active{box-shadow:0 1px 3px rgba(var(--tutto-primary-rgb), .18)}.student-hw-filter-count{background:#ffffff38;border-radius:9999px;justify-content:center;align-items:center;min-width:1.25rem;height:1.25rem;padding:0 5px;font-size:11px;font-weight:800;line-height:1;display:inline-flex}.student-hw-filter-chip:not(.active) .student-hw-filter-count{background:var(--tutto-primary-soft);color:var(--tutto-primary)}.student-hw-card{margin-bottom:0;padding:0;transition:transform .17s,box-shadow .17s;overflow:hidden}.student-hw-card--list{cursor:default}.student-hw-card--list:hover{box-shadow:var(--tutto-interactive-hover-shadow);transform:translateY(-1px)}.student-hw-card--list:active{box-shadow:var(--tutto-interactive-active-glow);transform:scale(.99)}.student-hw-card-hit{text-align:left;width:100%;font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:16px;display:block}.student-hw-card-hit:focus-visible{outline:2px solid var(--tutto-primary);outline-offset:-2px}.student-hw-card--feedback,.student-hw-card--list.student-hw-card--feedback{box-shadow:inset 0 0 0 1.5px #bbf7d0}.student-hw-card--late{box-shadow:inset 0 0 0 1.5px #fed7aa}.student-hw-card--submitted{box-shadow:inset 0 0 0 1.5px #d1fae5}.student-hw-card--overdue{box-shadow:inset 0 0 0 1.5px #fecaca}.student-hw-card--due_today,.student-hw-card--due_soon{box-shadow:inset 0 0 0 1.5px #fde68a}.student-hw-card--pending{box-shadow:inset 0 0 0 1.5px var(--tutto-primary-soft)}.student-hw-card--resubmission,.student-hw-card--list.student-hw-card--resubmission{box-shadow:inset 0 0 0 1.5px #fcd34d}.student-hw-card--compact .student-hw-card-hit{padding:14px}.student-hw-card-copy{flex:1;min-width:0}.student-hw-card-title{margin:8px 0 0;line-height:1.35}.student-hw-list--compact{gap:10px}.student-hw-list--page{gap:12px}.student-hw-actions{align-items:center;margin-top:0;padding:0 16px 16px;display:flex}.student-hw-btn{flex:1;min-height:40px;transition:background .16s,transform .16s}.student-hw-btn:hover{filter:brightness(.97)}.student-hw-btn:active{transform:scale(.98)}.student-hw-btn:focus-visible{outline:2px solid var(--tutto-primary);outline-offset:2px}.student-hw-display-badge{white-space:nowrap;border-radius:9999px;flex-shrink:0;align-items:center;padding:4px 8px;font-size:11px;font-weight:800;line-height:1.2;display:inline-flex}.student-hw-display-badge--feedback{color:#166534;background:#dcfce7}.student-hw-display-badge--late{color:#9a3412;background:#ffedd5}.student-hw-display-badge--submitted{color:#047857;background:#ecfdf5}.student-hw-display-badge--overdue{color:#b91c1c;background:#fee2e2}.student-hw-display-badge--due_today,.student-hw-display-badge--due_soon{color:#92400e;background:#fef3c7}.student-hw-display-badge--pending{color:#4b5563;background:#f3f4f6}.student-hw-meta-block{margin-top:12px}.student-hw-meta-line{color:#374151;flex-wrap:wrap;align-items:center;gap:6px;font-size:13px;display:flex}.student-hw-meta-label{color:#6b7280;font-weight:700}.student-hw-meta-chips{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.student-hw-meta-chip{color:#4b5563;background:#fff;border:1px solid #e5e7eb;border-radius:6px;align-items:center;padding:3px 8px;font-size:12px;font-weight:600;line-height:1.35;display:inline-flex}.student-hw-meta-chip--late{color:#9a3412;background:#fff7ed;border-color:#fed7aa}.student-hw-meta-chip--feedback{color:#166534;background:#ecfdf5;border-color:#bbf7d0}.student-hw-progress{border-top:1px solid var(--tutto-primary-soft);margin-top:14px;padding-top:12px}.student-hw-progress-dots{align-items:center;gap:6px;margin-bottom:8px;display:flex}.student-hw-progress-dot{background:#d1d5db;border-radius:50%;width:8px;height:8px;transition:background .16s,transform .16s}.student-hw-progress-dot.filled{background:var(--tutto-primary)}.student-hw-progress-dot.current{box-shadow:0 0 0 2px rgba(var(--tutto-primary-rgb), .2);transform:scale(1.15)}.student-hw-progress-meta{align-items:center;gap:10px;display:flex}.student-hw-progress-label{color:#6b7280;flex-shrink:0;font-size:12px;font-weight:700}.student-hw-progress-bar{background:#e5e7eb;border-radius:9999px;flex:1;height:4px;overflow:hidden}.student-hw-progress-fill{border-radius:inherit;background:var(--tutto-primary);height:100%;transition:width .18s;display:block}.student-text-clamp{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.student-text-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.student-state{text-align:center;border:1.5px solid var(--tutto-primary-soft);background:#fff;border-radius:14px;margin-bottom:12px;padding:28px 16px}.student-state-icon{opacity:.85;margin-bottom:8px;font-size:1.5rem;line-height:1}.student-state-title{color:var(--tutto-text-primary);margin:0 0 6px;font-weight:700}.student-state-desc{color:#6b7280;margin:0;font-size:.9rem}.student-state--error{background:#fef2f2;border-color:#fecaca}.student-state-retry{margin-top:12px}.student-state-spinner{border:2px solid #d1d5db;border-top-color:var(--tutto-primary);border-radius:50%;width:22px;height:22px;margin-bottom:8px;animation:.8s linear infinite student-spin;display:inline-block}.student-state-spinner--sm{width:16px;height:16px;margin-bottom:0}@keyframes student-spin{to{transform:rotate(360deg)}}.student-submit-hint,.student-field-hint,.student-teacher-verified-note{color:#6b7280;margin:8px 0 0;font-size:.82rem;line-height:1.45}.student-teacher-verified-note{color:var(--tutto-primary);font-weight:600}.student-memo-count{color:#9ca3af;font-size:.8rem;font-weight:600}.student-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.student-photo-grid--detail{grid-template-columns:repeat(3,minmax(0,1fr))}.student-photo-count{color:#9ca3af;grid-column:1/-1;margin:4px 0 0;font-size:.8rem}.student-photo-overlay,.student-photo-thumb--loading{color:var(--tutto-primary);background:#ffffffd1;flex-direction:column;justify-content:center;align-items:center;gap:6px;font-size:.75rem;font-weight:700;display:flex;position:absolute;inset:0}.student-photo-thumb{position:relative}.student-photo-remove{cursor:pointer;min-width:32px;min-height:32px}.student-photo-retry{color:#fff;cursor:pointer;background:#b91c1ceb;border:none;border-radius:8px;padding:6px;font-size:.72rem;font-weight:700;position:absolute;bottom:4px;left:4px;right:4px}.student-photo-thumb--failed{color:#b91c1c;background:#fef2f2;justify-content:center;align-items:center;font-size:.75rem;font-weight:700;display:flex}.student-feedback-card{cursor:pointer;width:100%;font:inherit}.student-feedback-card.compact,.student-feedback-card--home{padding:21px;line-height:1.5;transition:transform .17s,box-shadow .17s}.student-feedback-card--home:hover{box-shadow:var(--tutto-interactive-hover-shadow);transform:translateY(-1px)}.student-feedback-card--home:active{box-shadow:var(--tutto-interactive-active-glow);transform:scale(.99)}.student-feedback-card--home .student-feedback-card-top{align-items:center;margin-bottom:2px}.student-feedback-card--home .hub-hw-subject{font-size:11px;line-height:1.35}.student-feedback-card-title{color:var(--tutto-text-primary);margin:6px 0 0;font-size:1rem;font-weight:800;line-height:1.35}.student-feedback-card--home .student-feedback-preview{color:#4b5563;margin:10px 0 0;font-size:.875rem;line-height:1.55}.student-feedback-card-stars{letter-spacing:1px;color:#d97706;margin-top:10px;font-size:15px;line-height:1}.student-feedback-card-meta{color:#6b7280;flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;font-size:.8125rem;font-weight:600;line-height:1.4;display:flex}.student-feedback-card-time,.student-feedback-card-photos{display:inline-block}.student-read-badge{color:#6b7280;background:#f3f4f6;border-radius:999px;flex-shrink:0;align-items:center;padding:2px 8px;font-size:.6875rem;font-weight:700;line-height:1.4;display:inline-flex}.student-read-label{color:#9ca3af;font-size:.72rem;font-weight:700}.student-feedback-rating-inline{color:#92400e;font-weight:700}.student-notif-page-intro{margin-bottom:4px}.student-notif-page-subtitle{color:#6b7280;margin:0 0 6px;font-size:.875rem;line-height:1.45}.student-notif-page-stats{color:#374151;margin:0 0 12px;font-size:.8125rem;font-weight:700;line-height:1.4}.student-notif-mark-all-btn{border:1.5px solid var(--tutto-primary-border);min-height:32px;color:var(--tutto-primary);cursor:pointer;background:#fff;border-radius:999px;align-items:center;gap:6px;padding:6px 12px;font-family:inherit;font-size:.75rem;font-weight:700;transition:background .16s,transform .16s,border-color .16s;display:inline-flex}.student-notif-mark-all-btn:hover:not(:disabled){background:var(--tutto-primary-soft);border-color:var(--tutto-primary-border)}.student-notif-mark-all-btn:active:not(:disabled){transform:scale(.98)}.student-notif-mark-all-btn:disabled{opacity:.7;cursor:not-allowed}.student-notif-mark-all-btn:focus-visible{outline:2px solid var(--tutto-primary);outline-offset:2px}.student-notif-filter-row{scroll-behavior:smooth;-webkit-overflow-scrolling:touch;margin:0 -16px 12px;padding-bottom:2px}.student-notif-filter-chip{justify-content:center;align-items:center;gap:6px;min-height:40px;padding:8px 14px;font-size:13px;transition:background .16s,border-color .16s,color .16s,transform .16s;display:inline-flex}.student-notif-filter-chip:active{transform:scale(.98)}.student-notif-filter-chip:focus-visible{outline:2px solid var(--tutto-primary);outline-offset:2px}.student-notif-filter-count{background:#ffffff38;border-radius:9999px;justify-content:center;align-items:center;min-width:1.25rem;height:1.25rem;padding:0 5px;font-size:11px;font-weight:800;line-height:1;display:inline-flex}.student-notif-filter-chip:not(.active) .student-notif-filter-count{background:var(--tutto-primary-soft);color:var(--tutto-primary)}@media (width<=767px){.student-notif-filter-row{justify-content:flex-start;align-items:center;gap:8px;width:auto;margin:0 0 12px;padding:0 0 2px;display:flex;overflow-x:auto}.student-notif-filter-chip{white-space:nowrap;flex:0 auto;gap:4px;width:auto;min-width:0;min-height:36px;padding:6px 10px;font-size:12px}.student-notif-filter-label{text-align:center;width:auto;line-height:1.2;display:inline}.student-notif-filter-count{min-width:1.125rem;height:1.125rem;padding:0 4px;font-size:10px}}.student-notif-toolbar{justify-content:flex-end;margin-bottom:10px;display:flex}.student-notif-loading-inline{color:#6b7280;margin:0 0 12px;font-size:.8125rem;font-weight:600}.student-notif-groups{flex-direction:column;gap:16px;display:flex}.student-notif-group-title{color:#9ca3af;letter-spacing:.02em;margin:0 0 8px;font-size:.75rem;font-weight:800}.student-notif-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.student-notif-list>li{margin:0;padding:0}.student-notif-card{cursor:pointer;text-align:left;width:100%;font:inherit;color:inherit;background:#fff;border:1.5px solid #e5e7eb;border-radius:14px;padding:0;transition:transform .17s,box-shadow .17s,border-color .17s;display:block;position:relative;overflow:hidden}.student-notif-card:hover{box-shadow:var(--tutto-interactive-hover-shadow);border-color:var(--tutto-primary-border);transform:translateY(-1px)}.student-notif-card:active{border-color:var(--tutto-primary-border);box-shadow:var(--tutto-interactive-active-glow);transform:scale(.995)}.student-notif-card.unread{border-color:var(--tutto-primary-border);background:#eef5ff8c}.student-notif-card.unread:before{content:"";background:var(--tutto-primary);width:4px;position:absolute;top:0;bottom:0;left:0}.student-notif-card.attention,.student-notif-list-item.attention{background:#fff7edb8;border-color:#f59e0b59}.student-notif-card.attention:before,.student-notif-list-item.attention:before{content:"";background:#d97706;width:4px;position:absolute;top:0;bottom:0;left:0}.student-notif-section{margin-top:20px}.student-notif-section-title{color:var(--tutto-text-primary,#111827);margin:0 0 8px;font-size:16px;font-weight:700}.student-notif-section-desc{color:#6b7280;margin:0 0 12px;font-size:13px;line-height:1.45}.student-notif-section--attention .student-notif-section-title{color:#92400e}.student-notif-attention-row{align-items:center;gap:6px;margin-bottom:6px;display:flex}.student-notif-attention-label{color:#b45309;letter-spacing:.01em;font-size:11px;font-weight:700}.student-notif-acknowledged-row{align-items:center;gap:6px;margin-bottom:6px;display:flex}.student-notif-list-item.parent-acknowledged{background:#fafafa;border-color:#e5e7eb}.student-notif-acknowledged-label{color:#6b7280;letter-spacing:.01em;font-size:11px;font-weight:700}.student-user-right{flex-shrink:0;align-items:center;gap:8px;display:inline-flex}.student-notif-card-inner{padding:16px 16px 16px 18px}.student-notif-card-top{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.student-notif-card-type{align-items:center;gap:6px;min-width:0;display:inline-flex}.student-notif-card-time{color:#9ca3af;flex-shrink:0;font-size:.75rem;font-weight:600;line-height:1.35}.student-notif-unread-row{align-items:center;gap:6px;margin-top:8px;display:inline-flex}.student-notif-unread-label{color:var(--tutto-primary);font-size:.6875rem;font-weight:700}.student-notif-title.unread{font-weight:800}.student-notif-card .student-notif-title{color:var(--tutto-text-primary);margin:10px 0 0;font-size:.9375rem;line-height:1.4}.student-notif-card .student-notif-msg{color:#4b5563;white-space:pre-line;margin:8px 0 0;font-size:.875rem;line-height:1.55}.student-notif-card-footer--action-only{justify-content:flex-end}.student-notif-card-footer{border-top:1px solid #eef2f7;justify-content:space-between;align-items:center;gap:10px;margin-top:12px;padding-top:10px;display:flex}.student-notif-card-context{color:#6b7280;min-width:0;font-size:.8125rem;font-weight:600;line-height:1.4}.student-notif-card-arrow{color:var(--tutto-primary);flex-shrink:0;font-size:.875rem;font-weight:700}.student-notif-skeleton-list{flex-direction:column;gap:10px;margin-bottom:12px;display:flex}.student-notif-skeleton-card{border:1.5px solid var(--tutto-primary-soft);background:#fff;border-radius:14px;padding:16px}.student-notif-skeleton-top{align-items:center;gap:8px;margin-bottom:12px;display:flex}.student-notif-skeleton-icon{background:linear-gradient(90deg,#eef2f7 25%,#f8fafc 50%,#eef2f7 75%) 0 0/200% 100%;border-radius:8px;width:24px;height:24px;animation:1.2s infinite student-notif-shimmer}.student-notif-skeleton-line{background:linear-gradient(90deg,#eef2f7 25%,#f8fafc 50%,#eef2f7 75%) 0 0/200% 100%;border-radius:999px;height:10px;animation:1.2s infinite student-notif-shimmer;display:block}.student-notif-skeleton-line--xs{width:48px;margin-left:auto}.student-notif-skeleton-line--sm{width:72px}.student-notif-skeleton-line--md{width:55%;margin-bottom:8px}.student-notif-skeleton-line--lg{width:88%;margin-bottom:8px}@keyframes student-notif-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.student-notif-list-item{text-align:left;width:100%;display:block}.student-notif-list-item.compact{cursor:pointer;font:inherit;color:inherit;background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:10px 12px}.student-notif-list-item.compact.unread{border-color:var(--tutto-primary-border);background:#eef5ffa6}.student-notif-list-item.unread:not(.compact){border-color:var(--tutto-primary-border)}.student-notif-list-item:focus-visible,.student-notif-card:focus-visible{outline:2px solid var(--tutto-primary);outline-offset:2px}.student-notif-item-row{align-items:flex-start;gap:10px;display:flex}.student-notif-icon{flex-shrink:0;font-size:1.25rem;line-height:1}.student-notif-content{flex:1;min-width:0}.student-notif-item-top{align-items:center;gap:6px;margin-bottom:2px;display:flex}.student-notif-category{color:var(--tutto-primary);letter-spacing:.01em;font-size:.72rem;font-weight:800}.student-notif-dot{background:var(--tutto-primary);border-radius:50%;flex-shrink:0;width:8px;height:8px}.student-notif-title{font-size:.9rem;font-weight:600}.student-notif-msg{color:#6b7280;margin-top:2px;font-size:.85rem}.student-notif-date{color:#9ca3af;margin-top:4px;font-size:.8rem}.student-bottom-nav.bottom-nav{max-width:var(--bottom-nav-max-width)}@media (width>=480px){.student-photo-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width>=768px){.student-page-body{padding-left:24px;padding-right:24px}.student-metric-grid,.student-photo-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.student-home-section .student-hw-list--compact{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.student-hw-list--page{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}}@media (width>=1024px){.student-page-hdr,.student-user-bar{max-width:var(--app-page-max-standard);width:100%;margin-left:auto;margin-right:auto}}@media (width>=768px){.student-feedback-detail{border-radius:var(--flora-card-radius,16px);width:min(720px,100vw - 32px);max-width:none;max-height:min(100vh - 48px,720px);inset:50% auto auto 50%;transform:translate(-50%,-50%)}.student-fb-photo-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.student-fb-photo-grid:has(.student-fb-photo-item:only-child){grid-template-columns:minmax(0,160px)}}@media (width<=359px){.student-metric-grid{gap:8px}.student-fb-actions-row{grid-template-columns:1fr}.student-star-rating--lg .student-star-rating-stars{font-size:24px}}.student-home-inline-status{color:#6b7280;background:#fff;border:1px solid #e5e7eb;border-radius:12px;margin:0;padding:12px 14px;font-size:13px}.student-session-list{flex-direction:column;gap:10px;display:flex}.student-session-list--compact{gap:8px}.student-session-card{text-align:left;cursor:pointer;width:100%;color:inherit;box-shadow:0 1px 3px rgba(var(--tutto-primary-rgb), .05);background:#fff;border:1px solid #e5e7eb;border-radius:14px;margin:0;padding:14px;font-family:inherit;transition:transform .12s,box-shadow .12s;display:block}.student-session-card:hover{box-shadow:var(--tutto-interactive-hover-shadow);border-color:var(--tutto-primary-border);transform:translateY(-1px)}.student-session-card:active{border-color:var(--tutto-primary-border);box-shadow:var(--tutto-interactive-active-glow);transform:scale(.99)}.student-session-card-top{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.student-session-card-subject{color:#111827;font-size:15px;font-weight:800;line-height:1.35}.student-session-card-status{color:#4b5563;background:#f3f4f6;border-radius:999px;flex-shrink:0;padding:2px 8px;font-size:11px;font-weight:700;line-height:1.4}.student-session-card-status--scheduled{color:#1d4ed8;background:#dbeafe}.student-session-card-status--completed{color:#065f46;background:#d1fae5}.student-session-card-status--cancelled{color:#6b7280;background:#f3f4f6}.student-session-card-time,.student-session-card-date,.student-session-card-meta{color:#4b5563;margin:6px 0 0;font-size:13px;line-height:1.45}.student-session-card-meta{color:#6b7280;overflow-wrap:anywhere;font-size:12px}.student-session-card-makeup{color:#92400e;background:#fffbeb;border-radius:10px;margin:8px 0 0;padding:8px 10px;font-size:12px;font-weight:600;line-height:1.45}@media (width>=768px){.student-home-section .student-session-list:not(.student-session-list--compact){grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}}:root{--student-sidebar-width:var(--app-sidebar-width,208px);--student-content-max:1180px;--student-content-wide-max:1180px;--student-dashboard-max:1180px;--student-reading-max:720px;--student-header-measure:1060px;--student-page-gutter-tablet:24px;--student-page-gutter-desktop:36px;--student-page-top:30px;--student-header-gap:24px;--student-header-desc-gap:6px;--student-header-body-gap:24px;--student-header-summary-reserve:calc(7px + 1.25rem);--student-section-gap:24px;--student-control-height:42px;--student-chip-height:36px;--student-radius-control:10px;--student-radius-panel:16px;--student-grid-gap:24px;--student-frame-gutter-total:calc(var(--student-page-gutter-desktop) * 2);--student-main-available:calc(100vw - var(--student-sidebar-width) - var(--student-frame-gutter-total))}@media (width>=1280px){:root{--student-page-gutter-desktop:40px;--student-frame-gutter-total:calc(var(--student-page-gutter-desktop) * 2)}}@media (width>=1600px){:root{--student-content-max:min(1680px, max(1180px, var(--student-main-available)));--student-content-wide-max:min(1680px, max(1180px, var(--student-main-available)));--student-dashboard-max:min(1400px, max(1180px, var(--student-main-available)))}}@media (width>=2560px){:root{--student-content-max:min(1760px, max(1180px, var(--student-main-available)));--student-content-wide-max:min(1760px, max(1180px, var(--student-main-available)));--student-dashboard-max:min(1480px, max(1180px, var(--student-main-available)))}}@media (width>=768px){.student-shell.app-shell--with-sidebar .app-shell-main{padding-top:var(--student-page-top);padding-inline:var(--student-page-gutter-tablet);box-sizing:border-box}}@media (width>=1024px){.student-shell.app-shell--with-sidebar .app-shell-main{padding-inline:var(--student-page-gutter-desktop)}}.student-page.app-page{--app-page-active-max:var(--student-content-max);--shell-content-width:var(--student-content-max);width:100%}.student-page--home.app-page,.student-home-page.app-page{--app-page-active-max:var(--student-dashboard-max);--shell-content-width:var(--student-dashboard-max)}.student-planner-page.app-page,.student-timetable-page.app-page{--app-page-active-max:var(--student-content-wide-max);--shell-content-width:var(--student-content-wide-max)}.student-page.app-page .app-page-inner{width:100%;max-width:var(--app-page-active-max);box-sizing:border-box;margin-inline:auto;padding-left:0;padding-right:0}.student-surface,.student-surface--frame-standard{width:100%;max-width:var(--app-page-active-max);box-sizing:border-box;margin-inline:auto}.student-surface--frame-wide,.student-surface--frame-dashboard{max-width:var(--student-content-wide-max)}.student-page--home .student-surface--frame-dashboard{max-width:var(--student-dashboard-max)}.student-page-stack{flex-direction:column;gap:0;display:flex}.student-page-stack>*+*{margin-top:var(--student-section-gap)}.student-page .flora-page-header,.student-page .student-page-hdr.flora-page-header,.student-page .student-page-hdr.flora-secondary-header,.student-page .qa-page-header.flora-page-header,.student-page .timetable-page-header.flora-page-header,.student-page .dashboard-hdr--workspace{margin:0 0 var(--student-header-body-gap);z-index:auto;background:0 0;padding:0;position:static;top:auto}.student-page .student-page-hdr.flora-secondary-header{max-width:var(--student-header-measure);grid-template-columns:auto minmax(0,1fr) auto;align-items:start;column-gap:8px;width:100%;min-height:72px;display:grid}.student-page .flora-secondary-header-title{letter-spacing:-.02em;color:var(--tutto-text-primary);margin:0;font-size:clamp(1.375rem,2vw,1.75rem);font-weight:800;line-height:1.25}.student-page .flora-page-header-row,.student-page .dashboard-hdr-inner.student-dashboard-hdr-inner{column-gap:var(--student-header-gap);max-width:var(--student-header-measure);grid-template-columns:minmax(0,1fr) auto;align-items:start;width:100%;min-height:72px;display:grid}.student-page--management .flora-page-header-row,.student-page--management .qa-page-header.flora-page-header .flora-page-header-row,.student-page--management .student-page-hdr.flora-page-header .flora-page-header-row,.student-page--management .student-page-hdr.flora-secondary-header{width:100%;max-width:none}.student-page--management .qa-page-header.flora-page-header,.student-page--management .student-page-hdr.flora-page-header{box-sizing:border-box;width:100%;max-width:none}.student-page .flora-page-header-row:not(:has(.flora-page-header-action)){grid-template-columns:minmax(0,1fr)}.student-page .flora-page-header-title,.student-page .dashboard-greeting{letter-spacing:-.02em;color:var(--tutto-text-primary);margin:0;font-size:clamp(1.375rem,2vw,1.75rem);font-weight:800;line-height:1.25}.student-page .flora-page-header-desc,.student-page .dashboard-hdr-summary{margin-top:var(--student-header-desc-gap);color:var(--tutto-text-secondary);font-size:.875rem;font-weight:500;line-height:1.45}.student-page .flora-page-header-copy:not(:has(.flora-page-header-summary)){padding-bottom:var(--student-header-summary-reserve)}.student-page .flora-page-header-action{align-self:start;padding-top:0}.student-page .student-page-body,.student-page .flora-page-body{padding-bottom:24px;padding-left:0;padding-right:0}.student-panel{border:1px solid var(--tutto-border);border-radius:var(--student-radius-panel);background:var(--tutto-surface);box-shadow:0 1px 2px rgba(var(--tutto-primary-rgb), .04);box-sizing:border-box;padding:20px}.student-panel--accent-blue{border-top:3px solid #2165c159}.student-panel--accent-lime{border-top:3px solid #d6e7a7}.student-panel--accent-sage{border-top:3px solid #a6c69b}.student-panel-hdr{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;padding:0;display:flex}.student-panel-title{color:var(--tutto-text-primary);margin:0;font-size:1.0625rem;font-weight:750;line-height:1.35}.student-panel-body{min-width:0;padding:0}.student-action-row{flex-wrap:wrap;gap:10px;display:flex}.student-action-chip{min-height:var(--student-chip-height);border:1px solid var(--tutto-border);background:var(--tutto-surface);color:inherit;font:inherit;cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:0 14px;font-size:.8125rem;font-weight:700;text-decoration:none;transition:background .15s,border-color .15s;display:inline-flex}.student-action-chip:hover{background:var(--tutto-primary-soft-2);border-color:rgba(var(--tutto-primary-rgb), .2)}.student-action-chip--primary{border-color:rgba(var(--tutto-primary-rgb), .22);background:var(--tutto-primary-soft);color:var(--tutto-primary)}.student-action-chip--warn{color:#92400e;background:#fffbeb;border-color:#fde68a}.student-action-chip--lime{border-color:var(--tutto-lime-border);background:var(--tutto-lime-soft);color:#5c6b2f}.student-action-chip--sage{border-color:var(--tutto-sage-border);background:var(--tutto-sage-soft);color:var(--tutto-sage-text)}.student-action-chip-value{font-size:1rem;font-weight:800;line-height:1}.student-state--empty{border:1px dashed var(--tutto-border);border-radius:var(--student-radius-panel);background:var(--tutto-primary-soft-2);flex-direction:column;align-items:flex-start;gap:8px;max-width:520px;padding:20px 18px;display:flex}.student-state--empty-panel{text-align:center;background:0 0;border:none;justify-content:center;align-items:center;width:100%;max-width:none;min-height:150px;padding:20px 12px}.student-state--empty-panel .student-state-icon{border-radius:12px;width:44px;height:44px}.student-state-icon{background:var(--tutto-primary-soft);width:40px;height:40px;color:var(--tutto-primary);border-radius:12px;justify-content:center;align-items:center;display:inline-flex}.student-state-title{color:var(--tutto-text-primary);margin:0;font-size:.9375rem;font-weight:800}.student-state-desc{color:var(--tutto-text-secondary);margin:0;font-size:.8125rem;line-height:1.45}.student-home-page .student-dashboard-hdr{margin:0 0 var(--student-header-body-gap);background:0 0;padding:0}.student-home-page .student-dashboard-hdr-inner{grid-template-columns:minmax(0,1fr) auto;align-items:start;column-gap:24px;width:100%;max-width:none;min-height:72px;display:grid}.student-home-page .student-dashboard-greeting{letter-spacing:-.02em;color:var(--tutto-text-primary);margin:0;font-size:clamp(1.375rem,2vw,1.75rem);font-weight:800;line-height:1.25}.student-home-page .student-dashboard-summary{color:var(--tutto-text-secondary);margin:6px 0 0;font-size:.875rem;font-weight:500;line-height:1.45}.student-home-page .student-dashboard-hdr-meta{place-self:start end}.student-home-page .student-dashboard-hdr-meta .dashboard-datetime{flex-direction:column;align-items:flex-end;gap:3px;display:flex}.student-home-page .student-dashboard-hdr-meta .dashboard-hdr-date{color:var(--tutto-text-secondary);font-size:.8125rem;font-weight:600;line-height:1.35}.student-home-page .student-dashboard-hdr-meta .dashboard-hdr-clock,.student-home-page .student-dashboard-hdr-meta .dashboard-clock-time{letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--tutto-primary);font-size:1.375rem;font-weight:800;line-height:1.1}.student-home-page .student-dashboard-hdr-meta .dashboard-datetime-cluster{flex-direction:column;align-items:flex-end;gap:10px;display:flex}.app-notif-bell--dashboard{justify-content:flex-end;display:flex}.app-notif-bell--dashboard .student-notif-btn{border:1px solid var(--tutto-border);background:var(--tutto-surface);border-radius:10px;justify-content:center;align-items:center;width:36px;height:36px;transition:background .15s,border-color .15s;display:inline-flex}.app-notif-bell--dashboard .student-notif-btn:hover{background:var(--tutto-primary-soft);border-color:var(--tutto-primary-border)}.app-notif-bell--dashboard .student-notif-btn:focus-visible{outline:2px solid var(--tutto-primary);outline-offset:2px}.student-home-workspace{flex-direction:column;gap:24px;display:flex}.student-home-metrics .dashboard-metric-grid{width:100%}.student-home-main-grid{gap:var(--student-grid-gap);flex-direction:column;display:flex}.student-home-main-column,.student-home-side-column{gap:var(--student-grid-gap);flex-direction:column;min-width:0;display:flex}.student-panel--dashboard,.student-panel--dashboard .student-panel-body{min-height:0}.student-home-analytics-grid{gap:var(--student-grid-gap);grid-template-columns:1fr;margin-top:0;display:grid}.student-home-analytics-inline{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.student-home-analytics-grid .student-metric-card,.student-home-analytics-inline .student-metric-card{min-height:96px}.student-home-analytics-inline .student-metric-card{border-radius:var(--student-radius-panel);padding:14px 16px}.student-home-analytics-grid .student-metric-card{min-height:112px}.student-home-assignment-list{flex-direction:column;gap:10px;display:flex}@media (width>=1024px){.student-home-main-grid{gap:var(--student-grid-gap);grid-template-columns:minmax(0,1.55fr) minmax(300px,1fr);align-items:stretch;display:grid}.student-home-main-column{min-height:100%}.student-home-main-column>.student-panel--dashboard,.student-home-main-column>.student-home-assignment-overview{flex-direction:column;flex:1 1 0;min-height:0;display:flex}.student-home-main-column>.student-panel--dashboard .student-panel-body,.student-home-main-column>.student-home-assignment-overview .student-panel-body{flex-direction:column;flex:auto;min-height:0;display:flex}:is(.student-home-main-column>.student-panel--dashboard .student-panel-body:has(.student-state--empty-panel),.student-home-main-column>.student-home-assignment-overview .student-panel-body:has(.student-state--empty-panel)){justify-content:center}.student-home-analytics-inline{flex:none;gap:16px}.student-home-analytics-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}}@media (width>=768px) and (width<=1023px){.student-home-side-column{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.student-home-side-column .student-panel:last-child{grid-column:1/-1}.student-home-analytics-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}}.student-planner-layout{gap:var(--student-grid-gap);flex-direction:column;display:flex}.student-planner-main{width:100%;min-width:0}.student-planner-surface{padding:18px 20px 20px}.student-planner-surface .student-planner-header{margin-bottom:16px}.student-planner-status-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 16px;display:flex}.student-planner-sections{gap:var(--student-grid-gap,24px);flex-direction:column;display:flex}@media (width>=1024px){.student-planner-layout{display:block}}.student-content-surface{border:1px solid var(--tutto-border);border-radius:var(--student-radius-panel);background:var(--tutto-surface);width:100%;box-shadow:0 1px 2px rgba(var(--tutto-primary-rgb), .04);box-sizing:border-box}.student-content-surface__toolbar{flex-direction:column;gap:12px;padding:16px 18px 0;display:flex}.student-content-surface__body{box-sizing:border-box;min-height:240px;padding:16px 18px 18px}.student-content-surface__body .student-state--empty{background:0 0;border:none;max-width:none;margin:0}.student-mgmt-surface,.student-hw-surface{flex-direction:column;gap:0;padding:20px;display:flex}.student-mgmt-summary-section,.student-hw-summary-section{border-bottom:1px solid var(--tutto-border);padding-bottom:20px}.student-mgmt-filter-section,.student-hw-filter-section{border-bottom:1px solid var(--tutto-border);padding:20px 0}.student-mgmt-filter-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.student-mgmt-filter-header .student-mgmt-section-label{margin:0}.student-mgmt-filter-action{flex-shrink:0;align-items:center;gap:8px;display:inline-flex}@media (width>=768px){.notification-filter-heading-row{align-items:center;min-height:40px;margin-bottom:10px}.notification-filter-heading-row .notification-filter-heading{margin:0;line-height:1.3}.notification-refresh--toolbar{display:none!important}.notification-mark-all-action{border-radius:var(--tutto-radius-sm,10px);border:1px solid var(--tutto-primary-border);background:var(--tutto-primary-soft);min-height:38px;color:var(--tutto-primary);cursor:pointer;white-space:nowrap;box-sizing:border-box;justify-content:center;align-items:center;gap:6px;padding:0 16px;font-family:inherit;font-size:.8125rem;font-weight:700;line-height:1.2;transition:background .16s,border-color .16s,color .16s;display:inline-flex}.notification-mark-all-action__icon{justify-content:center;align-items:center;width:16px;height:16px;font-size:.75rem;font-weight:800;line-height:1;display:inline-flex}.notification-mark-all-action:hover:not(:disabled){background:color-mix(in srgb, var(--tutto-primary-soft) 70%, #fff);border-color:var(--tutto-primary);color:var(--tutto-primary-hover)}.notification-mark-all-action:disabled{opacity:.55;cursor:not-allowed}.notification-mark-all-action:focus-visible{outline:2px solid var(--tutto-primary);outline-offset:2px}.student-notifications-page .student-mgmt-filter-action,.parent-notifications-page .student-mgmt-filter-action,.teacher-notifications-page .student-mgmt-filter-action{align-items:center;display:inline-flex!important}}.student-mgmt-filter-subrow{margin-top:14px}.student-mgmt-filter-subrow .student-mgmt-section-label{margin:0 0 10px}.student-mgmt-section-label,.student-hw-section-label{color:var(--tutto-text-secondary);margin:0 0 10px;font-size:.8125rem;font-weight:700}.student-mgmt-filter-section .student-hw-filter-row,.student-mgmt-filter-section .filter-chip-row,.student-hw-filter-section .student-hw-filter-row,.student-hw-filter-section .filter-chip-row{margin:0}.student-mgmt-result-section,.student-hw-result-section{padding-top:18px}.student-mgmt-result-meta,.student-hw-result-meta{color:var(--tutto-text-secondary);margin:0 0 14px;font-size:.8125rem;font-weight:700}.student-mgmt-result-body,.student-hw-result-body{flex-direction:column;min-height:240px;display:flex}.student-mgmt-result-body .student-state--empty-panel,.student-hw-result-body .student-state--empty-panel{flex:1;min-height:220px}.student-mgmt-summary-bar,.student-hw-summary-bar{color:var(--tutto-text-secondary);flex-wrap:wrap;gap:10px 20px;font-size:.8125rem;font-weight:600;display:flex}.student-mgmt-summary-bar strong,.student-hw-summary-bar strong{color:var(--tutto-text-primary)}.student-planner-empty-region{justify-content:center;align-items:center;width:100%;min-height:180px;display:flex}.student-planner-empty-region .student-state--empty-panel{min-height:150px}.student-planner-share-bottom{border-top:1px solid var(--tutto-border);margin-top:8px;padding-top:20px}.student-planner-share-bottom .planner-bottom-share{flex-direction:column;align-items:stretch;gap:10px;width:100%;display:flex}.student-planner-share-bottom .planner-bottom-section-title,.student-planner-share-bottom .planner-bottom-muted,.student-planner-share-bottom .planner-bottom-share-status{margin:0}.student-planner-share-bottom .planner-bottom-share-btn--primary{align-self:flex-start;width:100%;min-width:140px;max-width:280px;margin-top:0}.student-planner-share-bottom .planner-bottom-share-dirty-row{flex-wrap:wrap;align-items:center;gap:10px 12px;width:100%;display:flex}.student-home-analytics-grid .student-metric-card--sage,.student-home-analytics-inline .student-metric-card--sage{border-top:3px solid #a6c69b}.student-home-analytics-grid .student-metric-card--lime,.student-home-analytics-inline .student-metric-card--lime{border-top:3px solid #d6e7a7}.student-home-analytics-grid .student-metric-card{border-radius:var(--student-radius-panel);min-height:112px;padding:18px 20px}.student-feedback-page .student-feedback-list{width:100%;max-width:none}.student-feedback-page .student-feedback-card{box-sizing:border-box;width:100%;max-width:none}.student-notif-section-title{margin:0 0 12px}.student-notif-section:first-child .student-notif-section-title{margin-top:0}.student-notif-section+.student-notif-section{border-top:1px solid var(--tutto-border);margin-top:24px;padding-top:24px}.student-feedback-page .student-page-body,.student-notifications-page .student-page-body{flex-direction:column;gap:16px;display:flex}.student-reading-column{width:100%;max-width:none}@media (width>=768px){.student-questions-page .qa-page-fab,.student-questions-page .student-state--empty .hub-primary-btn{display:none}}@media (width<=767px){.student-questions-page .flora-page-header-action{display:none}}@media (width>=768px){.student-page.student-timetable-page .timetable-page-header{padding-top:0;padding-left:0;padding-right:0}.student-page.student-timetable-page .timetable-calendar-shell,.student-page.student-timetable-page .timetable-legend-row{width:100%;margin-left:0;margin-right:0}.student-page.student-timetable-page .timetable-calendar-toolbar{box-sizing:border-box;grid-template-rows:auto auto;grid-template-columns:minmax(0,1fr);gap:10px;width:100%;max-width:none;padding:14px 20px 12px;display:grid}.student-page.student-timetable-page .timetable-week-nav{grid-row:1;justify-self:center;gap:8px;width:max-content;max-width:calc(100% - 40px);min-height:48px;padding:0}.student-page.student-timetable-page .timetable-week-nav-label{font-size:.9375rem;font-weight:700}.student-page.student-timetable-page .timetable-week-nav-arrow{width:36px;height:36px;font-size:1.125rem}.student-page.student-timetable-page .timetable-week-nav-today{border-radius:8px;padding:6px 12px;font-size:.8125rem}.student-page.student-timetable-page .timetable-legend-inline{grid-row:2;place-self:end;max-width:100%;margin:0}.student-page.student-timetable-page .timetable-legend{gap:8px}.student-page.student-timetable-page .timetable-legend-item{gap:5px;height:22px;padding:0 8px;font-size:.6875rem}.student-page.student-timetable-page .timetable-legend-multi-swatch-dot{width:8px;height:8px}}@media (width>=768px) and (width<=1023px){.student-page.student-timetable-page .timetable-calendar-toolbar{padding-inline:16px}.student-page.student-timetable-page .timetable-week-nav{max-width:100%}.student-page.student-timetable-page .timetable-legend-inline{justify-self:stretch}}.student-timetable-page .timetable-calendar-shell,.student-timetable-page .timetable-page-content{width:100%}.student-page .filter-chip{min-height:var(--student-chip-height);border-radius:999px;font-size:.8125rem;font-weight:700}.student-page .filter-chip.active{background:var(--tutto-primary-soft);border-color:rgba(var(--tutto-primary-rgb), .25);color:var(--tutto-primary)}.parent-user-bar{align-items:flex-start}.parent-user-bar .student-user-right{gap:14px;margin-left:12px;padding-left:4px}.parent-user-bar .student-notif-btn,.parent-user-bar .logout-btn{min-width:44px;min-height:44px}.parent-user-bar .logout-btn{margin-left:2px}.parent-user-title{color:var(--tutto-text-primary);font-size:14px;font-weight:800;display:block}.parent-user-subtitle{color:#6b7280;margin-top:2px;font-size:12px;display:block}.parent-page-header{padding:8px var(--app-page-gutter,16px) 0}.parent-page-title{color:var(--tutto-text-primary);margin:0;font-size:20px;font-weight:800}.parent-notifications-page .student-page-body,.parent-home-page .student-page-body{padding-bottom:var(--page-floating-action-clearance,120px)}.parent-home-body{flex-direction:column;gap:28px;display:flex}.parent-home-header{padding:4px 0 0}.parent-home-greeting{color:var(--tutto-text-primary);margin:0;font-size:18px;font-weight:600;line-height:1.45}.parent-home-greeting+.parent-home-greeting{margin-top:6px}.parent-home-date{color:var(--tutto-text-secondary);margin:14px 0 0;font-size:14px;font-weight:500;line-height:1.5}.parent-home-section{flex-direction:column;gap:12px;display:flex}.parent-section-title{color:var(--tutto-text-primary);margin:0;font-size:16px;font-weight:800}.parent-home-section .student-section-hdr{margin-bottom:0}.parent-attention-hw-card,.parent-upcoming-session-card{border:1px solid var(--tutto-border-subtle,#e5e7eb);border-radius:var(--student-radius-panel,16px);text-align:left;cursor:pointer;background:#fff;flex-direction:column;align-items:flex-start;gap:4px;width:100%;padding:14px 16px;font-family:inherit;transition:border-color .15s,box-shadow .15s;display:flex;box-shadow:0 1px 2px #0f172a0a}.parent-attention-hw-card:hover,.parent-upcoming-session-card:hover{border-color:var(--tutto-primary-border);box-shadow:0 2px 8px #1769d214}.parent-upcoming-session-card{border-color:var(--tutto-lime-border,#d9e8a8);background:var(--tutto-lime-soft-2,#f7fbe8)}.parent-attention-hw-status--feedback{background:var(--tutto-sage-soft,#ecfdf5);color:var(--tutto-sage-strong,#065f46)}.parent-class-list{flex-direction:column;gap:12px;display:flex}.parent-class-card{border:1px solid var(--tutto-border-subtle,#e5e7eb);border-radius:var(--student-radius-panel,16px);background:#fff;padding:16px;box-shadow:0 1px 2px #0f172a0a}.parent-notifications-page .student-notif-list,.parent-hw-page .student-hw-list--page{width:100%}.parent-summary-grid{display:none}.parent-summary-metric{border:1.5px solid var(--tutto-primary-soft);color:inherit;box-sizing:border-box;background:#fff;border-radius:14px;flex-direction:column;gap:2px;min-height:88px;padding:14px 14px 12px;text-decoration:none;transition:border-color .15s;display:flex}button.parent-summary-metric,a.parent-summary-metric{cursor:pointer}a.parent-summary-metric:hover{border-color:var(--tutto-primary-border)}.parent-summary-metric-label{color:var(--tutto-text-secondary);font-size:13px;font-weight:700;line-height:1.3}.parent-summary-metric-value{color:var(--tutto-text-primary);letter-spacing:-.02em;font-size:1.5rem;font-weight:800;line-height:1.1}.parent-summary-metric-hint{color:#9ca3af;margin-top:2px;font-size:12px}.parent-summary-metric--primary{border-color:var(--tutto-primary-border);background:var(--tutto-primary-soft-2)}.parent-summary-metric--primary .parent-summary-metric-value{color:var(--tutto-text-primary)}.parent-summary-metric--warn{background:#fffbeb;border-color:#fde68a}.parent-summary-metric--warn .parent-summary-metric-value{color:#b45309}.parent-summary-metric--urgent{background:#fef2f2;border-color:#fecaca}.parent-summary-metric--urgent .parent-summary-metric-value{color:#b91c1c}.parent-summary-note{color:#6b7280;margin:0;font-size:13px}.parent-inline-status,.parent-empty-line{color:var(--tutto-text-secondary);margin:0;font-size:14px;line-height:1.5}.parent-empty-subline{color:#9ca3af;margin:4px 0 0;font-size:13px}.parent-attention-empty{padding:8px 0 4px}.parent-upcoming-session-list{flex-direction:column;gap:10px;display:flex}.parent-upcoming-session-subject{color:var(--tutto-text-primary);font-size:15px;font-weight:800}.parent-upcoming-session-date{color:var(--tutto-text-secondary);font-size:14px;font-weight:600}.parent-upcoming-session-time{color:var(--tutto-text-secondary);font-size:14px}.parent-attention-hw-list{flex-direction:column;gap:10px;display:flex}.parent-attention-hw-subject{color:var(--tutto-primary);font-size:12px;font-weight:700}.parent-attention-hw-title{color:var(--tutto-text-primary);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:15px;font-weight:700;line-height:1.35;display:-webkit-box;overflow:hidden}.parent-attention-hw-meta{flex-wrap:wrap;align-items:center;gap:8px;margin-top:4px;display:flex}.parent-attention-hw-status{color:#4b5563;background:#f3f4f6;border-radius:999px;padding:3px 8px;font-size:12px;font-weight:700}.parent-attention-hw-status--missing{color:#b91c1c;background:#fef2f2}.parent-attention-hw-status--late{color:#b45309;background:#fffbeb}.parent-attention-hw-status--feedback{color:#065f46;background:#ecfdf5}.parent-attention-hw-due{color:#6b7280;font-size:13px}.parent-class-summary-list,.parent-class-list{flex-direction:column;gap:12px;display:flex}.parent-class-summary-item .cls-detail-card,.parent-class-card-cycle .cls-detail-card{margin:0}.parent-class-card{border:1.5px solid var(--tutto-primary-soft);background:#fff;border-radius:16px;padding:16px}.parent-class-card-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px;display:flex}.parent-class-section-title{color:var(--tutto-text-primary);margin:0 0 10px;font-size:15px;font-weight:800}.parent-class-section+.parent-class-section{margin-top:20px}.parent-readonly-memo{white-space:pre-wrap;color:var(--tutto-text-secondary);margin:0;line-height:1.6}.parent-page-subtitle{color:var(--tutto-text-secondary);margin:0 0 14px;font-size:14px;line-height:1.5}.parent-class-card-progress{border-top:1px solid #eef5f0;margin-top:10px;padding-top:10px}.parent-class-cycle-line{color:var(--tutto-primary);margin:0;font-size:14px;font-weight:700}.parent-class-progress-line{color:var(--tutto-text-secondary);margin:4px 0 0;font-size:14px}.parent-class-card--ended{opacity:.82;background:#f8faf9;border-color:#e5ebe8}.parent-class-card--ended .cls-list-subject,.parent-class-card--ended .cls-list-title{color:var(--tutto-text-secondary)}.parent-hw-detail-page .student-page-body{flex-direction:column;gap:16px;display:flex}.parent-hw-status-block{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.parent-hw-status-badge{border-radius:999px;padding:4px 10px;font-size:13px;font-weight:700}.parent-hw-status-badge--missing{color:#b91c1c;background:#fef2f2}.parent-hw-status-badge--late{color:#b45309;background:#fffbeb}.parent-hw-status-badge--submitted{color:#065f46;background:#ecfdf5}.parent-hw-status-badge--resubmission{color:#b45309;background:#fffbeb}.parent-hw-status-badge--resubmission-pending{color:#1d4ed8;background:#eff6ff}.parent-hw-card-reason{color:var(--tutto-text-secondary);margin:8px 0 0;font-size:13px;line-height:1.45}.parent-hw-effective-due{margin-top:4px}.parent-hw-resubmission-panel .hub-section-title,.parent-hw-verified-panel .hub-section-title{align-items:center;gap:8px;display:flex}.parent-hw-resubmission-panel{background:#fffdf5;border-color:#fde68a}.parent-hw-verified-panel{background:#f8faff;border-color:#c7d2fe}.parent-hw-attempt-label{color:var(--tutto-primary);margin-left:8px;font-size:12px;font-weight:600}.parent-hw-detail-page .parent-detail-body{flex-direction:column;gap:16px;display:flex}.parent-hw-history-loading{color:var(--tutto-text-secondary);margin:0;font-size:14px}.parent-hw-history-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.parent-hw-history-item{grid-template-columns:24px 1fr;align-items:flex-start;gap:10px;display:grid}.parent-hw-history-icon{width:24px;height:24px;color:var(--tutto-primary);background:#eff6ff;border-radius:999px;justify-content:center;align-items:center;display:inline-flex}.parent-hw-history-item--success .parent-hw-history-icon{color:#059669;background:#ecfdf5}.parent-hw-history-item--amber .parent-hw-history-icon{color:#b45309;background:#fffbeb}.parent-hw-history-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.parent-hw-history-label{color:var(--tutto-text-primary);font-size:14px;font-weight:600}.parent-hw-history-time{color:var(--tutto-text-secondary);white-space:nowrap;font-size:12px}.parent-hw-history-detail{color:var(--tutto-text-secondary);margin:4px 0 0;font-size:13px;line-height:1.45}.parent-attention-hw-status--resubmission{color:#b45309;background:#fffbeb}.parent-hw-status-detail{color:var(--tutto-text-secondary);margin:0;font-size:14px}.parent-hw-photo-grid{margin-top:12px}.parent-hw-detail-feedback{margin-top:0}.parent-bottom-nav .bottom-nav-label{font-size:11px}@media (width>=768px){.parent-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.parent-summary-metric-value{font-size:1.5rem}}@media (width>=1024px){.parent-home-body{gap:32px}.parent-upcoming-session-list,.parent-attention-hw-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}}@media (width<=389px){.parent-home-greeting{font-size:17px}.parent-summary-metric-value{font-size:1.5rem}.parent-summary-metric-label{font-size:12px}.parent-summary-metric{min-height:80px;padding:12px}}@media (width>=768px){.parent-hw-page .student-hw-list--page{grid-template-columns:unset;flex-direction:column;gap:12px;display:flex}.parent-hw-page .parent-hw-card,.parent-hw-page .student-hw-card--list{width:100%;max-width:none}}.parent-shell.app-shell--with-sidebar .app-shell-main{padding-top:var(--student-page-top,30px)}@media (width>=768px){.parent-shell.app-shell--with-sidebar .app-shell-main{padding-inline:var(--student-page-gutter-tablet,24px)}}@media (width>=1024px){.parent-shell.app-shell--with-sidebar .app-shell-main{padding-inline:var(--student-page-gutter-desktop,36px)}}.parent-page.app-page{--app-page-active-max:var(--student-content-max,1180px);--shell-content-width:var(--student-content-max,1180px);width:100%}.parent-timetable-page.app-page,.parent-page--wide.app-page{--app-page-active-max:var(--student-content-wide-max,1180px);--shell-content-width:var(--student-content-wide-max,1180px)}.parent-page--management.app-page{--app-page-active-max:var(--student-content-max,1180px)}.parent-page--reading.app-page{--app-page-active-max:var(--student-reading-max,720px);--shell-content-width:var(--student-reading-max,720px)}.parent-page.app-page .app-page-inner,.parent-surface,.parent-surface--frame-standard{width:100%;max-width:var(--app-page-active-max);box-sizing:border-box;margin-inline:auto}.parent-surface--frame-wide,.parent-surface--frame-dashboard{max-width:var(--student-content-wide-max,1180px)}.parent-surface--frame-reading{max-width:var(--student-reading-max,720px)}.parent-page-body,.parent-home-workspace{gap:var(--student-section-gap,24px);flex-direction:column;display:flex}.parent-management-page>.parent-page-body,.parent-management-page>.parent-management-body{padding-left:0;padding-right:0}.parent-management-page .parent-mgmt-surface,.parent-management-page .student-mgmt-surface{width:100%;max-width:none}.parent-page--management .flora-page-header-action,.parent-page--management .student-page-hdr .flora-page-header-action{margin-left:auto}.parent-page.student-page--management .flora-page-header,.parent-page.student-page--management .flora-page-header-row{box-sizing:border-box;width:100%;max-width:none}.parent-home-page .flora-page-header-row{width:100%;max-width:none}.parent-home-page .flora-page-header-action{align-self:start;padding-top:0}.parent-home-page .student-dashboard-hdr-meta{place-self:start end}.parent-home-page .student-dashboard-hdr-meta .dashboard-datetime{flex-direction:column;align-items:flex-end;gap:3px;display:flex}.parent-home-page .student-dashboard-hdr-meta .dashboard-hdr-date{color:var(--tutto-text-secondary);font-size:.8125rem;font-weight:600;line-height:1.35}.parent-home-page .student-dashboard-hdr-meta .dashboard-hdr-clock,.parent-home-page .student-dashboard-hdr-meta .dashboard-clock-time{letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--tutto-primary);font-size:1.375rem;font-weight:800;line-height:1.1}.parent-home-page .student-dashboard-hdr-meta .dashboard-datetime-cluster{flex-direction:column;align-items:flex-end;gap:4px;display:flex}@media (width>=1600px){.parent-home-page .flora-page-header-action{margin-right:max(0px, calc((var(--app-page-active-max,1180px) - var(--student-dashboard-max,1180px)) / 2))}}.parent-home-metrics .dashboard-metric-grid{width:100%}.parent-home-main-grid{gap:var(--student-grid-gap,24px);flex-direction:column;display:flex}.parent-home-main-column,.parent-home-side-column{gap:var(--student-grid-gap,24px);flex-direction:column;min-width:0;display:flex}.parent-home-analytics-inline{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.parent-home-analytics-inline .student-metric-card{border-radius:var(--student-radius-panel,16px);min-height:96px;padding:14px 16px}.parent-panel-body-list{flex-direction:column;gap:10px;display:flex}@media (width>=1024px){.parent-home-main-grid{gap:var(--student-grid-gap,24px);grid-template-columns:minmax(0,1.55fr) minmax(300px,1fr);align-items:stretch;display:grid}.parent-home-main-column{min-height:100%}.parent-home-main-column>.student-panel{flex-direction:column;flex:1 1 0;min-height:0;display:flex}.parent-home-main-column>.student-panel .student-panel-body{flex-direction:column;flex:auto;min-height:0;display:flex}.parent-home-main-column>.student-panel .student-panel-body:has(.student-state--empty-panel){justify-content:center}.parent-home-analytics-inline{gap:16px}}@media (width>=768px) and (width<=1023px){.parent-home-side-column{gap:var(--student-grid-gap,24px);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.parent-home-side-column>.student-panel:only-child{grid-column:1/-1}}.parent-timetable-page.student-timetable-page.app-page{--app-page-active-max:var(--student-content-wide-max,1180px);--shell-content-width:var(--student-content-wide-max,1180px)}.parent-session-detail-page .parent-page-body{flex-direction:column;gap:16px;display:flex}.parent-recent-reports-panel .class-report-home-list{margin:0;padding:0;list-style:none}
