main.auth-main,main.lesson-main,main.student-main,main.review-main,main.library-main{padding-top:0}.app-header{z-index:100;height:var(--app-header-height);padding:0 var(--space-6);background:var(--color-surface-header);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--color-border-primary);justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.app-logo{font-family:var(--font-family-display);font-size:var(--font-size-xl);letter-spacing:var(--letter-spacing-tight);color:var(--color-text-primary);transition:opacity var(--duration-fast);font-weight:700}a.app-logo:hover{opacity:.7}.app-back{align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);transition:color var(--duration-fast);display:inline-flex}.app-back:hover{color:var(--color-text-primary)}.auth-theme-toggle{top:var(--space-4);right:var(--space-4);z-index:200;position:fixed}.auth-main{min-height:100dvh;padding:var(--space-8) var(--space-5);background:var(--color-bg-secondary);display:flex}.auth-center{align-items:center;gap:var(--space-6);flex-direction:column;width:100%;max-width:440px;margin:auto;display:flex}.auth-theme-mobile{display:none}@media (max-width:600px){.auth-theme-toggle{display:none}.auth-theme-mobile{align-items:center;gap:var(--space-2);width:auto;height:auto;padding:var(--space-2) var(--space-4);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);display:inline-flex}}.auth-progress{align-items:center;width:100%;display:flex}.ap-step{align-items:center;gap:var(--space-2);flex-shrink:0;display:flex}.ap-dot{border:1.5px solid var(--color-border-strong);width:26px;height:26px;font-family:var(--font-family-mono);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);border-radius:50%;flex-shrink:0;place-items:center;display:grid}.ap-step.is-done .ap-dot{background:var(--color-status-success);border-color:var(--color-status-success);color:#fff}.ap-step.is-current .ap-dot{background:var(--color-accent-primary);border-color:var(--color-accent-primary);color:#fff}.ap-label{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);white-space:nowrap}.ap-step.is-done .ap-label,.ap-step.is-current .ap-label{color:var(--color-text-secondary)}.ap-line{background:var(--color-border-primary);min-width:12px;height:1px;margin:0 var(--space-2);flex:1}@media (max-width:520px){.auth-progress{justify-content:center}.ap-line{width:20px;min-width:0;margin:0 var(--space-1);flex:none}.ap-step:not(.is-current) .ap-label{display:none}.auth-form .btn-block{font-size:var(--font-size-sm);white-space:normal;padding-top:var(--space-3);padding-bottom:var(--space-3);line-height:1.3}.auth-form .btn-block svg{display:none}}.auth-card{background:var(--color-bg-card);border:1px solid var(--color-border-primary);border-radius:var(--radius-xl);width:100%;max-width:400px;padding:var(--space-6);box-shadow:var(--shadow-md)}.auth-tabs{background:var(--color-bg-secondary);border-radius:var(--radius-md);margin-bottom:var(--space-6);gap:2px;padding:3px;display:flex}.auth-tab{padding:8px var(--space-3);border-radius:calc(var(--radius-md) - 2px);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);transition:background var(--duration-fast), color var(--duration-fast), box-shadow var(--duration-fast);text-align:center;flex:1}.auth-tab:hover{color:var(--color-text-secondary)}.auth-tab.is-active{background:var(--color-bg-card);color:var(--color-text-primary);box-shadow:var(--shadow-sm)}.auth-form{gap:var(--space-5);flex-direction:column;display:flex}.auth-form.is-hidden{display:none}.auth-form-head{gap:var(--space-1);flex-direction:column;display:flex}.auth-title{font-family:var(--font-family-display);font-size:var(--font-size-xl);letter-spacing:var(--letter-spacing-tight);font-weight:700;line-height:var(--line-height-snug);color:var(--color-text-primary)}.auth-subtitle{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.field-stack{gap:var(--space-4);flex-direction:column;display:flex}.field-row{gap:var(--space-2);flex-direction:column;display:flex}.field-label-row{justify-content:space-between;align-items:center;display:flex}.field-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary)}.field-link{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-accent-primary);transition:opacity var(--duration-fast)}.field-link:hover{opacity:.75}.field-input{width:100%;height:42px;padding:0 var(--space-4);background:var(--color-bg-input);border:1.5px solid var(--color-border-input);border-radius:var(--radius-md);font-size:var(--font-size-base);font-family:var(--font-family-body);color:var(--color-text-primary);transition:border-color var(--duration-fast), box-shadow var(--duration-fast);outline:none}.field-input::placeholder{color:var(--color-text-placeholder)}.field-input:focus{border-color:var(--color-border-focus);box-shadow:var(--shadow-focus)}.field-input.has-error{border-color:var(--color-status-error)}.field-error{font-size:var(--font-size-xs);color:var(--color-status-error);line-height:var(--line-height-normal);display:none}.field-error:not(:empty){display:block}.btn-block{justify-content:center;width:100%}.auth-legal{font-size:var(--font-size-xs);color:var(--color-text-secondary);text-align:center;line-height:var(--line-height-relaxed)}.auth-legal a{color:var(--color-text-secondary);text-underline-offset:2px;text-decoration:underline}.auth-legal a:hover{color:var(--color-text-primary)}.auth-switch{font-size:var(--font-size-xs);color:var(--color-text-secondary);text-align:center}.auth-link-btn{font-size:inherit;font-weight:var(--font-weight-semibold);color:var(--color-accent-primary);cursor:pointer;transition:opacity var(--duration-fast);background:0 0;border:none;padding:0;font-family:inherit}.auth-link-btn:hover{opacity:.75}.generating-main{min-height:100dvh;padding:var(--space-8) var(--space-5);background:var(--color-bg-secondary);display:flex}.gen-center{align-items:center;gap:var(--space-8);text-align:center;flex-direction:column;width:100%;max-width:480px;margin:auto;display:flex}.gen-dot-pulse{animation:2s ease-out infinite gen-dot-ring}@keyframes gen-dot-ring{0%{box-shadow:0 0 #c8202e59}60%{box-shadow:0 0 0 8px #c8202e00}to{box-shadow:0 0 #c8202e00}}.gen-video-strip{align-items:center;gap:var(--space-4);background:var(--color-bg-card);border:1px solid var(--color-border-primary);border-radius:var(--radius-lg);padding:var(--space-4);box-shadow:var(--shadow-sm);text-align:left;width:100%;display:flex}.gen-thumb-wrap{border-radius:var(--radius-sm);background:var(--color-bg-tertiary);flex-shrink:0;place-items:center;width:88px;height:58px;display:grid;overflow:hidden}.gen-thumb{object-fit:cover;width:100%;height:100%;display:block}.gen-thumb.is-hidden{display:none}.gen-video-info{flex:1;min-width:0}.gen-processing-badge{align-items:center;gap:var(--space-1-5);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-status-success);margin-bottom:var(--space-2);display:inline-flex}.gen-processing-dot{background:currentColor;border-radius:50%;width:6px;height:6px;animation:1.6s ease-in-out infinite blink-dot}@keyframes blink-dot{0%,to{opacity:1}50%{opacity:.25}}.gen-video-url{font-family:var(--font-family-mono);font-size:var(--font-size-xs);color:var(--color-text-secondary);white-space:nowrap;text-overflow:ellipsis;margin-bottom:var(--space-2);overflow:hidden}.gen-video-title{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0 0 var(--space-2);-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.3;display:-webkit-box;overflow:hidden}.gen-params{align-items:center;gap:var(--space-1);flex-wrap:wrap;display:flex}.gen-param{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);background:var(--color-accent-primary-subtle);color:var(--color-accent-primary);border-radius:var(--radius-full);padding:2px var(--space-2);white-space:nowrap}.gen-focus{flex-wrap:wrap;gap:4px;display:flex}.gen-focus span{font-size:var(--font-size-xs);color:var(--color-text-secondary);background:var(--color-bg-tertiary);border:1px solid var(--color-border-primary);border-radius:var(--radius-full);padding:1px var(--space-2)}.gen-focus [data-focus=vocabulary]{color:var(--color-accent-gold);background:#c8870a1a;border-color:#c8870a47}.gen-focus [data-focus=listening]{color:var(--color-accent-green);background:#2ea05a14;border-color:#2ea05a40}.gen-focus [data-focus=speaking]{color:var(--color-accent-cobalt);background:#1a3a8f14;border-color:#1a3a8f40}.gen-status{align-items:center;gap:var(--space-5);flex-direction:column;display:flex}.gen-bars{align-items:flex-end;gap:var(--space-1-5);height:44px;display:flex}.gen-bar{background:var(--color-accent-primary);transform-origin:bottom;border-radius:3px;width:5px;height:44px;animation:1.4s ease-in-out infinite bar-pulse}.gen-bar:first-child{animation-delay:0s}.gen-bar:nth-child(2){animation-delay:.2s}.gen-bar:nth-child(3){animation-delay:.4s}.gen-bar:nth-child(4){animation-delay:.6s}.gen-bar:nth-child(5){animation-delay:.8s}@keyframes bar-pulse{0%,to{opacity:.35;transform:scaleY(.15)}50%{opacity:1;transform:scaleY(1)}}.gen-phrase{font-family:var(--font-family-display);font-size:var(--font-size-xl);letter-spacing:var(--letter-spacing-tight);font-weight:700;line-height:var(--line-height-snug);color:var(--color-text-primary);transition:opacity var(--duration-normal) var(--easing-default);min-height:1.5em}.gen-phrase.is-fading{opacity:0}.gen-hint{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.gen-skip{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);transition:color var(--duration-fast), border-color var(--duration-fast);border-bottom:1px solid #0000}.gen-skip:hover{color:var(--color-text-secondary);border-bottom-color:var(--color-border-strong)}.gen-limit{text-align:center;gap:var(--space-4);max-width:480px}.gen-limit-title{font-family:var(--font-family-display);font-size:var(--font-size-xl);letter-spacing:var(--letter-spacing-tight);font-weight:700;line-height:var(--line-height-snug);color:var(--color-text-primary)}.gen-limit-text{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:var(--line-height-normal)}.gen-limit-actions{align-items:center;gap:var(--space-3);margin-top:var(--space-2);flex-direction:column;display:flex}.gen-limit-done{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-accent-green)}.btn-ghost{color:var(--color-text-secondary);cursor:pointer;font-family:var(--font-family-body);background:0 0;border:none}.btn-ghost:hover{color:var(--color-text-primary)}.btn-outline{border:1.5px solid var(--color-border-strong);color:var(--color-text-secondary);cursor:pointer;font-family:var(--font-family-body);background:0 0}.btn-outline:hover{border-color:var(--color-text-secondary);color:var(--color-text-primary)}.lesson-header{height:var(--app-header-height);grid-template-columns:1fr auto 1fr;display:grid}.lh-left{align-items:center;display:flex}.lh-center{justify-content:center;align-items:center;display:flex}.lh-right{justify-content:flex-end;align-items:center;gap:var(--space-3);display:flex}.lh-actions{align-items:center;gap:var(--space-3);display:flex}.view-toggle{background:var(--color-bg-secondary);border-radius:var(--radius-md);gap:2px;padding:3px;display:flex}.view-tab{padding:6px var(--space-4);border-radius:calc(var(--radius-md) - 2px);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);cursor:pointer;font-family:var(--font-family-body);transition:background var(--duration-fast), color var(--duration-fast), box-shadow var(--duration-fast);white-space:nowrap;background:0 0;border:none}.view-tab:hover{color:var(--color-text-secondary)}.view-tab.is-active{background:var(--color-bg-card);color:var(--color-text-primary);box-shadow:var(--shadow-sm)}.lesson-export-wrap{position:relative}.lesson-export-menu{z-index:200;background:var(--color-bg-card);border:1px solid var(--color-border-primary);border-radius:var(--radius-md);box-shadow:var(--shadow-md);min-width:160px;position:absolute;top:calc(100% + 6px);right:0;overflow:hidden}.lesson-export-menu.is-hidden{display:none}.export-menu-item{width:100%;padding:var(--space-3) var(--space-4);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);cursor:pointer;text-align:left;font-family:var(--font-family-body);transition:background var(--duration-fast);background:0 0;border:none;display:block}.export-menu-item:hover{background:var(--color-bg-secondary)}.student-preview-bar{background:var(--color-bg-tertiary);color:var(--color-text-primary);border-bottom:1px solid var(--color-border-strong)}.student-preview-bar.is-hidden{display:none}.preview-bar-inner{max-width:760px;padding:var(--space-2) var(--space-5);justify-content:space-between;align-items:center;gap:var(--space-4);margin:0 auto;display:flex}.preview-bar-label{align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);display:flex}.preview-bar-text-short{display:none}.preview-bar-btn{color:#ffffffd9;font-size:var(--font-size-sm);flex-shrink:0;border-color:#fff6!important}.preview-bar-btn:hover{color:#fff!important}.lesson-main{min-height:calc(100dvh - var(--app-header-height));background:var(--color-bg-secondary);padding-top:0!important}.lesson-body{max-width:776px;padding:var(--space-7) var(--space-5) var(--space-10) 40px;margin:0 auto}.lesson-identity{margin-top:var(--space-5);margin-bottom:var(--space-5);padding-bottom:var(--space-5);border-bottom:1px solid var(--color-border-primary)}.lesson-body>.lesson-block:first-of-type{margin-top:var(--space-2)}.lesson-title-row{align-items:flex-start;gap:var(--space-2);margin-bottom:var(--space-3);display:flex}.lesson-title{font-family:var(--font-family-display);font-size:var(--font-size-3xl);letter-spacing:var(--letter-spacing-tight);font-weight:700;line-height:var(--line-height-snug);color:var(--color-text-primary);transition:border-color var(--duration-fast);border-bottom:2px solid #0000;outline:none;flex:1;min-width:0;padding-bottom:2px}.lesson-title:focus{border-bottom-color:var(--color-accent-primary)}.title-edit-hint{color:var(--color-text-secondary);margin-top:var(--space-2-5);opacity:0;transition:opacity var(--duration-fast);flex-shrink:0}.lesson-title-row:hover .title-edit-hint{opacity:1}.lesson-title.is-editable{cursor:text}.lesson-title.is-editable:hover{border-bottom-color:var(--color-border-primary)}.lesson-title-input{font-family:var(--font-family-display);font-size:var(--font-size-3xl);letter-spacing:var(--letter-spacing-tight);font-weight:700;line-height:var(--line-height-snug);color:var(--color-text-primary);border:none;border-bottom:2px solid var(--color-accent-primary);background:0 0;outline:none;flex:1;width:100%;min-width:0;padding-bottom:2px}.lesson-meta-row{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.lesson-param{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:var(--letter-spacing-wide);background:var(--color-accent-primary-subtle);color:var(--color-accent-primary);border-radius:var(--radius-full);padding:2px var(--space-2);white-space:nowrap}.lesson-focus{flex-wrap:wrap;gap:4px;display:flex}.lesson-focus span{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:var(--letter-spacing-wide);color:var(--color-text-secondary);background:var(--color-bg-tertiary);border:1px solid var(--color-border-primary);border-radius:var(--radius-full);padding:1px var(--space-2)}.lesson-focus [data-focus=vocabulary]{color:var(--color-accent-gold);background:#c8870a1a;border-color:#c8870a47}.lesson-focus [data-focus=listening]{color:var(--color-accent-green);background:#2ea05a14;border-color:#2ea05a40}.lesson-focus [data-focus=speaking]{color:var(--color-accent-cobalt);background:#1a3a8f14;border-color:#1a3a8f40}.lesson-video-ref{font-family:var(--font-family-mono);font-size:var(--font-size-xs);color:var(--color-text-secondary);transition:color var(--duration-fast);text-decoration:none}.lesson-video-ref:hover{color:var(--color-accent-primary)}.lesson-block{background:var(--color-bg-card);border:1px solid var(--color-border-primary);border-radius:var(--radius-lg);margin-bottom:var(--space-4);position:relative;overflow:visible}.lesson-block.is-student-hidden{opacity:.55}#lessonMain[data-view=student] .lesson-block.is-student-hidden,#lessonMain[data-view=student] .exercise-item.is-disabled{display:none}#lessonMain[data-view=student] .teacher-only{display:none!important}#lessonMain[data-view=student] .lesson-body{padding-left:var(--space-5);max-width:760px}#lessonMain[data-view=student] .lesson-block--notes{display:none}.block-hd{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border-primary);background:var(--color-bg-secondary);border-radius:var(--radius-lg) var(--radius-lg) 0 0;min-height:48px;display:flex;position:relative}.block-hd-title{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.block-hd-controls{align-items:center;gap:var(--space-2);margin-left:auto;display:flex}.block-badge{font-size:10px;font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wide);text-transform:uppercase;border-radius:var(--radius-full);flex-shrink:0;padding:2px 8px}.block-badge--video{color:var(--color-accent-cobalt);background:#1a3a8f1a}.block-badge--vocab{color:var(--color-accent-gold);background:#c8870a1f}.block-badge--listening{color:var(--color-accent-green);background:#2ea05a1a}.block-badge--grammar{background:var(--color-accent-primary-subtle);color:var(--color-accent-primary)}.block-badge--speaking{color:var(--color-accent-cobalt);background:#1a3a8f1a}.block-badge--transcript{background:var(--color-bg-tertiary);color:var(--color-text-secondary)}.block-badge--notes{background:var(--color-bg-tertiary);color:var(--color-text-secondary);border:1px solid var(--color-border-strong)}.block-badge--neutral{background:var(--color-bg-tertiary);color:var(--color-text-secondary);border:1px solid var(--color-border-primary)}.hidden-student-badge{font-size:var(--font-size-xs);color:var(--color-text-secondary);background:var(--color-bg-tertiary);border:1px solid var(--color-border-primary);border-radius:var(--radius-full);padding:1px 8px}.vis-btn{width:30px;height:30px;color:var(--color-text-secondary);cursor:pointer;opacity:0;transition:color var(--duration-fast), background var(--duration-fast), opacity var(--duration-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.block-hd:hover .vis-btn{opacity:1}.vis-btn:hover{color:var(--color-text-primary);background:var(--color-bg-secondary);border-radius:var(--radius-sm)}.vis-btn.is-visible:not(:hover){color:var(--color-text-secondary)}.vis-btn:not(.is-visible){color:var(--color-text-secondary);opacity:1}.block-bd{padding:var(--space-3) var(--space-5)}.video-embed-wrap{border-radius:var(--radius-md);background:#000;height:0;padding-bottom:56.25%;position:relative;overflow:hidden}.video-embed-wrap iframe{border:0;width:100%;height:100%;display:block;position:absolute;top:0;left:0}.vocab-grid{gap:var(--space-3);grid-template-columns:1fr 1fr;display:grid}.vocab-item{padding:var(--space-3) var(--space-4);background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-md)}.vocab-term{align-items:baseline;gap:var(--space-2);margin-bottom:var(--space-1);display:flex}.vocab-word{font-weight:var(--font-weight-semibold);color:var(--color-text-primary);font-size:var(--font-size-sm)}.vocab-pos{font-style:italic;font-size:var(--font-size-xs);color:var(--color-text-secondary)}.vocab-def{font-size:var(--font-size-xs);color:var(--color-text-secondary);line-height:var(--line-height-relaxed)}.exercise-instruction{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--space-4);font-style:italic}.exercise-list{gap:var(--space-2);flex-direction:column;list-style:none;display:flex}.exercise-item{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-md);transition:opacity var(--duration-fast);display:flex}.exercise-item.is-disabled{opacity:.35}.item-num{font-family:var(--font-family-mono);font-size:var(--font-size-xs);color:var(--color-text-secondary);flex-shrink:0;width:16px}.item-text{font-size:var(--font-size-sm);color:var(--color-text-primary);line-height:var(--line-height-normal);flex:1}.answer-tag{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);border-radius:var(--radius-full);padding:2px var(--space-2);white-space:nowrap;flex-shrink:0}.answer-true{color:var(--color-status-success);font-weight:var(--font-weight-semibold);background:0 0}.answer-false{color:var(--color-status-error);font-weight:var(--font-weight-semibold);background:0 0}.answer-nm{color:var(--color-accent-cobalt);font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);background:0 0}.item-vis-btn{border-radius:var(--radius-sm);width:22px;height:22px;color:var(--color-text-secondary);cursor:pointer;opacity:0;transition:color var(--duration-fast), background var(--duration-fast), opacity var(--duration-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.exercise-item:hover .item-vis-btn,.tf-item:hover .item-vis-btn,.sa-item:hover .item-vis-btn{opacity:1}.item-vis-btn:hover{color:var(--color-text-primary);background:var(--color-bg-secondary)}.item-vis-btn:not(.is-visible){color:var(--color-text-secondary);opacity:1}.match-list{flex-direction:column;display:flex}.match-pair{align-items:baseline;gap:var(--space-2-5);padding:var(--space-2-5) var(--space-2) var(--space-2-5) 0;border-bottom:1px solid var(--color-border-primary);border-radius:var(--radius-sm);transition:opacity var(--duration-fast), background var(--duration-fast);display:flex}.match-pair:last-child{border-bottom:0}.match-pair:hover{background:var(--color-bg-secondary)}.match-pair.is-disabled{opacity:.35}.match-word{font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);color:var(--color-text-primary);max-width:45%}.match-leader{min-width:var(--space-5);border-bottom:1px dotted var(--color-border-strong);flex:1;align-self:baseline;transform:translateY(-4px)}.match-def{font-size:var(--font-size-sm);color:var(--color-text-secondary);text-align:right;max-width:52%}.match-pair .item-vis-btn{opacity:.4;align-self:center}.match-pair:hover .item-vis-btn,.match-pair .item-vis-btn:not(.is-visible){opacity:1}.grammar-list{gap:var(--space-3)}.grammar-item{display:block}.grammar-item-inner{width:100%}.grammar-q-row{align-items:flex-start;gap:var(--space-3);margin-bottom:var(--space-3);display:flex}.mc-options{gap:var(--space-2);flex-wrap:wrap;padding-left:28px;display:flex}.mc-option{font-size:var(--font-size-sm);border:1.5px solid var(--color-border-primary);border-radius:var(--radius-sm);padding:3px var(--space-3);color:var(--color-text-secondary);background:var(--color-bg-card)}.mc-option.is-correct{border-color:var(--color-status-success);color:var(--color-status-success);font-weight:var(--font-weight-semibold);background:#1a7a4a12}.mc-option.is-correct:after{content:" ✓"}.speaking-list{gap:var(--space-3);flex-direction:column;display:flex}.speaking-item{align-items:flex-start;gap:var(--space-4);padding:var(--space-4) var(--space-5);border:1px solid var(--color-border-primary);border-radius:var(--radius-lg);transition:box-shadow var(--duration-fast) ease, transform var(--duration-fast) ease, border-color var(--duration-fast) ease;background:#1a3a8f08;display:flex}.speaking-item:hover{border-color:#1a3a8f4d;transform:translateY(-2px);box-shadow:0 4px 16px #1a3a8f1a}.speaking-icon{border-radius:var(--radius-md);width:32px;height:32px;color:var(--color-accent-cobalt);background:#1a3a8f1a;flex-shrink:0;justify-content:center;align-items:center;margin-top:1px;display:flex}.speaking-prompt{font-size:var(--font-size-base);font-weight:var(--font-weight-medium);color:var(--color-text-primary);line-height:var(--line-height-relaxed);flex:1}.transcript-toggle{align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);cursor:pointer;font-family:var(--font-family-body);transition:color var(--duration-fast);background:0 0;border:none;padding:0;display:flex}.transcript-toggle:hover{color:var(--color-text-primary)}.transcript-chevron{transition:transform var(--duration-fast)}.transcript-toggle[aria-expanded=true] .transcript-chevron{transform:rotate(180deg)}.transcript-body{margin-top:var(--space-4);padding:var(--space-4);background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-md);max-height:320px;overflow-y:auto}.transcript-body[hidden]{display:none}.transcript-body p{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:var(--line-height-relaxed);margin-bottom:var(--space-3)}.transcript-body p:last-child{margin-bottom:0}.vocab-highlight{color:var(--color-accent-gold);font-weight:var(--font-weight-medium);background:#c8870a26;border-radius:2px;padding:0 2px}.lesson-block--reference{border-style:dashed;border-color:var(--color-border-strong)}.lesson-block--reference .block-hd{background:var(--color-bg-tertiary);border-bottom-color:var(--color-border-primary);border-radius:var(--radius-lg) var(--radius-lg) 0 0}.lesson-block--notes{border-style:dashed;border-color:var(--color-border-strong)}.lesson-block--notes .block-hd{background:var(--color-bg-tertiary);border-bottom-color:var(--color-border-primary);border-radius:var(--radius-lg) var(--radius-lg) 0 0}.notes-bd{background:var(--color-bg-secondary);border-radius:0 0 var(--radius-lg) var(--radius-lg)}.notes-list{gap:var(--space-3);padding-left:var(--space-5);flex-direction:column;list-style:outside;display:flex}.notes-list li{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:var(--line-height-relaxed)}.notes-list strong{color:var(--color-text-primary)}.modal-overlay{z-index:500;background:var(--color-surface-overlay);padding:var(--space-5);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-overlay.is-hidden{display:none}.modal-card{background:var(--color-bg-card);border:1px solid var(--color-border-primary);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);width:100%;max-width:440px;padding:var(--space-6)}.toast{bottom:var(--space-5);right:var(--space-5);z-index:600;background:var(--color-bg-inverse);color:var(--color-text-inverse);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);padding:var(--space-3) var(--space-5);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);opacity:1;transition:opacity var(--duration-normal);position:fixed}.toast.is-hidden{display:none}.toast.is-fading{opacity:0}.student-header-label{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);letter-spacing:var(--letter-spacing-wide);text-transform:uppercase}.student-main{min-height:calc(100dvh - var(--app-header-height));background:var(--color-bg-secondary);padding-top:0!important}.student-body{max-width:680px;padding:var(--space-7) var(--space-5) var(--space-10);margin:0 auto}.student-lesson-head{margin-bottom:var(--space-7)}.student-lesson-title{font-family:var(--font-family-display);font-size:var(--font-size-3xl);letter-spacing:var(--letter-spacing-tight);font-weight:700;line-height:var(--line-height-snug);color:var(--color-text-primary);margin-bottom:var(--space-2)}.student-lesson-meta{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.student-block{background:var(--color-bg-card);border:1px solid var(--color-border-primary);border-radius:var(--radius-lg);margin-bottom:var(--space-4);overflow:hidden}.student-block-hd{gap:var(--space-1);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border-primary);background:var(--color-bg-secondary);font-weight:var(--font-weight-semibold);font-size:var(--font-size-base);color:var(--color-text-primary);flex-direction:column;display:flex}.student-block-sub{font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);color:var(--color-text-secondary);line-height:var(--line-height-normal)}.student-block-bd{padding:var(--space-4) var(--space-5)}.student-exercise-list{gap:var(--space-3);flex-direction:column;list-style:none;display:flex}.student-item{padding:var(--space-4);background:var(--color-bg-secondary);border:1.5px solid var(--color-border-primary);border-radius:var(--radius-md);transition:border-color var(--duration-fast)}.student-item.is-correct{border-color:var(--color-status-success)}.student-item.is-failed{border-color:var(--color-status-error)}@keyframes shake-item{0%,to{transform:translate(0)}20%{transform:translate(-5px)}40%{transform:translate(5px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}.student-item.is-shaking{animation:shake-item .4s var(--easing-default)}.student-item-q{align-items:flex-start;gap:var(--space-3);margin-bottom:var(--space-3);display:flex}.student-item-num{font-family:var(--font-family-mono);font-size:var(--font-size-xs);color:var(--color-text-secondary);flex-shrink:0;width:16px;margin-top:2px}.student-item-text{font-size:var(--font-size-sm);color:var(--color-text-primary);line-height:var(--line-height-normal)}.tf-btns{gap:var(--space-2);display:flex}.tf-btn{padding:var(--space-2) var(--space-3);border:1.5px solid var(--color-border-strong);border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);font-family:var(--font-family-body);color:var(--color-text-secondary);background:var(--color-bg-card);cursor:pointer;transition:border-color var(--duration-fast), background var(--duration-fast), color var(--duration-fast);flex:1}.tf-btn:hover:not(:disabled){border-color:var(--color-accent-primary);color:var(--color-accent-primary)}.tf-btn:disabled{cursor:not-allowed;opacity:.6}.tf-btn.is-correct{border-color:var(--color-status-success);color:var(--color-status-success);background:#1a7a4a14}.tf-btn.is-wrong{border-color:var(--color-status-error);color:var(--color-status-error);background:#c8202e14}@keyframes tf-choice-shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(3px)}}@keyframes tf-item-enter{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.tf-list{gap:var(--space-3);flex-direction:column;display:flex}.tf-item{border:1.5px solid var(--color-border-primary);border-radius:var(--radius-md);transition:border-color var(--duration-fast);overflow:hidden}.tf-item.is-resolved-correct{background:#2ea05a05;border-color:#2ea05a73}.tf-item.is-resolved-wrong{background:#c8202e05;border-color:#c8202e59}.tf-item.is-shaking{animation:.4s tf-choice-shake}.tf-item-hd{align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-4) var(--space-3);display:flex}.tf-item-num{background:var(--color-bg-secondary);width:22px;height:22px;color:var(--color-text-secondary);font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);border-radius:50%;flex-shrink:0;place-items:center;display:grid}.tf-item-num--listening{background:var(--color-accent-green);color:#fff}.tf-item-num--vocab{background:var(--color-accent-gold);color:#fff}.tf-item-num--speaking{background:var(--color-accent-cobalt);color:#fff}.tf-item-text{font-size:var(--font-size-sm);line-height:var(--line-height-normal);color:var(--color-text-primary);flex:1;margin:0}.tf-item-bd{padding:0 var(--space-4) var(--space-4);gap:var(--space-3);flex-direction:column;display:flex}.tf-choices{gap:var(--space-2);grid-template-columns:1fr 1fr;display:grid}.tf-choices--3{grid-template-columns:1fr 1fr 1fr}.tf-choice-btn{justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-3);border:1.5px solid var(--color-border-strong);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);font-family:var(--font-family-body);color:var(--color-text-secondary);background:var(--color-bg-secondary);cursor:pointer;transition:border-color var(--duration-fast), background var(--duration-fast), color var(--duration-fast);display:flex}.tf-choice-btn:hover:not(:disabled){border-color:var(--color-accent-cobalt);color:var(--color-accent-cobalt);background:#5e82e014}.tf-choice-btn:disabled{cursor:not-allowed}.tf-choice-btn.is-tf-correct{border-color:var(--color-status-success);color:var(--color-status-success);background:#2ea05a1a}.tf-choice-btn.is-mc-wrong-chosen{border-color:var(--color-status-error);color:var(--color-status-error);background:#c8202e0f}.tf-choice-btn.is-tf-wrong-reveal{opacity:.4}.tf-choice-btn.is-tf-shake{border-color:var(--color-status-error);color:var(--color-status-error);background:#c8202e14;animation:.4s tf-choice-shake}.tf-item-foot{justify-content:space-between;align-items:center;min-height:16px;display:flex}.mc-choices{gap:var(--space-2);flex-direction:column;display:flex}.mc-choice-btn{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border:1.5px solid var(--color-border-strong);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-family:var(--font-family-body);color:var(--color-text-secondary);background:var(--color-bg-secondary);cursor:pointer;text-align:left;transition:border-color var(--duration-fast), background var(--duration-fast), color var(--duration-fast);display:flex}.mc-choice-btn:hover:not(:disabled){border-color:var(--color-accent-cobalt);color:var(--color-accent-cobalt);background:#5e82e014}.mc-choice-btn:disabled{cursor:not-allowed}.mc-choice-btn.is-tf-correct{border-color:var(--color-status-success);color:var(--color-status-success);background:#2ea05a1a}.mc-choice-btn.is-mc-wrong-chosen{border-color:var(--color-status-error);color:var(--color-status-error);background:#c8202e0f}.mc-choice-btn.is-tf-wrong-reveal{opacity:.4}.mc-choice-letter{border-radius:var(--radius-sm);background:var(--color-bg-tertiary);width:22px;height:22px;font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);color:var(--color-text-secondary);flex-shrink:0;justify-content:center;align-items:center;display:flex}.mc-choice-btn.is-tf-correct .mc-choice-letter,.mc-choice-btn:hover:not(:disabled) .mc-choice-letter{color:inherit;background:0 0}.exercise-item--mc{align-items:flex-start}.mc-item-body{gap:var(--space-2);flex-direction:column;flex:1;min-width:0;display:flex}.mc-options-list{padding-left:var(--space-5);flex-direction:column;gap:2px;margin:0;display:flex}.mc-option-item{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.mc-option-correct{color:var(--color-status-success);font-weight:var(--font-weight-semibold)}.cm-word{font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);color:var(--color-accent-gold);border-radius:var(--radius-md);padding:2px var(--space-2);letter-spacing:.01em;background:#c8870a14;border:1px solid #c8870a33;display:inline-block}.syn-word{text-underline-offset:3px;color:var(--color-accent-gold);font-style:italic;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.gf-blank{min-width:80px;padding:2px var(--space-2);margin:0 var(--space-1);border:1.5px dashed var(--color-border-strong);border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-family:var(--font-family-body);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);background:var(--color-bg-secondary);cursor:pointer;vertical-align:middle;transition:border-color var(--duration-fast), background var(--duration-fast), color var(--duration-fast);justify-content:center;align-items:center;display:inline-flex}.gf-blank--empty{color:var(--color-text-tertiary)}.gf-blank--ready{border-color:var(--color-accent-cobalt);color:var(--color-accent-cobalt);cursor:pointer;background:#5e82e00f;border-style:solid}.gf-blank--correct{border-style:solid;border-color:var(--color-status-success);color:var(--color-status-success);cursor:pointer;background:#2ea05a14}.gf-blank--wrong{border-style:solid;border-color:var(--color-status-error);color:var(--color-status-error);cursor:pointer;background:#c8202e0f}.gf-blank--attempt-1{background:linear-gradient(to right, #c8202e1f 50%, var(--color-bg-secondary) 50%)}.gf-blank--revealed{border-style:solid;border-color:var(--color-status-error);color:var(--color-status-error);cursor:not-allowed;opacity:.8;background:#c8202e0f}@keyframes gf-blank-shake{0%,to{transform:translate(0)}20%{transform:translate(-4px)}40%{transform:translate(4px)}60%{transform:translate(-3px)}80%{transform:translate(3px)}}.gf-blank--shake{border-color:var(--color-status-error);color:var(--color-status-error);animation:.4s gf-blank-shake}.gf-blank--answer{border:none;border-bottom:2px solid var(--color-status-success);min-width:unset;color:var(--color-status-success);cursor:default;font-weight:var(--font-weight-semibold);vertical-align:baseline;background:0 0;border-radius:0;padding:0 2px;display:inline}.gf-bank{gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--color-bg-secondary);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.gf-bank--sticky{z-index:40;border-top-left-radius:0;border-top-right-radius:0;position:sticky;top:149px}.gf-chip{padding:var(--space-1) var(--space-3);border:1.5px solid var(--color-border-strong);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-family:var(--font-family-body);font-weight:var(--font-weight-medium);color:var(--color-text-primary);background:var(--color-bg-primary);cursor:pointer;transition:border-color var(--duration-fast), background var(--duration-fast), color var(--duration-fast);overflow:hidden;transform:translateZ(0)}.gf-chip:hover:not(:disabled){border-color:var(--color-accent-cobalt);color:var(--color-accent-cobalt)}.gf-chip--active{border-color:var(--color-accent-cobalt);color:var(--color-accent-cobalt);background:#5e82e01a}.gf-chip--used{opacity:.3;cursor:not-allowed}.gf-bank--teacher{margin-bottom:var(--space-4)}.gf-chip--display{padding:var(--space-1) var(--space-3);border:1.5px solid var(--color-border-subtle);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-family:var(--font-family-body);color:var(--color-text-secondary);background:var(--color-bg-secondary);display:inline-flex}.gf-sentences{gap:var(--space-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex;gap:var(--space-2)!important}.gf-sentence{align-items:flex-start;gap:var(--space-3);font-size:var(--font-size-base);padding:var(--space-3) var(--space-4);background:var(--color-bg-primary);border:1.5px solid var(--color-border-primary);border-radius:var(--radius-md);line-height:1.6;display:flex}.gf-num{background:var(--color-accent-gold);color:#fff;width:22px;height:22px;font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);border-radius:50%;flex-shrink:0;place-items:center;margin-top:2px;display:grid}.gf-sentence-body{flex-direction:column;flex:1;gap:2px;display:flex}.gf-text{flex:1}.gf-input{min-width:100px;padding:1px var(--space-2);margin:0 var(--space-1);border:none;border-bottom:2px solid var(--color-border-strong);font-size:var(--font-size-sm);font-family:var(--font-family-body);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);vertical-align:middle;transition:border-color var(--duration-fast);background:0 0;border-radius:0;outline:none;display:inline-block}.gf-input:focus{border-color:var(--color-accent-cobalt)}.gf-input--correct{border-color:var(--color-status-success);color:var(--color-status-success)}.gf-input--wrong{border-color:var(--color-status-error);color:var(--color-status-error)}.gf-input--revealed{border-color:var(--color-status-error);color:var(--color-status-error);opacity:.8}.gf-input--attempt-1{background:linear-gradient(var(--color-status-error), var(--color-status-error)) bottom left / 33% 2px no-repeat, linear-gradient(var(--color-border-strong), var(--color-border-strong)) bottom / 100% 2px no-repeat;border-bottom:none}.gf-input--attempt-2{background:linear-gradient(var(--color-status-error), var(--color-status-error)) bottom left / 66% 2px no-repeat, linear-gradient(var(--color-border-strong), var(--color-border-strong)) bottom / 100% 2px no-repeat;border-bottom:none}@keyframes gf-input-shake{0%,to{transform:translate(0)}20%{transform:translate(-4px)}40%{transform:translate(4px)}60%{transform:translate(-3px)}80%{transform:translate(3px)}}.gf-input--shake{border-color:var(--color-status-error);animation:.4s gf-input-shake}.gf-input-wrap{vertical-align:middle;display:inline-block}.sa-list{gap:var(--space-3);flex-direction:column;display:flex}.sa-item{gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-lg);transition:box-shadow var(--duration-fast);background:#2ea05a0a;border:1px solid #2ea05a40;flex-direction:column;display:flex;box-shadow:0 2px 8px #0000000d,0 1px 2px #00000008}[data-theme=dark] .sa-item{background:#2ea05a0f;border-color:#2ea05a33}.sa-item.is-disabled{opacity:.45}.tf-item.is-disabled{opacity:.35}.sa-item-hd{align-items:flex-start;gap:var(--space-3);display:flex}.sa-num{background:var(--color-accent-green);color:#fff;width:24px;height:24px;font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);border-radius:50%;flex-shrink:0;place-items:center;margin-top:1px;display:grid}.sa-question-text{font-size:var(--font-size-base);font-weight:var(--font-weight-medium);color:var(--color-text-primary);line-height:var(--line-height-normal);flex:1;margin:0}.sa-answer-area{padding-left:calc(24px + var(--space-3))}.sa-textarea-wrap{position:relative}.sa-pencil-icon{top:var(--space-2);right:var(--space-2);color:var(--color-accent-green);opacity:.35;pointer-events:none;transition:opacity var(--duration-fast);position:absolute}.sa-textarea:focus~.sa-pencil-icon,.sa-textarea:not(:placeholder-shown)~.sa-pencil-icon{opacity:0}.sa-textarea{width:100%;padding:var(--space-2) var(--space-3);font-size:var(--font-size-sm);font-family:var(--font-family-body);color:var(--color-text-primary);border-radius:0;border-radius:var(--radius-md);font-family:var(--font-family-body);line-height:var(--line-height-normal);transition:border-color var(--duration-fast), background-color var(--duration-fast), box-shadow var(--duration-fast);resize:none;box-sizing:border-box;background-color:#2ea05a0f;border:1.5px solid #0000;outline:none;min-height:80px}.sa-item:focus-within{box-shadow:0 4px 14px #0000001a,0 1px 4px #0000000f}.sa-textarea:focus{background-color:#2ea05a1a;outline:none;box-shadow:0 0 0 3px #2ea05a24}.sa-textarea:disabled{opacity:.5;cursor:not-allowed}.review-block-score--na{color:var(--color-text-secondary)}.tf-dots{align-items:center;gap:5px;display:flex}.tf-dot{background:var(--color-border-strong);width:6px;height:6px;transition:background var(--duration-fast);border-radius:50%}.tf-dot.is-spent{background:#c8202e66}.tf-item-feedback{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary)}.tf-item-feedback.is-tf-correct{color:var(--color-status-success)}.tf-item-feedback.is-tf-wrong{color:var(--color-status-error)}.student-mc-options{gap:var(--space-2);flex-direction:column;display:flex}.mc-btn{text-align:left;width:100%;padding:var(--space-2) var(--space-3);border:1.5px solid var(--color-border-strong);border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);font-family:var(--font-family-body);color:var(--color-text-secondary);background:var(--color-bg-card);cursor:pointer;transition:border-color var(--duration-fast), background var(--duration-fast), color var(--duration-fast);display:block}.mc-btn:hover:not(:disabled){border-color:var(--color-accent-primary);color:var(--color-accent-primary)}.mc-btn:disabled{cursor:not-allowed;opacity:.6}.mc-btn.is-correct{border-color:var(--color-status-success);color:var(--color-status-success);font-weight:var(--font-weight-semibold);background:#1a7a4a14}.mc-btn.is-wrong{border-color:var(--color-status-error);color:var(--color-status-error);background:#c8202e14}.student-feedback{margin-top:var(--space-2);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);line-height:var(--line-height-normal)}.student-feedback[hidden]{display:none}.student-feedback.is-correct{color:var(--color-status-success)}.student-feedback.is-wrong{color:var(--color-status-error)}.student-feedback.is-info{color:var(--color-text-secondary)}.exercise-sticky-hd{top:var(--app-header-height);z-index:50;background:var(--color-bg-secondary);border-radius:var(--radius-lg) var(--radius-lg) 0 0;position:sticky}.exercise-sticky-hd .block-hd{border-radius:var(--radius-lg) var(--radius-lg) 0 0}.exercise-sticky-hd .match-progress{padding:var(--space-3) var(--space-5);border-bottom:1px solid var(--color-border-primary);margin-bottom:0}.exercise-sticky-hd+.block-bd{padding-top:var(--space-3)}.match-progress{align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);display:flex}.match-progress-text{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);white-space:nowrap;flex-shrink:0}.match-progress-bar-wrap{background:var(--color-border-primary);border-radius:999px;flex:1;height:9px;position:relative;overflow:hidden}.match-progress-bar--correct{background:linear-gradient(90deg, var(--color-accent-green) 0%, var(--color-accent-green-soft) 100%);height:100%;transition:width .5s cubic-bezier(.34,1.56,.64,1);position:absolute;top:0;left:0}.match-progress-bar--wrong{background:linear-gradient(270deg, var(--color-status-error) 0%, var(--color-accent-error-soft) 100%);height:100%;transition:width .4s cubic-bezier(.34,1.56,.64,1);position:absolute;top:0;right:0}@keyframes match-exit-anim{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(-10px)scale(.97)}}@keyframes match-enter-anim{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.match-word-btn.is-resolving,.match-def-btn.is-resolving{pointer-events:none;animation:.3s forwards match-exit-anim}.match-resolved-section{margin-bottom:var(--space-4);border-radius:var(--radius-md);border:1px solid var(--color-border-primary);flex-direction:column;gap:1px;display:flex;overflow:hidden}.match-resolved-row{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-bg-primary);border-left:3px solid var(--color-accent-green);font-size:var(--font-size-sm);animation:.3s match-enter-anim;display:flex}.match-resolved-row+.match-resolved-row{border-top:1px solid var(--color-border-primary)}.match-resolved-row.is-revealed{border-left-color:var(--color-status-error);background:#c8202e05}.match-resolved-word{font-weight:var(--font-weight-semibold);color:var(--color-accent-green);flex-shrink:0;min-width:130px}.match-resolved-row.is-revealed .match-resolved-word{color:var(--color-status-error)}.match-resolved-arrow{color:var(--color-text-tertiary);font-size:var(--font-size-xs);flex-shrink:0}.match-resolved-def{color:var(--color-text-secondary);flex:1}.match-resolved-row.is-revealed .match-resolved-def{color:var(--color-status-error);opacity:.8}.match-cols{gap:var(--space-3);grid-template-columns:1fr 1.6fr;align-items:start;display:grid}.match-col{gap:var(--space-2);flex-direction:column;display:flex}.match-word-btn{justify-content:space-between;align-items:center;gap:var(--space-2);text-align:left;width:100%;padding:var(--space-2) var(--space-3);border:1.5px solid var(--color-border-strong);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);font-family:var(--font-family-body);color:var(--color-text-primary);background:var(--color-bg-card);cursor:pointer;transition:border-color var(--duration-fast), background var(--duration-fast), color var(--duration-fast), box-shadow var(--duration-fast);border-radius:999px;display:flex;position:relative}.match-word-fill{pointer-events:none;background:#c8202e1a;border-radius:999px;transition:width .4s;position:absolute;top:0;bottom:0;left:0}.match-word-btn.is-wrong .match-word-fill{width:0!important}.match-word-btn.is-selected .match-word-fill{background:#5e82e02e}.match-word-btn:hover:not(:disabled):not(.is-matched):not(.is-wrong){border-color:var(--color-accent-cobalt);background:#5e82e014}.match-word-btn.is-selected{border-color:var(--color-accent-cobalt);color:var(--color-accent-cobalt);background:#5e82e014;box-shadow:0 0 0 3px #5e82e01f}.match-word-btn.is-matched{border-color:var(--color-accent-green);color:var(--color-accent-green);cursor:default;background:#2ea05a14}.match-def-btn{justify-content:space-between;align-items:flex-start;gap:var(--space-3);text-align:left;width:100%;padding:var(--space-3) var(--space-3);border:1.5px solid var(--color-border-primary);border-left:3px solid var(--color-border-strong);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-family:var(--font-family-body);color:var(--color-text-secondary);background:var(--color-bg-secondary);cursor:pointer;line-height:var(--line-height-normal);transition:border-color var(--duration-fast), background var(--duration-fast), color var(--duration-fast);display:flex}.match-def-btn:hover:not(:disabled):not(.is-matched):not(.is-wrong):not(.is-revealed-correct),.match-def-btn.has-word-selected:hover:not(:disabled):not(.is-matched):not(.is-wrong):not(.is-revealed-correct),.match-def-btn.has-active-word:hover:not(:disabled):not(.is-matched):not(.is-wrong):not(.is-revealed-correct){border-color:var(--color-accent-cobalt);border-left-color:var(--color-accent-cobalt);color:var(--color-text-primary);background:#5e82e014}.match-def-btn.is-matched{border-color:var(--color-accent-green);border-left-color:var(--color-accent-green);color:var(--color-accent-green);cursor:default;background:#2ea05a0f}.match-def-btn.is-selected{border-color:var(--color-accent-cobalt);border-left-color:var(--color-accent-cobalt);color:var(--color-text-primary);background:#5e82e014;box-shadow:0 0 0 3px #5e82e01f}.match-def-btn.is-revealed-correct{border-color:#c8202e40;border-left-color:var(--color-status-error);color:var(--color-status-error);cursor:default;background:#c8202e0f}.match-word-btn.has-def-selected:hover:not(:disabled):not(.is-matched):not(.is-wrong){border-color:var(--color-accent-cobalt);background:#5e82e014}.match-word-btn.is-revealed{border-color:var(--color-border-strong);background:var(--color-bg-secondary);color:var(--color-text-secondary);cursor:default;opacity:.55}.match-def-text{flex:1}.match-word-text{z-index:1;flex:1;min-width:0;position:relative}.match-badge--revealed{background:var(--color-status-error);font-size:9px}.match-badge{background:var(--color-accent-green);color:#fff;width:20px;height:20px;font-size:10px;font-weight:700;font-family:var(--font-family-mono);border-radius:50%;flex-shrink:0;place-items:center;line-height:1;display:grid}@keyframes match-shake{0%,to{transform:translate(0)}15%{transform:translate(-5px)}35%{transform:translate(5px)}55%{transform:translate(-4px)}75%{transform:translate(3px)}90%{transform:translate(-2px)}}.match-word-btn.is-wrong{border-color:var(--color-status-error);color:var(--color-status-error);background:#c8202e14;animation:.45s ease-out match-shake}.match-def-btn.is-wrong{border-color:var(--color-status-error);border-left-color:var(--color-status-error);background:#c8202e0f;animation:.45s ease-out match-shake}.match-success{align-items:center;gap:var(--space-2);margin-top:var(--space-4);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-accent-green);background:#2ea05a14;border:1px solid #2ea05a4d;display:flex}.match-success svg{flex-shrink:0}.match-feedback{margin-top:var(--space-3);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-status-success);text-align:center}.match-feedback[hidden]{display:none}.student-speaking-list{gap:var(--space-3);flex-direction:column;display:flex}.student-speaking-item{align-items:flex-start;gap:var(--space-3);padding:var(--space-4);background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-md);border-left:3px solid var(--color-accent-cobalt);display:flex}.student-finish-zone{margin-top:var(--space-7);align-items:center;gap:var(--space-3);flex-direction:column;display:flex}#finishBtn:disabled{cursor:default;pointer-events:none}.student-finish-note{font-size:var(--font-size-xs);color:var(--color-text-secondary);text-align:center}.completion-card{text-align:center;max-width:400px}.completion-icon{width:56px;height:56px;color:var(--color-status-success);margin:0 auto var(--space-4);background:#1a7a4a1a;border-radius:50%;justify-content:center;align-items:center;display:flex}.completion-title{font-family:var(--font-family-display);font-size:var(--font-size-2xl);letter-spacing:var(--letter-spacing-tight);color:var(--color-text-primary);margin-bottom:var(--space-3);font-weight:700}.completion-desc{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:var(--line-height-relaxed);margin-bottom:var(--space-3)}.completion-desc:last-of-type{margin-bottom:var(--space-5)}.review-header-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.review-main{min-height:calc(100dvh - var(--app-header-height));background:var(--color-bg-secondary);padding-top:0!important}.review-body{max-width:760px;padding:var(--space-7) var(--space-5) var(--space-10);margin:0 auto}.review-summary{background:var(--color-bg-card);border:1px solid var(--color-border-primary);border-radius:var(--radius-lg);padding:var(--space-5);margin-bottom:var(--space-6)}.review-summary-top{justify-content:space-between;align-items:flex-start;gap:var(--space-5);margin-bottom:var(--space-4);display:flex}.review-completed-badge{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-status-success);border-radius:var(--radius-full);padding:2px var(--space-2);margin-bottom:var(--space-3);background:#1a7a4a1a;align-items:center;gap:5px;display:inline-flex}.review-assignment-label{font-family:var(--font-family-display);font-size:var(--font-size-2xl);letter-spacing:var(--letter-spacing-tight);color:var(--color-text-primary);margin-bottom:var(--space-1);font-weight:700;line-height:var(--line-height-snug)}.review-lesson-ref{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--space-1)}.review-lesson-meta{align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);flex-wrap:wrap;display:flex}.review-date{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.review-score-block{text-align:right;flex-shrink:0;min-width:96px}.review-score-num{font-family:var(--font-family-display);font-size:var(--font-size-4xl);letter-spacing:var(--letter-spacing-tight);color:var(--color-text-primary);font-weight:700;line-height:1}.review-score-num span{font-size:var(--font-size-2xl);color:var(--color-text-secondary)}.review-score-bar-wrap{background:var(--color-bg-tertiary);border-radius:var(--radius-full);height:4px;margin-top:var(--space-2);overflow:hidden}.review-score-bar{background:var(--color-status-success);border-radius:var(--radius-full);height:100%}.review-score-label{font-size:var(--font-size-xs);color:var(--color-text-secondary);margin-top:var(--space-1)}.review-score-breakdown{border-top:1px solid var(--color-border-primary);margin-top:var(--space-4);padding-top:var(--space-4);gap:var(--space-2);flex-direction:column;display:flex}.review-score-row{align-items:center;gap:var(--space-3);display:flex}.review-score-row-title{font-size:var(--font-size-sm);color:var(--color-text-secondary);flex:1}.review-score-row-result{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-status-error);font-family:var(--font-family-mono)}.review-score-row-result--perfect{color:var(--color-status-success)}.review-score-row-result--na{color:var(--color-text-secondary);font-family:var(--font-family-body)}.review-block{background:var(--color-bg-card);border:1px solid var(--color-border-primary);border-radius:var(--radius-lg);margin-bottom:var(--space-4);overflow:hidden}.review-block-hd{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border-primary);background:var(--color-bg-secondary);min-height:48px;display:flex}.review-block-title{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.review-block-score{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-status-error);border-radius:var(--radius-full);background:#c8202e14;margin-left:auto;padding:2px 8px}.review-block-score--perfect{color:var(--color-status-success);background:#1a7a4a1a}.review-not-submitted{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);background:var(--color-bg-tertiary);border-radius:var(--radius-full);margin-left:auto;padding:2px 8px}.review-block-bd{padding:var(--space-4) var(--space-5);gap:var(--space-3);flex-direction:column;display:flex}.review-item{align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:1px solid var(--color-border-primary);display:flex}.review-item--correct{background:#1a7a4a0a}.review-item--wrong{background:#c8202e0a;border-color:#c8202e33}.review-result-icon{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;margin-top:1px;display:flex}.review-icon-correct{color:var(--color-status-success);background:#1a7a4a1f}.review-icon-wrong{color:var(--color-status-error);background:#c8202e1f}.review-item-content{flex:1;min-width:0}.review-item-text{font-size:var(--font-size-sm);color:var(--color-text-primary);line-height:var(--line-height-normal);margin-bottom:var(--space-1)}.review-item-answer{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium)}.review-item-answer--correct{color:var(--color-status-success)}.review-answer-row{align-items:center;gap:var(--space-2);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);flex-wrap:wrap;display:flex}.review-answer-wrong{color:var(--color-status-error)}.review-answer-sep{color:var(--color-text-secondary)}.review-answer-correct{color:var(--color-status-success);border-radius:var(--radius-full);background:#1a7a4a1a;padding:1px 6px}.review-match-list{border-radius:var(--radius-md);border:1px solid var(--color-border-primary);flex-direction:column;gap:1px;display:flex;overflow:hidden}.review-match-pair{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-bg-primary);border-left:3px solid var(--color-border-strong);font-size:var(--font-size-sm);display:flex}.review-match-pair+.review-match-pair{border-top:1px solid var(--color-border-primary)}.review-match-pair--correct{border-left-color:var(--color-accent-green)}.review-match-pair--wrong{border-left-color:var(--color-status-error);background:#c8202e05}.review-match-pair .review-result-icon{flex-shrink:0;width:18px;height:18px;font-size:9px}.review-match-word{font-weight:var(--font-weight-semibold);color:var(--color-text-primary);flex-shrink:0;min-width:130px}.review-match-pair--correct .review-match-word{color:var(--color-accent-green)}.review-match-pair--wrong .review-match-word{color:var(--color-status-error)}.review-match-arrow{color:var(--color-text-tertiary);font-size:var(--font-size-xs);flex-shrink:0}.review-match-def{font-size:var(--font-size-sm);color:var(--color-text-secondary);flex:1}.review-match-pair--wrong .review-match-def{color:var(--color-status-error);opacity:.8}.review-speaking-note{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--space-4);font-style:italic}.review-speaking-list{gap:var(--space-3);flex-direction:column;display:flex}.review-speaking-item{align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-md);border-left:3px solid var(--color-accent-cobalt);opacity:.7;display:flex}.review-actions{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--color-border-primary);justify-content:flex-end;align-items:center;gap:var(--space-3);display:flex}.review-mark-btn{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border:1.5px solid var(--color-border-primary);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);font-family:var(--font-family-body);color:var(--color-text-secondary);cursor:pointer;transition:color var(--duration-fast), border-color var(--duration-fast), background var(--duration-fast);background:0 0;display:inline-flex}.review-mark-btn:hover{color:var(--color-accent-green);border-color:var(--color-accent-green);background:#2ea05a0f}.review-mark-btn.is-done{color:var(--color-accent-green);cursor:default;background:#2ea05a14;border-color:#2ea05a66}.review-timeline-section{gap:var(--space-3);flex-direction:column;display:flex}.review-timeline-action{justify-content:flex-end;display:flex}.review-mark-done{align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-accent-green);display:inline-flex}.review-summary-divider{background:var(--color-border-primary);height:1px;margin:var(--space-4) 0}.review-incomplete-notice{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);color:var(--color-accent-gold);margin-bottom:var(--space-5);background:#c8870a0f;border:1px solid #c8870a40;display:flex}.review-incomplete-notice svg{flex-shrink:0}.assign-timeline{background:var(--color-bg-card);border:1px solid var(--color-border-primary);border-radius:var(--radius-xl);padding:var(--space-4) var(--space-5);align-items:flex-start;gap:0;display:flex;overflow:hidden}.assign-timeline-step{align-items:center;gap:var(--space-1-5);flex-direction:column;flex:1;min-width:0;display:flex;position:relative}.assign-timeline-step:after{content:"";background:var(--color-border-primary);height:2px;position:absolute;top:9px;left:calc(50% + 12px);right:calc(12px - 50%)}.assign-timeline-step:last-child:after{display:none}.assign-timeline-step--done:after{background:var(--color-accent-primary)}.assign-tl-dot{border:2px solid var(--color-border-primary);background:var(--color-bg-card);z-index:1;color:#0000;width:20px;height:20px;transition:background var(--duration-fast), border-color var(--duration-fast);border-radius:50%;flex-shrink:0;place-items:center;display:grid}.assign-tl-dot--done{background:var(--color-accent-primary);border-color:var(--color-accent-primary);color:#fff}.assign-tl-dot--current{border-color:var(--color-accent-primary);background:#c8202e14}.assign-tl-label{font-size:11px;font-weight:var(--font-weight-semibold);text-align:center;color:var(--color-text-secondary);white-space:nowrap}.assign-tl-label--done{color:var(--color-text-primary)}.assign-tl-date{color:var(--color-text-secondary);text-align:center;white-space:nowrap;font-size:10px}.review-not-complete{background:var(--color-bg-card);border:1px solid var(--color-border-primary);border-radius:var(--radius-xl);padding:var(--space-8) var(--space-6);text-align:center}.review-not-complete-title{font-family:var(--font-family-display);font-size:var(--font-size-lg);margin-bottom:var(--space-2);font-weight:600}.review-not-complete-desc{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.assign-copy-btn{border-radius:var(--radius-sm);border:1px solid var(--color-border-primary);width:26px;height:26px;color:var(--color-text-secondary);cursor:pointer;transition:color var(--duration-fast), border-color var(--duration-fast), background var(--duration-fast);background:0 0;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.assign-copy-btn:hover{color:var(--color-text-primary);border-color:var(--color-border-strong);background:var(--color-bg-card)}.assign-copy-btn.is-copied{color:var(--color-accent-green);border-color:#2ea05a66}.assign-copy-btn:focus-visible{box-shadow:0 0 0 2px var(--color-accent-primary);outline:none}.assign-copy-wrap{flex-shrink:0;position:relative}.assign-copy-tooltip{background:var(--color-bg-card);color:var(--color-accent-green);font-size:10px;font-weight:var(--font-weight-semibold);font-family:var(--font-family-body);border-radius:var(--radius-sm);white-space:nowrap;pointer-events:none;z-index:10;border:1px solid #2ea05a66;padding:2px 7px;position:absolute;bottom:calc(100% + 5px);left:50%;transform:translate(-50%)}.assign-copy-tooltip--hint{background:var(--tooltip-bg);color:var(--tooltip-text);opacity:0;transition:opacity var(--duration-fast);border-color:#0000}[data-theme=dark] .assign-copy-tooltip--hint{border-color:var(--color-border-strong);background:#2c2a28f5}.assign-copy-wrap:hover .assign-copy-tooltip--hint,.assign-copy-btn:focus-visible+.assign-copy-tooltip--hint{opacity:1}.assign-delete-btn{border-radius:var(--radius-sm);width:26px;height:26px;color:var(--color-text-secondary);cursor:pointer;opacity:0;transition:color var(--duration-fast), opacity var(--duration-fast), border-color var(--duration-fast), background var(--duration-fast);background:0 0;border:1px solid #0000;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.assignment-item:hover .assign-delete-btn{opacity:1}.assign-delete-btn:hover{color:var(--color-status-error);background:#c8202e0f;border-color:#c8202e4d}.assign-delete-btn:focus-visible{opacity:1;box-shadow:0 0 0 2px var(--color-accent-primary);outline:none}.library-main{min-height:calc(100dvh - var(--app-header-height));background:var(--color-bg-secondary);padding-top:0!important}.library-body{max-width:960px;padding:var(--space-7) var(--space-5) var(--space-10);--library-indent:calc(var(--space-2) + 22px + var(--space-2));margin:0 auto}.library-body.is-flat{--library-indent:0px}.library-topbar{justify-content:space-between;align-items:center;gap:var(--space-4);margin-top:var(--space-5);margin-bottom:var(--space-6);display:flex}.library-topbar-left{align-items:center;line-height:1;display:flex}.library-title{font-family:var(--font-family-display);font-size:var(--font-size-3xl);letter-spacing:var(--letter-spacing-tight);color:var(--color-text-primary);margin:0;font-weight:700;line-height:1;display:block;position:relative;top:-.05em}.library-count{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-left:var(--space-2);vertical-align:baseline;line-height:1}.library-search-wrap{align-items:center;display:flex;position:relative}.library-search-icon{left:var(--space-3);color:var(--color-text-secondary);pointer-events:none;position:absolute}.library-search{height:36px;padding:0 var(--space-3) 0 calc(var(--space-3) + 20px);background:var(--color-bg-card);border:1.5px solid var(--color-border-input);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-family:var(--font-family-body);color:var(--color-text-primary);width:220px;transition:border-color var(--duration-fast), box-shadow var(--duration-fast);outline:none}.library-search::placeholder{color:var(--color-text-placeholder)}.library-search:focus{border-color:var(--color-border-focus);box-shadow:var(--shadow-focus)}.lesson-list{gap:var(--space-2);flex-direction:column;display:flex;overflow:visible}.lesson-row{align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-5);background:var(--color-bg-card);border:1px solid var(--color-border-primary);border-radius:var(--radius-lg);transition:background var(--duration-fast), border-color var(--duration-fast);cursor:pointer;grid-template-columns:88px 1fr auto;display:grid;position:relative}.lesson-row:hover{background:var(--color-bg-card-hover);border-color:var(--color-border-strong)}.lesson-row:has(+.assignments-panel){border-bottom-color:#0000;border-bottom-right-radius:0;border-bottom-left-radius:0}.lesson-drag-handle{border-radius:var(--radius-sm);width:20px;height:20px;color:var(--color-text-secondary);cursor:grab;opacity:0;transition:opacity var(--duration-fast), color var(--duration-fast);background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:flex;position:absolute;top:50%;left:-22px;transform:translateY(-50%)}.lesson-drag-handle:active{cursor:grabbing}.lesson-row:hover .lesson-drag-handle{opacity:.55}.lesson-drag-handle:hover{color:var(--color-text-primary);opacity:1!important}.lesson-row-thumb{border-radius:var(--radius-sm);background:var(--color-bg-tertiary);flex-shrink:0;place-items:center;width:88px;height:50px;display:grid;overflow:hidden}.lesson-thumb-img{object-fit:cover;width:100%;height:100%;display:block}.lesson-thumb-icon{opacity:.4}.lesson-row-info{min-width:0;padding-right:var(--space-5);overflow:hidden}.lesson-row-title-line{align-items:center;gap:var(--space-2);min-width:0;margin-bottom:4px;display:flex;overflow:hidden}.lesson-row-title{min-width:0;font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);line-height:var(--line-height-snug);white-space:nowrap;text-overflow:ellipsis;text-decoration:none;display:block;overflow:hidden}a.lesson-row-title:hover{color:var(--color-accent-primary)}.lesson-assignment-badge{font-size:10px;font-weight:var(--font-weight-semibold);color:var(--color-status-success);border-radius:var(--radius-full);white-space:nowrap;background:#1a7a4a1a;align-items:center;gap:4px;padding:1px 6px;display:inline-flex}.lesson-row-url{font-family:var(--font-family-mono);font-size:var(--font-size-xs);color:var(--color-text-secondary);margin-bottom:var(--space-1-5);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.lesson-row-chips{align-items:center;gap:var(--space-1);flex-wrap:wrap;display:flex}.lesson-param,.lesson-focus-chip{font-size:10px;font-weight:var(--font-weight-medium);text-transform:uppercase;letter-spacing:var(--letter-spacing-wide);border-radius:var(--radius-full);border:1px solid var(--color-border-primary);background:var(--color-bg-tertiary);color:var(--color-text-secondary);padding:4px 6px 3px;padding-right:calc(6px - var(--letter-spacing-wide));justify-content:center;align-items:center;line-height:1;display:inline-flex}.lesson-param{color:var(--color-text-secondary);background:var(--color-bg-tag);border-color:var(--color-border-strong)}.lesson-focus-chip[data-focus=vocabulary]{color:var(--color-accent-gold);background:#c8870a1a;border-color:#c8870a47}.lesson-focus-chip[data-focus=listening]{color:var(--color-accent-green);background:#2ea05a14;border-color:#2ea05a40}.lesson-focus-chip[data-focus=speaking]{color:var(--color-accent-cobalt);background:#1a3a8f14;border-color:#1a3a8f40}.lesson-row-date{display:none}.lesson-row-date-inline{font-size:var(--font-size-xs);color:var(--color-text-secondary);white-space:nowrap;flex-shrink:0}.lesson-row-url-line{align-items:center;gap:var(--space-1-5);margin-bottom:var(--space-1-5);display:flex;overflow:hidden}.lesson-row-url-line .lesson-row-url{margin-bottom:0}.lesson-row-actions{align-items:center;gap:var(--space-2);z-index:2;display:flex;position:relative}.lesson-row:has(.lesson-more-menu){z-index:300;position:relative}.lesson-more-wrap{margin-right:-5px;position:relative}.lesson-more-btn{border-radius:var(--radius-sm);width:26px;height:26px;color:var(--color-text-secondary);cursor:pointer;transition:color var(--duration-fast), background var(--duration-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.lesson-more-btn:hover{color:var(--color-text-primary);background:var(--color-bg-tertiary)}.lesson-more-menu{z-index:200;background:var(--color-bg-card);border:1px solid var(--color-border-primary);border-radius:var(--radius-md);box-shadow:var(--shadow-md);min-width:148px;position:absolute;top:calc(100% + 4px);right:0;overflow:hidden}.lesson-more-menu.is-hidden{display:none}.lesson-more-item{width:100%;padding:var(--space-2) var(--space-4);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);cursor:pointer;text-align:left;font-family:var(--font-family-body);transition:background var(--duration-fast);background:0 0;border:none;display:block}.lesson-more-item:hover{background:var(--color-bg-secondary)}.lesson-more-item--danger{color:var(--color-status-error)}.lesson-more-item--danger:hover{background:#c8202e0f}@media (max-width:680px){.lesson-row{grid-template-rows:auto auto;grid-template-columns:64px 1fr}.lesson-row-thumb{width:64px;height:36px}.lesson-row-actions{grid-column:2;width:auto}}.video-title-display{margin-top:var(--space-3);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);text-align:center}.block-help-wrap{align-items:center;display:flex;position:relative}.block-help-btn{width:28px;height:28px;color:var(--color-text-secondary);cursor:pointer;opacity:0;transition:color var(--duration-fast), opacity var(--duration-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.block-hd:hover .block-help-btn{opacity:1}.block-help-btn:hover{color:var(--color-text-primary);background:var(--color-bg-secondary);border-radius:var(--radius-sm)}.block-help-tooltip{z-index:200;background:var(--tooltip-bg);width:240px;color:var(--tooltip-text);font-size:var(--font-size-xs);line-height:var(--line-height-relaxed);padding:var(--space-3) var(--space-3);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);pointer-events:none;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:none;position:absolute;bottom:calc(100% + 8px);right:0}[data-theme=dark] .block-help-tooltip{border:1px solid var(--color-border-strong);background:#2c2a28f5}.block-help-tooltip:after{content:"";border:5px solid #0000;border-top-color:#141312ed;position:absolute;top:100%;right:10px}[data-theme=dark] .block-help-tooltip:after{border-top-color:#2c2a28f5}.block-help-wrap:hover .block-help-tooltip,.block-help-btn:focus-visible+.block-help-tooltip{display:block}.block-collapse-btn{border-radius:var(--radius-sm);width:26px;height:26px;color:var(--color-text-secondary);cursor:pointer;transition:color var(--duration-fast), background var(--duration-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.block-collapse-btn:hover{color:var(--color-text-primary);background:var(--color-bg-secondary)}.block-collapse-chevron{transition:transform var(--duration-normal) var(--easing-default)}.block-collapse-btn[aria-expanded=false] .block-collapse-chevron{transform:rotate(-90deg)}.lesson-block.is-collapsed .block-bd{display:none}.lesson-block.is-collapsed .block-hd{border-radius:var(--radius-lg);border-bottom:none}.review-block.is-collapsed .review-block-bd{display:none}.review-block.is-collapsed .review-block-hd{border-radius:var(--radius-lg);border-bottom:none}.block-drag-handle{border-radius:var(--radius-sm);width:20px;height:20px;color:var(--color-text-secondary);cursor:grab;opacity:0;transition:opacity var(--duration-fast), color var(--duration-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex;position:absolute;top:50%;left:-26px;transform:translateY(-50%)}.block-drag-handle:active{cursor:grabbing}.block-hd:hover .block-drag-handle{opacity:1}.block-drag-handle:hover{color:var(--color-text-primary)}.lesson-block.is-dragging{opacity:.45;box-shadow:none}.lesson-block.is-drag-ready,.lesson-block.is-touch-dragging{z-index:5;box-shadow:var(--shadow-lg), 0 0 0 2px var(--color-accent-primary);transition:transform var(--duration-fast), box-shadow var(--duration-fast);transform:scale(1.01)rotate(-.3deg)}.lesson-block.is-drag-ready{cursor:grabbing}.lesson-block.is-drag-ready .block-drag-handle{opacity:1}@media (prefers-reduced-motion:reduce){.lesson-block.is-drag-ready,.lesson-block.is-touch-dragging{transform:none}}.lesson-block.drag-insert-before:before,.lesson-block.drag-insert-after:after{content:"";background:var(--color-accent-primary);z-index:10;pointer-events:none;border-radius:2px;height:2px;display:block;position:absolute;left:0;right:0}.lesson-block.drag-insert-before:before{top:-3px}.lesson-block.drag-insert-after:after{bottom:-3px}.vocab-item{border-left:3px solid var(--color-accent-gold)}.vocab-example{margin-top:var(--space-2);font-size:var(--font-size-xs);color:var(--color-text-secondary);font-style:italic;line-height:var(--line-height-relaxed);border-top:1px solid var(--color-border-primary);padding-top:var(--space-1)}.vocab-example em{font-style:normal;font-weight:var(--font-weight-semibold);color:var(--color-accent-gold);background:#c8870a14;border-radius:2px;padding:0 2px}.vocab-section-divider{align-items:center;gap:var(--space-3);margin:var(--space-4) 0 var(--space-3);display:flex}.vocab-section-divider:before,.vocab-section-divider:after{content:"";background:var(--color-border-primary);flex:1;height:1px}.vocab-section-badge{font-size:10px;font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wide);text-transform:uppercase;color:var(--color-accent-gold);border-radius:var(--radius-full);padding:2px var(--space-3);white-space:nowrap;background:#c8870a14;border:1px solid #c8870a38}.vocab-chunk-item{border-left-color:#c8870a73}.notes-divider{align-items:center;gap:var(--space-3);margin:var(--space-6) 0 var(--space-3);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wide);text-transform:uppercase;color:var(--color-text-secondary);display:flex}.notes-divider:before,.notes-divider:after{content:"";background:var(--color-border-strong);flex:1;height:1px}.floating-guide-btn{bottom:var(--space-5);left:var(--space-5);z-index:400;align-items:center;gap:var(--space-2);padding:10px var(--space-4);background:var(--color-bg-card);border:1.5px solid var(--color-border-strong);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);cursor:pointer;box-shadow:var(--shadow-md);font-family:var(--font-family-body);transition:color var(--duration-fast), border-color var(--duration-fast), box-shadow var(--duration-fast);display:flex;position:fixed}.floating-guide-btn:hover{color:var(--color-text-primary);border-color:var(--color-border-strong);box-shadow:var(--shadow-lg)}.floating-guide-btn.is-hidden{display:none}.header-guide-btn{border:1px solid var(--color-border-primary);border-radius:var(--radius-full);background:var(--color-bg-card);width:32px;height:32px;color:var(--color-text-secondary);cursor:pointer;transition:color var(--duration-fast), border-color var(--duration-fast);flex-shrink:0;justify-content:center;align-items:center;padding:0;display:none}.header-guide-btn:hover{color:var(--color-text-primary);border-color:var(--color-border-strong)}.tour-overlay{z-index:800;pointer-events:all;background:0 0;position:fixed;inset:0;overflow:hidden}.tour-overlay.is-hidden{display:none}.tour-overlay.is-dimmed{background:#0000009e}.tour-scrim{z-index:800;pointer-events:none;width:100%;height:100%;position:fixed;inset:0}.tour-hole{transition:x var(--duration-normal) var(--easing-default), y var(--duration-normal) var(--easing-default), width var(--duration-normal) var(--easing-default), height var(--duration-normal) var(--easing-default)}@media (prefers-reduced-motion:reduce){.tour-hole{transition:none}}.tour-highlight{z-index:801;border-radius:var(--radius-md);box-shadow:0 0 0 4px var(--color-accent-primary), 0 0 0 9999px #0000009e;pointer-events:none;transition:top .25s var(--easing-default), left .25s var(--easing-default), width .25s var(--easing-default), height .25s var(--easing-default);position:fixed}.tour-card{z-index:802;background:var(--color-bg-card);border:1px solid var(--color-border-primary);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);padding:var(--space-5);width:min(320px, calc(100vw - 2 * var(--space-4)));max-height:calc(100dvh - 2 * var(--space-4));overscroll-behavior:contain;transition:top .25s var(--easing-default), left .25s var(--easing-default);position:fixed;overflow-y:auto}.tour-card--wide{width:min(440px, calc(100vw - 2 * var(--space-4)))}.tour-card-hd{margin-bottom:var(--space-3);justify-content:space-between;align-items:center;display:flex}.tour-step-label{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);letter-spacing:var(--letter-spacing-wide);text-transform:uppercase}.tour-close-btn{border-radius:var(--radius-sm);width:26px;height:26px;color:var(--color-text-secondary);cursor:pointer;transition:color var(--duration-fast), background var(--duration-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.tour-close-btn:hover{color:var(--color-text-primary);background:var(--color-bg-secondary)}.tour-card-title{font-family:var(--font-family-display);font-size:var(--font-size-lg);color:var(--color-text-primary);margin-bottom:var(--space-2);font-weight:700;line-height:var(--line-height-snug)}.tour-card-desc{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:var(--line-height-relaxed);margin-bottom:var(--space-4)}.tour-card-desc p{margin:0 0 var(--space-3)}.tour-card-desc p:last-child{margin-bottom:0}.tour-card-list{margin:0 0 var(--space-3);gap:var(--space-2);flex-direction:column;padding:0;list-style:none;display:flex}.tour-card-list li{padding-left:var(--space-3);line-height:var(--line-height-normal);position:relative}.tour-card-list li:before{content:"";background:var(--color-accent-primary);border-radius:50%;width:4px;height:4px;position:absolute;top:.55em;left:0}.tour-card-list strong{color:var(--color-text-primary);font-weight:var(--font-weight-semibold)}.tour-card-actions{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.modal-step.is-hidden{display:none}.app-header .theme-toggle{top:10px;right:var(--space-4);z-index:300;position:fixed}.lh-right{padding-right:48px}.exercise-list-header{align-items:center;gap:var(--space-3);padding:0 var(--space-4) var(--space-2);font-size:10px;font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wide);text-transform:uppercase;color:var(--color-text-secondary);display:flex}.el-col-num{flex-shrink:0;width:16px}.el-col-text{flex:1}.el-col-answer{text-align:center;min-width:48px}.el-col-include{text-align:center;width:26px}.student-preview-only{display:none}#lessonMain[data-view=student] .student-preview-only{display:flex}.tf-preview-btns{gap:var(--space-2);display:none}#lessonMain[data-view=student] .tf-preview-btns{display:flex}.tf-preview-btn{padding:5px var(--space-3);border:1.5px solid var(--color-border-strong);border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);font-family:var(--font-family-body);color:var(--color-text-secondary);background:var(--color-bg-card);cursor:default;flex-shrink:0}.match-preview-exercise,#lessonMain[data-view=student] .match-list{display:none}#lessonMain[data-view=student] .match-preview-exercise{display:block}.vocab-term{position:relative}.vocab-vis-btn{border-radius:var(--radius-sm);width:22px;height:22px;color:var(--color-text-secondary);cursor:pointer;opacity:0;transition:opacity var(--duration-fast), color var(--duration-fast), background var(--duration-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;display:flex}.vocab-item:hover .vocab-vis-btn{opacity:1}.vocab-vis-btn:hover{color:var(--color-text-primary);background:var(--color-bg-secondary)}.vocab-vis-btn:not(.is-visible){opacity:1;color:var(--color-text-secondary)}.vocab-item.is-student-hidden{opacity:.35}#lessonMain[data-view=student] .vocab-item.is-student-hidden{display:none}.lesson-section-label{align-items:center;gap:var(--space-3);margin:var(--space-5) 0 var(--space-3);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wide);text-transform:uppercase;color:var(--color-text-secondary);display:flex}.lesson-section-label:before,.lesson-section-label:after{content:"";background:var(--color-border-strong);flex:1;height:1px}.library-body.is-tour-open .lesson-drag-handle,.library-body.is-tour-open .folder-drag-handle,.library-body.is-tour-open .lesson-review-wrap,.library-body.is-tour-open .lesson-more-wrap,.library-body.is-tour-open .folder-more-btn{opacity:1}.tour-force-hover .vis-btn,.tour-force-hover .block-drag-handle,.tour-force-hover .item-vis-btn,.tour-force-hover .block-help-btn{opacity:1!important}#lessonMain[data-view=student] .tf-preview-btn{cursor:pointer}#lessonMain[data-view=student] .tf-preview-btn:hover:not(:disabled):not(.tf-correct):not(.tf-wrong):not(.tf-revealed){border-color:var(--color-accent-primary);background:var(--color-accent-primary-subtle);color:var(--color-accent-primary)}.tf-preview-btn.tf-correct{color:var(--color-status-success);background:#1a7a4a1a;border-color:#0000}.tf-preview-btn.tf-wrong{color:var(--color-status-error);background:#c8202e14;border-color:#0000}.tf-preview-btn.tf-revealed{color:var(--color-status-success);background:#1a7a4a14;border-color:#0000}.tf-preview-btn:disabled{cursor:not-allowed}#lessonMain[data-view=student] .exercise-item{flex-wrap:wrap;align-items:flex-start}#lessonMain[data-view=student] .exercise-item .item-num{display:inline-block!important}#lessonMain[data-view=student] .tf-preview-btn{padding:var(--space-2) var(--space-4);font-size:var(--font-size-sm);color:var(--color-text-primary)}.tf-preview-feedback{width:100%;font-size:var(--font-size-sm);margin-top:var(--space-2);font-weight:var(--font-weight-medium)}.tf-preview-feedback.is-correct{color:var(--color-status-success)}.tf-preview-feedback.is-wrong{color:var(--color-status-error)}.tf-preview-feedback[hidden]{display:none}@keyframes preview-shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}.exercise-item.is-preview-shaking{animation:.35s preview-shake}.app-header>a.btn,.app-header>button.btn{margin-right:var(--space-7)}.library-topbar-right{align-items:center;gap:var(--space-3);display:flex}.library-filter-panel{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-md);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.library-filter-panel.is-hidden{display:none}.lib-filter-btn,.lib-icon-btn{justify-content:center;width:32px;padding-left:0;padding-right:0}.lib-filter-btn.has-active{color:var(--color-accent-primary);background:var(--color-accent-primary-subtle);border-color:var(--color-accent-primary)}.filter-chip{height:26px;padding:0 var(--space-3);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);background:var(--color-bg-card);border:1px solid var(--color-border-primary);border-radius:var(--radius-full);cursor:pointer;transition:all var(--duration-fast);font-family:var(--font-family-body);white-space:nowrap;align-items:center;display:inline-flex}.filter-chip:hover{color:var(--color-text-primary);border-color:var(--color-border-strong);background:var(--color-bg-secondary)}.filter-chip.is-active{color:var(--color-accent-primary);background:var(--color-accent-primary-subtle);border-color:var(--color-accent-primary)}.filter-chip[data-filter-focus=vocabulary].is-active{color:var(--color-accent-gold);background:#c8870a1a;border-color:#c8870a61}.filter-chip[data-filter-focus=listening].is-active{color:var(--color-accent-green);background:#2ea05a1a;border-color:#2ea05a59}.filter-chip[data-filter-focus=speaking].is-active{color:var(--color-accent-cobalt);background:#1a3a8f14;border-color:#1a3a8f47}.filter-sep{background:var(--color-border-primary);width:1px;height:18px;margin:0 var(--space-1);flex-shrink:0}.library-folders{padding-top:var(--space-2);margin-top:calc(-1 * var(--space-2))}.lesson-folder{margin-bottom:var(--space-3)}.folder-hd{cursor:pointer;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);border-radius:var(--radius-md);cursor:default;min-height:36px;transition:background var(--duration-fast);-webkit-user-select:none;user-select:none;width:100%;display:flex;position:relative}.folder-hd:hover{background:var(--color-bg-secondary)}.folder-drag-handle{border-radius:var(--radius-sm);width:20px;height:20px;color:var(--color-text-secondary);cursor:grab;opacity:0;transition:opacity var(--duration-fast), color var(--duration-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex;position:absolute;top:50%;left:-22px;transform:translateY(-50%)}.folder-drag-handle:active{cursor:grabbing}.folder-hd:hover .folder-drag-handle{opacity:.55}.folder-drag-handle:hover{color:var(--color-text-primary);opacity:1!important}@media (max-width:680px){.lesson-drag-handle,.folder-drag-handle{display:none}}.folder-toggle-btn{width:22px;height:22px;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-sm);transition:color var(--duration-fast);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.folder-toggle-btn:hover{color:var(--color-text-primary)}.folder-chevron{transition:transform var(--duration-normal) ease}.lesson-folder.is-collapsed .folder-chevron{transform:rotate(-90deg)}.folder-icon{color:var(--color-text-secondary);flex-shrink:0}.folder-name{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.folder-name[contenteditable=true]{border-bottom:1.5px solid var(--color-accent-primary);cursor:text;outline:none;padding-bottom:1px}.folder-count{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.folder-more-wrap{margin-left:var(--space-1);position:relative}.folder-more-btn{border-radius:var(--radius-sm);width:26px;height:26px;color:var(--color-text-secondary);cursor:pointer;opacity:0;transition:color var(--duration-fast), background var(--duration-fast), opacity var(--duration-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.folder-hd:hover .folder-more-btn,.folder-more-btn:focus{opacity:1}.folder-more-btn:hover{color:var(--color-text-primary);background:var(--color-bg-tertiary)}.folder-more-menu{z-index:200;background:var(--color-bg-card);border:1px solid var(--color-border-primary);border-radius:var(--radius-md);box-shadow:var(--shadow-md);min-width:148px;position:absolute;top:calc(100% + 4px);right:0;overflow:hidden}.folder-more-menu.is-hidden{display:none}.folder-more-item{width:100%;padding:var(--space-2) var(--space-4);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);cursor:pointer;text-align:left;font-family:var(--font-family-body);transition:background var(--duration-fast);background:0 0;border:none;display:block}.folder-more-item:hover{background:var(--color-bg-secondary)}.folder-more-item--danger{color:var(--color-status-error)}.folder-more-item--danger:hover{background:#c8202e0f}.lesson-folder.is-collapsed .folder-body{display:none}.folder-body{padding-left:var(--library-indent)}.library-ungrouped-list{margin-left:var(--library-indent)}.library-ungrouped-label{align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);padding-left:var(--library-indent);min-height:36px;margin-bottom:var(--space-2);display:flex}.library-ungrouped-text{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary)}.library-ungrouped-count{font-size:var(--font-size-xs);color:var(--color-text-secondary);flex-shrink:0}.lesson-row:active{background:var(--color-bg-card-hover)}.folder-hd:active{background:var(--color-bg-tertiary)}.lesson-review-btn:active,.lesson-more-btn:active,.folder-more-btn:active{transform:scale(.98)}.lesson-row-actions{justify-content:flex-end}.lesson-row .lesson-more-wrap,.lesson-row .lesson-review-wrap{opacity:0;pointer-events:none;transition:opacity var(--duration-fast)}.lesson-row:hover .lesson-more-wrap,.lesson-row:hover .lesson-review-wrap,.lesson-row:focus-within .lesson-more-wrap,.lesson-row:focus-within .lesson-review-wrap,.lesson-row .lesson-more-wrap.is-menu-open,:is(.lesson-row:has(.lesson-review-btn.is-panel-open) .lesson-review-wrap,.lesson-row:has(.lesson-review-btn.is-panel-open) .lesson-more-wrap){opacity:1;pointer-events:auto}.lesson-row:has(.assign-badge--pending) .lesson-review-wrap{opacity:1;pointer-events:auto}.lesson-row-open-btn{border-width:1px;border-color:var(--color-border-primary);color:var(--color-text-secondary)}.lesson-row-open-btn:hover{background:var(--color-bg-card);border-color:var(--color-border-strong);color:var(--color-text-primary)}.lesson-more-btn,.lesson-review-btn,.lesson-row-open-btn{outline:none}.lesson-more-btn:focus-visible,.lesson-review-btn:focus-visible,.lesson-row-open-btn:focus-visible{box-shadow:0 0 0 2px var(--color-accent-primary)}.lesson-row .lesson-review-wrap:focus-within{opacity:1}.lesson-row-thumb{position:relative}.lesson-pending-dot{background:var(--color-accent-primary);border:2px solid var(--color-bg-card);z-index:1;border-radius:50%;flex-shrink:0;width:9px;height:9px;position:absolute;top:5px;right:5px}.assignments-panel{background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:0 0 var(--radius-lg) var(--radius-lg);border-top:none;overflow:hidden}.assignments-panel.is-hidden{display:none}.assignments-panel-inner{padding-top:var(--space-3);padding-bottom:var(--space-3);padding-right:calc(var(--space-5) - var(--space-3));padding-left:calc(var(--space-5) + 88px + var(--space-4) - var(--space-3))}.assignments-panel-hdr{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wide);text-transform:uppercase;color:var(--color-text-secondary);margin-bottom:var(--space-2)}.assignments-panel .assignment-item{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);transition:background var(--duration-fast);margin:2px 0;text-decoration:none;display:flex}.assignments-panel .assignment-item:last-child{border-bottom:none}.assignments-panel .assignment-item:hover{background:var(--color-bg-card)}.assignment-item.is-clickable{cursor:pointer}.assignment-label-link{color:inherit;transition:color var(--duration-fast);text-decoration:none;display:inline-block}.assignment-label-link:hover{color:var(--color-accent-primary)}.assignment-label-link:focus-visible{box-shadow:0 0 0 2px var(--color-accent-primary);border-radius:var(--radius-sm);outline:none}.assignment-item .assign-copy-wrap,.assignment-item .assign-delete-btn{position:relative}.lesson-review-btn.is-panel-open{color:var(--color-text-primary);background:var(--color-bg-card);border-color:var(--color-border-strong)}.lesson-review-btn.has-pending{color:var(--color-accent-primary);background:var(--color-accent-primary-subtle);border-color:#c8202e4d}.lesson-review-btn.has-pending:hover{color:var(--color-accent-primary);background:var(--color-accent-primary-subtle);border-color:var(--color-accent-primary)}.lesson-review-btn.has-pending .assign-badge--pending{background:var(--color-accent-primary);color:#fff;min-width:18px;height:18px}[data-theme=dark] .lesson-review-btn.has-pending{color:var(--raw-red-200);border-color:#c8202e73}.assignment-status-label{font-size:10px;font-weight:var(--font-weight-semibold);letter-spacing:.02em;border-radius:var(--radius-full);white-space:nowrap;flex-shrink:0;padding:2px 7px}.assignment-status-label--needs-review{color:var(--color-accent-primary);background:#c8202e14;border:1px solid #c8202e40}.assignment-status-label--reviewed{color:var(--color-accent-green);background:#2ea05a1a;border:1px solid #2ea05a4d}.assignment-status-label--waiting{background:var(--color-bg-secondary);color:var(--color-text-secondary);border:1px solid var(--color-border-primary)}[data-theme=dark] .assignment-status-label--needs-review{color:var(--raw-red-200);background:#c8202e1f;border-color:#c8202e4d}.drag-insert-indicator{height:2px;margin:2px var(--space-4);background:var(--color-accent-primary);pointer-events:none;box-shadow:0 0 6px var(--color-accent-primary);border-radius:1px}.assignments-panel-top{justify-content:space-between;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);padding:0 var(--space-3);display:flex}.assignments-panel-top .assignments-panel-hdr{align-items:center;margin-bottom:0;line-height:1;display:flex}.assign-send-btn{border:1px solid var(--color-border-primary);background:var(--color-bg-secondary);color:var(--color-text-secondary);flex-shrink:0}.assign-send-btn:hover{color:var(--color-text-primary);background:var(--color-bg-card);border-color:var(--color-border-strong)}.assignments-empty{justify-content:space-between;align-items:center;gap:var(--space-4);padding:0 var(--space-3);flex-wrap:wrap;display:flex}.assignments-empty-title{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.assignments-empty-sub{font-size:var(--font-size-xs);color:var(--color-text-secondary);line-height:var(--line-height-snug);margin:2px 0 0}.lesson-review-wrap{position:relative}.lesson-review-btn{height:26px;font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);letter-spacing:.01em;color:var(--color-text-secondary);background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-full);cursor:pointer;font-family:var(--font-family-body);transition:all var(--duration-fast);white-space:nowrap;align-items:center;gap:5px;padding:0 10px;display:inline-flex}.lesson-review-btn:hover{color:var(--color-text-primary);background:var(--color-bg-card);border-color:var(--color-border-strong)}.lesson-review-btn.no-assignments{opacity:.38;cursor:default;pointer-events:none}.lesson-review-btn.is-empty{color:var(--color-text-secondary);background:0 0;border-style:dashed}.lesson-review-btn.is-empty:hover{color:var(--color-text-primary);background:var(--color-bg-card)}.lesson-row:has(.assign-badge--pending){box-shadow:inset 4px 0 0 var(--color-accent-primary);background:#c8202e08}[data-theme=dark] .lesson-row:has(.assign-badge--pending){background:#c8202e0f}.review-count-badge{color:#fff;background:var(--color-accent-primary);border-radius:var(--radius-full);justify-content:center;align-items:center;min-width:16px;height:16px;padding:0 4px;font-size:10px;font-weight:700;line-height:1;display:inline-flex}.assignments-dropdown{z-index:200;background:var(--color-bg-card);border:1px solid var(--color-border-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);min-width:272px;position:absolute;top:calc(100% + 6px);right:0;overflow:hidden}.assignments-dropdown.is-hidden{display:none}.assignments-dropdown-hd{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border-primary)}.assignments-dropdown-title{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wide);text-transform:uppercase;color:var(--color-text-secondary)}.assignment-item{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border-primary);transition:background var(--duration-fast);text-decoration:none;display:flex}.assignment-item:last-child{border-bottom:none}.assignment-item:hover{background:var(--color-bg-secondary)}.assignment-check{color:var(--color-status-success);flex-shrink:0}.assignment-info{flex:1}.assignment-date{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);line-height:1.3}.assignment-status{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.assignment-arrow{display:none}.lesson-assignments-wrap{position:relative}.assign-count{border-radius:var(--radius-full);background:var(--color-bg-tertiary);min-width:18px;height:18px;color:var(--color-text-secondary);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);font-variant-numeric:lining-nums tabular-nums;justify-content:center;align-items:center;padding:0 5px;display:none}.app-action-bar .assign-count{display:inline-flex}.modal-card--assignments{max-width:760px;padding-bottom:var(--space-4)}.modal-card--assignments .assignments-panel{overscroll-behavior:contain;max-height:min(56vh,460px);margin:0 calc(-1 * var(--space-6));background:0 0;border:none;border-radius:0;overflow-y:auto}.modal-card--assignments .assignments-panel-inner{padding-left:calc(var(--space-6) - var(--space-3));padding-right:calc(var(--space-6) - var(--space-3))}.modal-card--assignments .assignment-item:first-of-type .assign-copy-tooltip{top:calc(100% + 5px);bottom:auto}[data-theme=dark] .filter-chip[data-filter-focus=speaking]:hover,[data-theme=dark] .filter-chip[data-filter-focus=speaking].is-active{color:var(--raw-cobalt-300);background:#5e82e01f;border-color:#5e82e066}[data-theme=dark] .filter-chip:hover{box-shadow:0 0 8px currentColor, 0 0 18px color-mix(in srgb, currentColor 35%, transparent)}[data-theme=dark] .filter-chip[data-filter-focus]:hover:not(.is-active){color:var(--color-text-primary);background:var(--color-bg-card);border-color:#ffffff40;box-shadow:0 0 8px #ffffff8c,0 0 18px #ffffff2e}[data-theme=dark] .filter-chip.is-active{box-shadow:0 0 6px color-mix(in srgb, currentColor 50%, transparent), 0 0 14px color-mix(in srgb, currentColor 20%, transparent)}[data-theme=dark] .filter-chip.is-active:hover{box-shadow:0 0 10px currentColor, 0 0 22px color-mix(in srgb, currentColor 42%, transparent)}.move-folder-popup{left:min(var(--popup-x,0px), calc(100vw - 216px));top:var(--popup-y,0px);max-height:calc(100vh - var(--popup-y,0px) - var(--space-4));z-index:500;background:var(--color-bg-card);border:1px solid var(--color-border-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);min-width:200px;position:fixed;overflow-y:auto}.move-folder-popup-hdr{padding:8px var(--space-4);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wide);text-transform:uppercase;color:var(--color-text-secondary);border-bottom:1px solid var(--color-border-primary)}.move-folder-option{align-items:center;gap:var(--space-3);width:100%;padding:var(--space-2) var(--space-4);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);cursor:pointer;text-align:left;font-family:var(--font-family-body);transition:background var(--duration-fast);background:0 0;border:none;display:flex}.move-folder-option:hover{background:var(--color-bg-secondary)}.move-folder-option.is-current,.move-folder-option.is-current svg{color:var(--color-accent-primary)}.move-folder-sep{background:var(--color-border-primary);height:1px;margin:var(--space-1) 0}.sheet-root{z-index:900;animation:sheet-fade var(--duration-fast) ease-out;background:#00000073;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet-panel{background:var(--color-bg-card);border-radius:var(--radius-lg) var(--radius-lg) 0 0;width:100%;min-height:0;max-height:calc(100dvh - 76px);animation:sheet-up var(--duration-normal) cubic-bezier(.32, .72, 0, 1);flex-direction:column;display:flex;box-shadow:0 -4px 24px #0000002e}.sheet-drag-zone{touch-action:none;cursor:grab;flex-shrink:0}.sheet-grabber{width:36px;height:4px;margin:var(--space-2) auto var(--space-1);border-radius:var(--radius-full);background:var(--color-border-strong)}.sheet-body{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;min-height:0;padding-top:var(--space-4);padding-bottom:calc(var(--space-4) + env(safe-area-inset-bottom,0px));flex:auto;overflow-y:auto}.sheet-hd{padding:var(--space-2) var(--space-5) var(--space-4);border-bottom:1px solid var(--color-border-primary)}.sheet-title{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);line-height:var(--line-height-snug)}.sheet-subtitle{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wide);text-transform:uppercase;color:var(--color-text-secondary);margin-top:2px}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes sheet-fade{0%{opacity:0}to{opacity:1}}.lesson-list.drag-over,#ungroupedList.drag-over{background:var(--color-accent-primary-subtle);border-radius:var(--radius-md);min-height:56px}.lesson-row.is-drag-ready,.lesson-row.is-touch-dragging,.lesson-folder.is-drag-ready>.folder-hd,.lesson-folder.is-touch-dragging>.folder-hd{z-index:5;cursor:grabbing;background:var(--color-bg-card);border-radius:var(--radius-md);box-shadow:var(--shadow-lg), 0 0 0 2px var(--color-accent-primary);transition:transform var(--duration-fast), box-shadow var(--duration-fast);position:relative;transform:scale(1.02)rotate(-.4deg)}.lesson-row.is-drag-ready .lesson-drag-handle,.lesson-folder.is-drag-ready .folder-drag-handle{opacity:1}.lesson-row.is-dragging{opacity:.35}.lesson-folder.drag-target-folder>.folder-hd{background:var(--color-accent-primary-subtle);outline:1px solid var(--color-accent-primary);border-radius:var(--radius-sm)}.assignment-item--no-link{cursor:default}.assignment-item--no-link:hover{background:0 0}.assign-badge{border-radius:var(--radius-full);flex-shrink:0;justify-content:center;align-items:center;min-width:16px;height:16px;padding:0 4px;font-size:10px;font-weight:700;line-height:1;display:inline-flex}.assign-badge--pending{background:var(--color-accent-primary);color:#fff}.assign-badge--count{background:var(--color-bg-tertiary);color:var(--color-text-secondary);border:1px solid var(--color-border-primary)}.assign-status-icon{border-radius:50%;flex-shrink:0;width:10px;height:10px}.assign-status-icon svg{display:none}.assign-status-icon--pending{background:var(--color-accent-primary)}.assign-status-icon--reviewed{background:var(--color-accent-green)}.assign-status-icon--waiting{background:var(--color-border-strong)}.btn-danger{background:var(--color-accent-primary);color:#fff;border-radius:var(--radius-full);padding:var(--space-2) var(--space-5);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);font-family:var(--font-family-body);cursor:pointer;transition:background var(--duration-fast), box-shadow var(--duration-fast);align-items:center;gap:var(--space-2);border:1px solid #0000;display:inline-flex}.btn-danger:hover{background:var(--color-accent-primary-hover)}.btn-danger:active{background:var(--color-accent-primary-active);transform:scale(.98)}.btn-danger:focus-visible{box-shadow:var(--shadow-focus);outline:none}.modal-card--sm{max-width:360px}.modal-card.modal-card--lesson-form{max-width:720px;padding:0;position:relative;overflow:hidden}.modal-card.modal-card--lesson-form .modal-close-btn{top:var(--space-4);right:var(--space-4);z-index:1;position:absolute}.modal-lesson-scroll{max-height:90vh;padding:var(--space-6);overflow-y:auto}.nl-selectors .select-wrap{flex:1}.nl-selectors .select-trigger{width:100%}.select-wrap{position:relative}.select-trigger .chevron-icon{transition:transform var(--duration-normal) var(--easing-default);flex-shrink:0}.select-trigger[aria-expanded=true]{border-color:var(--color-border-strong);color:var(--color-text-primary);background:var(--color-bg-secondary)}.select-trigger[aria-expanded=true] .chevron-icon{transform:rotate(180deg)}.select-dropdown{background:var(--color-bg-card);border:1px solid var(--color-border-strong);border-radius:var(--radius-lg);min-width:188px;box-shadow:var(--shadow-lg);padding:var(--space-2);z-index:200;opacity:0;pointer-events:none;transition:opacity var(--duration-fast) var(--easing-out), transform var(--duration-fast) var(--easing-out);position:absolute;top:calc(100% + 6px);left:0;transform:translateY(-6px)}.select-dropdown.is-open{opacity:1;pointer-events:auto;transform:translateY(0)}.select-option{align-items:baseline;gap:var(--space-2);text-align:left;width:100%;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);transition:background var(--duration-fast), color var(--duration-fast);display:flex}.select-option:hover{background:var(--color-bg-tertiary);color:var(--color-text-primary)}.select-option.is-selected{color:var(--color-accent-primary)}.select-option.is-selected:after{content:"";background:var(--color-accent-primary);border-radius:50%;flex-shrink:0;width:6px;height:6px;margin-left:auto}.select-option span{font-weight:var(--font-weight-normal);color:var(--color-text-secondary);font-size:var(--font-size-xs)}.select-option.is-selected span{color:var(--color-accent-primary);opacity:.7}.nl-url-wrap{align-items:center;gap:var(--space-3);background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-lg);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-1);transition:border-color var(--duration-fast), box-shadow var(--duration-fast);display:flex}.nl-url-wrap:focus-within{border-color:var(--color-accent-primary);box-shadow:0 0 0 3px var(--color-accent-primary-subtle);background:var(--color-bg-card)}.nl-url-icon{color:var(--color-text-tertiary);flex-shrink:0}.nl-url-input{font-size:var(--font-size-sm);font-family:var(--font-family-body);color:var(--color-text-primary);background:0 0;border:none;outline:none;flex:1;min-width:0}.nl-url-input::placeholder{color:var(--color-text-tertiary)}.nl-url-error{font-size:var(--font-size-xs);color:var(--color-accent-primary);min-height:16px;margin-bottom:var(--space-3);padding-left:var(--space-1)}.nl-selectors{gap:var(--space-2);margin-top:var(--space-4);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.nl-focus-row{align-items:center;gap:var(--space-3);margin-bottom:var(--space-5);flex-wrap:wrap;display:flex}.nl-focus-chips{gap:var(--space-2);flex-wrap:wrap;display:flex}.modal-card-footer{justify-content:flex-end;align-items:center;gap:var(--space-3);margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--color-border-primary);display:flex}.modal-card-footer .btn,.modal-card-footer .btn-danger{border-radius:var(--radius-sm);padding:var(--space-3) var(--space-6);font-size:var(--font-size-base);border:1px solid #0000;line-height:1}.modal-card-hd{margin-bottom:var(--space-5);justify-content:space-between;align-items:center;display:flex}.modal-card-title{font-family:var(--font-family-display);font-size:var(--font-size-xl);letter-spacing:var(--letter-spacing-tight);color:var(--color-text-primary);font-weight:700}.modal-close-btn{border-radius:var(--radius-sm);cursor:pointer;width:32px;height:32px;color:var(--color-text-secondary);transition:color var(--duration-fast), background var(--duration-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.modal-close-btn:hover{color:var(--color-text-primary);background:var(--color-bg-secondary)}.modal-desc{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:var(--line-height-relaxed);margin-bottom:var(--space-4)}.assign-success-icon{width:44px;height:44px;color:var(--color-status-success);margin:0 auto var(--space-3);background:#1a7a4a1a;border-radius:50%;justify-content:center;align-items:center;display:flex}.assign-success-msg{font-family:var(--font-family-display);font-size:var(--font-size-lg);color:var(--color-text-primary);text-align:center;margin-bottom:var(--space-2);font-weight:700}.link-copy-row{align-items:center;gap:var(--space-2);background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-3);display:flex}.link-display{font-family:var(--font-family-mono);font-size:var(--font-size-sm);color:var(--color-text-secondary);word-break:break-all;flex:1;min-width:0}.assign-expiry-note{align-items:center;gap:var(--space-1);font-size:var(--font-size-xs);color:var(--color-text-secondary);margin-bottom:var(--space-4);display:flex}@media (max-width:600px){.app-header{padding:0 var(--space-4)}.lesson-header{align-items:center;column-gap:var(--space-2);row-gap:var(--space-3);height:auto;padding-top:var(--space-2);padding-bottom:var(--space-2);flex-wrap:wrap;display:flex}.lh-left{order:1}.lh-right{gap:var(--space-2);order:2;margin-left:auto;padding-right:0}.lh-center{flex-basis:100%;order:3}.lh-center:empty,.app-back-label{display:none}.view-toggle{border-radius:var(--radius-lg);border:1px solid var(--color-border-primary);width:100%;padding:4px}.view-tab{text-align:center;font-weight:var(--font-weight-semibold);border-radius:var(--radius-md);flex:1;padding:9px 0}.view-tab.is-active{color:var(--color-accent-primary)}.app-header .lh-actions,.app-header .lib-new-lesson-btn{display:none}.app-action-bar{z-index:90;align-items:center;gap:var(--space-2);padding:0 var(--space-4) calc(var(--space-3) + env(safe-area-inset-bottom));background:linear-gradient(to top, var(--color-bg-secondary) 55%, color-mix(in srgb, var(--color-bg-secondary) 70%, transparent) 80%, transparent);padding-top:var(--space-8);pointer-events:none;flex-direction:column;display:flex;position:fixed;bottom:0;left:0;right:0}.app-action-bar>*{pointer-events:auto}.app-action-bar .lesson-send-wrap{order:2;width:100%}.app-action-bar .btn{justify-content:center;width:100%;height:50px}.app-action-bar .lesson-assignments-wrap{order:1;max-width:100%}.app-action-bar .lesson-review-btn{height:44px;padding:0 var(--space-5);max-width:100%;font-size:var(--font-size-sm);background:var(--color-bg-card);border:1px solid var(--color-border-primary);box-shadow:var(--shadow-md)}.app-action-bar .lesson-review-btn.is-empty{background:var(--color-bg-card);box-shadow:none}.lesson-main{padding-bottom:calc(var(--app-actions-h,130px) + var(--space-4))}.library-body{padding-bottom:calc(var(--app-actions-h,88px) + var(--space-6))}.floating-guide-btn{display:none}.header-guide-btn{display:inline-flex}.lib-empty-create-btn{display:none}#lessonMain[data-view=teacher] .lesson-block:not(.lesson-block--reference){-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.block-drag-handle{display:none}.assign-timeline{padding-left:var(--space-3);padding-right:var(--space-3)}.assign-tl-label{white-space:normal;font-size:10px;line-height:1.2}.assign-tl-date{font-size:9px}}@media print{.app-header,.student-preview-bar,.lesson-section-label,.block-collapse-btn,.block-drag-handle,.block-hd-controls,.vis-btn,.vocab-vis-btn,.item-vis-btn,.view-toggle,.hidden-student-badge,.title-edit-hint{display:none!important}.lesson-block{break-inside:avoid;box-shadow:none!important}.lesson-main{padding-top:0!important}.lesson-body{max-width:100%!important;padding:0!important}[data-print=teacher] .answer-tag{display:inline-flex!important}[data-print=teacher] .match-def{display:inline!important}[data-print=teacher] .is-student-hidden{opacity:.4}[data-print=teacher] .tf-preview-btn{pointer-events:none;color:#333!important;background:0 0!important;border:1.5px solid #aaa!important;border-radius:4px!important;padding:2px 10px!important;font-size:11px!important;display:inline-block!important}[data-print=student] .teacher-only,[data-print=student] .is-student-hidden,[data-print=student] .is-disabled{display:none!important}[data-print=student] .tf-preview-btn{pointer-events:none;color:#333!important;background:0 0!important;border:1.5px solid #aaa!important;border-radius:4px!important;padding:2px 10px!important;font-size:11px!important;display:inline-block!important}[data-print=student] .match-preview-exercise{display:block!important}[data-print=student] .match-cols{gap:24px!important;display:flex!important}[data-print=student] .match-word-btn{text-align:left!important;color:#111!important;background:0 0!important;border:none!important;border-bottom:1.5px solid #bbb!important;border-radius:0!important;width:100%!important;padding:6px 0!important;font-weight:600!important;display:block!important}[data-print=student] .match-def-btn{text-align:left!important;color:#444!important;background:0 0!important;border:none!important;border-bottom:1.5px solid #bbb!important;border-radius:0!important;width:100%!important;padding:6px 0!important;font-size:13px!important;display:block!important}@page{margin:0;size:A4}body{padding:16mm 22mm}}.user-menu-wrap{flex-shrink:0;position:relative}.user-avatar-btn{background:var(--color-bg-secondary);border:1.5px solid var(--color-border-primary);width:32px;height:32px;color:var(--color-text-secondary);font-size:11px;font-weight:var(--font-weight-bold);font-family:var(--font-family-sans);letter-spacing:.04em;cursor:pointer;transition:border-color var(--duration-fast), color var(--duration-fast);margin-right:var(--space-4);border-radius:50%;flex-shrink:0;place-items:center;display:grid}.user-avatar-btn:hover{border-color:var(--color-text-secondary);color:var(--color-text-primary)}.user-menu-backdrop{z-index:99;position:fixed;inset:0}.user-menu-dropdown{background:var(--color-bg-primary);border:1px solid var(--color-border-primary);border-radius:var(--radius-lg);width:220px;box-shadow:var(--shadow-lg);z-index:100;padding:var(--space-1) 0;position:absolute;top:calc(100% + 8px);right:0;overflow:hidden}.user-menu-identity{padding:var(--space-3) var(--space-4) var(--space-2);flex-direction:column;gap:2px;display:flex}.user-menu-name{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.user-menu-email{font-size:var(--font-size-xs);color:var(--color-text-secondary);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.user-menu-divider{background:var(--color-border-primary);height:1px;margin:var(--space-1) 0}.user-menu-item{align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-4);color:var(--color-text-primary);font-size:var(--font-size-sm);font-family:var(--font-family-sans);text-align:left;cursor:pointer;transition:background var(--duration-fast);background:0 0;border:none;display:flex}.user-menu-item:hover{background:var(--color-bg-secondary)}.user-menu-item--logout{color:var(--color-status-error)}.user-menu-item--logout:hover{background:#c8202e0f}.profile-modal{max-width:480px}.profile-modal-body{gap:var(--space-5);flex-direction:column;display:flex}.profile-section{gap:var(--space-2);flex-direction:column;display:flex}.profile-section--danger{margin-top:var(--space-2);padding:var(--space-4);border-radius:var(--radius-md);gap:var(--space-3);background:#c8202e0a;border:1px solid #c8202e47}[data-theme=dark] .profile-section--danger{background:#e0354514;border-color:#e0354559}.profile-danger-eyebrow{color:var(--color-status-error);font-weight:var(--font-weight-bold);text-transform:uppercase;letter-spacing:var(--letter-spacing-wide);font-size:var(--font-size-xs);margin:0}.profile-danger-title{margin:calc(var(--space-3) * -1) 0 0;color:var(--color-text-primary);font-weight:var(--font-weight-semibold);font-size:var(--font-size-base)}.profile-danger-note{margin:calc(var(--space-3) * -1) 0 0;font-size:var(--font-size-sm);line-height:var(--line-height-normal);color:var(--color-text-secondary)}.profile-section-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);margin:0}.profile-field-row{align-items:stretch;gap:var(--space-2);display:flex}.profile-field-row .field-input{flex:1;min-width:0}.profile-field-row .btn{justify-content:center;align-self:stretch;min-width:96px}.profile-section--danger .btn-danger{align-self:flex-start}.profile-msg{font-size:var(--font-size-xs);margin:0}.profile-msg--ok{color:var(--color-status-success)}.profile-msg--error{color:var(--color-status-error)}.profile-delete-confirm{gap:var(--space-3);flex-direction:column;display:flex}.profile-delete-warning{font-size:var(--font-size-sm);color:var(--color-text-secondary);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);line-height:var(--line-height-normal);background:#c8202e0d;border:1px solid #c8202e33;margin:0}.profile-delete-actions{gap:var(--space-2);align-items:center;display:flex}.coming-soon-badge{margin-left:var(--space-2);font-size:10px;font-weight:var(--font-weight-semibold);background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);color:var(--color-text-secondary);border-radius:var(--radius-full);vertical-align:middle;letter-spacing:.02em;padding:1px 7px;display:inline-block}.feedback-modal{max-width:560px}.feedback-body{gap:var(--space-4);flex-direction:column;max-height:82vh;display:flex;overflow-y:auto}.feedback-section{gap:var(--space-2);flex-direction:column;display:flex}.feedback-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.feedback-label-hint{font-weight:var(--font-weight-normal);color:var(--color-text-secondary);font-size:var(--font-size-xs)}.feedback-textarea{resize:vertical;min-height:76px;line-height:var(--line-height-normal);font-family:var(--font-family-body)}.feedback-poll{border:1px solid var(--color-border-primary);border-radius:var(--radius-md);overflow:hidden}.feedback-feature{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);flex-wrap:wrap;display:flex}.feedback-feature+.feedback-feature{border-top:1px solid var(--color-border-secondary)}.feedback-feature-info{flex-direction:column;flex:200px;gap:1px;min-width:180px;display:flex}.feedback-feature-title{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.feedback-feature-desc{font-size:var(--font-size-xs);color:var(--color-text-secondary);line-height:var(--line-height-normal);text-wrap:pretty}.feedback-choices{gap:var(--space-1-5);flex-wrap:wrap;display:flex}.feedback-choice{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);font-family:var(--font-family-body);color:var(--color-text-secondary);background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-full);cursor:pointer;white-space:nowrap;transition-property:color,background-color,border-color,scale;transition-duration:var(--duration-fast);padding:5px 11px;position:relative}.feedback-choice:after{content:"";border-radius:inherit;position:absolute;inset:-7px -1px}.feedback-choice:hover{color:var(--color-text-primary);border-color:var(--color-border-strong)}.feedback-choice:active{scale:.96}.feedback-choice.is-active{color:var(--color-accent-primary);background:#c8202e12;border-color:#c8202e66}@media (max-width:600px){.feedback-choices{gap:var(--space-1)}.feedback-choice{font-size:clamp(10px, 2.8vw, var(--font-size-xs));padding:5px 7px}}.csat-scale{gap:var(--space-2);display:flex}.csat-btn{height:40px;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);font-family:var(--font-family-body);font-variant-numeric:tabular-nums;color:var(--color-text-secondary);background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-md);cursor:pointer;transition-property:color,background-color,border-color,scale;transition-duration:var(--duration-fast);flex:1;justify-content:center;align-items:center;display:flex}.csat-btn:hover{color:var(--color-text-primary);border-color:var(--color-border-strong)}.csat-btn:active{scale:.96}.csat-btn.is-active{color:var(--color-accent-primary);background:#c8202e12;border-color:#c8202e66}.csat-legend{font-size:var(--font-size-xs);color:var(--color-text-secondary);justify-content:space-between;display:flex}.feedback-done{align-items:center;gap:var(--space-3);padding:var(--space-6) 0 var(--space-5);text-align:center;flex-direction:column;display:flex}.feedback-heart{width:60px;height:60px;margin-bottom:var(--space-2);background:var(--color-accent-primary-subtle);color:var(--color-accent-primary);animation:fb-heart-in .48s var(--easing-out) both, fb-heart-ring .9s ease-out .42s both;border-radius:50%;justify-content:center;align-items:center;display:flex}.feedback-heart svg{animation:1.1s ease-in-out .5s both fb-heart-beat}@keyframes fb-heart-in{0%{opacity:0;transform:scale(.4)}70%{opacity:1;transform:scale(1.08)}to{opacity:1;transform:scale(1)}}@keyframes fb-heart-ring{0%{box-shadow:0 0 #c8202e4d}70%{box-shadow:0 0 0 14px #c8202e00}to{box-shadow:0 0 #c8202e00}}@keyframes fb-heart-beat{0%,to{transform:scale(1)}15%{transform:scale(1.18)}30%{transform:scale(1)}45%{transform:scale(1.12)}60%{transform:scale(1)}}@keyframes fb-done-rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.feedback-done-title{font-family:var(--font-family-display);font-size:var(--font-size-2xl);letter-spacing:var(--letter-spacing-tight);color:var(--color-text-primary);animation:fb-done-rise .42s var(--easing-out) .26s both;font-weight:700}.feedback-done-text{font-size:var(--font-size-base);color:var(--color-text-secondary);max-width:32ch;animation:fb-done-rise .42s var(--easing-out) .38s both}.feedback-done-close{margin-top:var(--space-3);min-width:120px;animation:fb-done-rise .42s var(--easing-out) .5s both;justify-content:center}@media (prefers-reduced-motion:reduce){.feedback-heart,.feedback-heart svg,.feedback-done-title,.feedback-done-text,.feedback-done-close{animation:none}}.lesson-rating{right:var(--space-5);bottom:var(--space-5);z-index:400;width:336px;max-width:calc(100vw - 2 * var(--space-4));background:var(--color-bg-card);border:1px solid var(--color-border-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);padding:var(--space-4);animation:.35s cubic-bezier(.2,0,0,1) both lr-enter;position:fixed}@keyframes lr-enter{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.lr-head{justify-content:space-between;align-items:flex-start;gap:var(--space-2);display:flex}.lr-titles{flex-direction:column;gap:2px;min-width:0;display:flex}.lr-title{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.lr-subtitle{font-size:var(--font-size-xs);color:var(--color-text-secondary);line-height:var(--line-height-normal);text-wrap:pretty}.lr-close{border-radius:var(--radius-full);width:24px;height:24px;color:var(--color-text-secondary);cursor:pointer;transition-property:color,background-color;transition-duration:var(--duration-fast);background:0 0;border:0;flex-shrink:0;justify-content:center;align-items:center;display:flex;position:relative}.lr-close:after{content:"";border-radius:inherit;position:absolute;inset:-8px}.lr-close:hover{color:var(--color-text-primary);background:var(--color-bg-secondary)}.lr-stars{margin:var(--space-2) 0 0 -8px;gap:0;display:flex}.lr-star{width:40px;height:40px;color:var(--color-border-strong);cursor:pointer;transition-property:color,scale;transition-duration:var(--duration-fast);background:0 0;border:0;justify-content:center;align-items:center;display:flex}.lr-star.is-lit{color:var(--color-accent-gold)}.lr-star:active{scale:.96}.lr-more{gap:var(--space-3);margin-top:var(--space-3);flex-direction:column;animation:.3s cubic-bezier(.2,0,0,1) both lr-enter;display:flex}.lr-note{resize:none;min-height:56px;font-family:var(--font-family-body);line-height:var(--line-height-normal);font-size:var(--font-size-sm)}.lr-send{justify-content:center;align-self:stretch}.lr-thanks-wrap{align-items:center;gap:var(--space-2);padding:var(--space-2) 0;flex-direction:column;display:flex}.lr-thanks{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-accent-green)}.lr-full-link{align-items:center;gap:var(--space-1-5);padding:var(--space-1) 0;font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);font-family:var(--font-family-body);color:var(--color-accent-primary);cursor:pointer;transition-property:opacity;transition-duration:var(--duration-fast);background:0 0;border:0;display:inline-flex}.lr-full-link:hover{opacity:.75}@media (max-width:640px){.lesson-rating{right:var(--space-3);bottom:calc(var(--app-actions-h,0px) + var(--space-3))}}.profile-field-row--locked{cursor:default;opacity:.5;pointer-events:auto}.profile-field-row--locked input,.profile-field-row--locked button{pointer-events:none}.nl-exercise-warning{align-items:flex-start;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);color:var(--color-text-primary);line-height:var(--line-height-normal);margin-bottom:var(--space-3);background:#c8870a14;border:1px solid #c8870a4d;display:flex}.nl-exercise-warning svg{color:var(--color-accent-gold);flex-shrink:0;margin-top:2px}.nl-limit-banner{gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-md);margin-bottom:var(--space-4);background:#c8202e0d;border:1px solid #c8202e33;flex-direction:column;display:flex}.nl-limit-banner .btn{align-self:flex-start}.nl-limit-text{font-size:var(--font-size-sm);color:var(--color-text-primary);line-height:var(--line-height-normal)}.nl-limit-done{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-accent-green)}.nl-usage-note{font-size:var(--font-size-xs);color:var(--color-text-secondary);text-align:center;margin-top:var(--space-2)}.nl-submit:disabled{opacity:.55;cursor:not-allowed}.transcript-para{gap:var(--space-3);margin-bottom:var(--space-5);align-items:flex-start;display:flex}.transcript-para:last-child{margin-bottom:0}.transcript-timestamp{font-size:11px;font-family:var(--font-family-mono);font-weight:var(--font-weight-semibold);color:var(--color-accent-primary);border-radius:var(--radius-full);cursor:pointer;transition:background var(--duration-fast);white-space:nowrap;background:#c8202e12;border:1px solid #c8202e33;flex-shrink:0;margin-top:2px;padding:2px 8px;line-height:1.6}.transcript-timestamp:hover{background:#c8202e24}.transcript-para p{flex:1;margin:0}.transcript-sent{cursor:pointer}.transcript-sent:hover{background:#c8202e0f;border-radius:2px}.nl-settings-card{border:1px solid var(--color-border-primary);border-radius:var(--radius-lg);background:var(--color-bg-primary);margin-bottom:var(--space-4)}.nl-setting-pill{align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-full);padding:var(--space-1) var(--space-3);cursor:pointer;transition:background var(--duration-fast), border-color var(--duration-fast);white-space:nowrap;display:inline-flex}.nl-setting-pill:hover{background:var(--color-bg-tertiary,var(--color-bg-secondary));border-color:var(--color-text-secondary)}.nl-settings-divider{background:var(--color-border-primary);flex-shrink:0;width:1px;height:32px}.nl-settings-card .adv-wrap{border-top:1px solid var(--color-border-primary);margin:0}.adv-trigger{align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);background:var(--color-bg-primary);cursor:pointer;display:inline-flex}.adv-chevron{transition:transform var(--duration-normal) var(--easing-default);flex-shrink:0}.adv-trigger[aria-expanded=true] .adv-chevron{transform:rotate(180deg)}.adv-trigger--card{justify-content:space-between;width:100%;padding:var(--space-3) var(--space-4)!important;color:var(--color-text-secondary)!important;font-weight:var(--font-weight-medium)!important;background:0 0!important;border:none!important;border-radius:0!important;margin:0!important}.adv-trigger--card:hover{background:var(--color-bg-secondary)!important;color:var(--color-text-primary)!important;border-color:#0000!important}.adv-trigger--card .adv-trigger-left{align-items:center;gap:var(--space-2);display:flex}.adv-panel{max-height:0;transition:max-height var(--duration-slower) var(--easing-out);overflow:hidden}.adv-panel-inner{margin:0 var(--space-4) var(--space-4);padding:var(--space-5);background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-lg)}.adv-grid{gap:var(--space-5);grid-template-columns:1fr;display:grid}@media (min-width:520px){.adv-grid{gap:var(--space-4) var(--space-6);grid-template-columns:1fr 1fr}}.adv-group-label{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin-bottom:var(--space-2)}.adv-check{align-items:center;gap:var(--space-2);font-size:var(--font-size-sm);color:var(--color-text-secondary);cursor:pointer;white-space:nowrap;transition:color var(--duration-fast);padding:3px 0;line-height:1.4;display:flex}.adv-check:hover{color:var(--color-text-primary)}.adv-check input[type=checkbox]{appearance:none;border:1.5px solid var(--color-border-strong);cursor:pointer;width:15px;height:15px;transition:background var(--duration-fast), border-color var(--duration-fast);border-radius:3px;flex-shrink:0;position:relative}.adv-check input[type=checkbox]:checked{background:var(--color-accent-primary);border-color:var(--color-accent-primary);background-image:url("data:image/svg+xml,%3Csvg width='10' height='8' viewBox='0 0 10 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 3.5L3.8 6.5L9 1' stroke='white' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat}[data-focus=vocabulary] .adv-check input[type=checkbox]:checked{background-color:var(--color-accent-gold);border-color:var(--color-accent-gold)}[data-focus=listening] .adv-check input[type=checkbox]:checked{background-color:var(--color-accent-green);border-color:var(--color-accent-green)}[data-focus=speaking] .adv-check input[type=checkbox]:checked{background-color:var(--color-accent-cobalt);border-color:var(--color-accent-cobalt)}.adv-check input[type=checkbox]:focus-visible{box-shadow:var(--shadow-focus);outline:none}[data-theme=dark] .adv-panel-inner{background:var(--color-bg-tertiary);border-color:var(--color-border-strong)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .adv-panel-inner{background:var(--color-bg-tertiary);border-color:var(--color-border-strong)}}.nl-settings-row{align-items:flex-start;gap:var(--space-3);padding:var(--space-4);flex-wrap:nowrap;display:flex}.nl-settings-row .nl-focus-chips,.nl-settings-row .focus-chips{gap:var(--space-2);flex-wrap:nowrap;flex:1;display:flex;overflow:visible}.nl-settings-row .focus-chip{padding-block:var(--space-1)}.nl-duration-wrap{flex-shrink:0;position:relative}.nl-settings-sep{background:var(--color-border-primary);flex-shrink:0;align-self:flex-start;width:1px;height:20px;margin-top:20px}.nl-setting-group{gap:var(--space-1-5);flex-direction:column;flex-shrink:0;display:flex}.nl-setting-label{font-size:11px;font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-secondary);padding-left:2px}@media (max-width:600px){.nl-settings-row{flex-wrap:wrap}.nl-settings-sep{display:none}.nl-setting-group{flex-basis:100%}.nl-settings-row .nl-focus-chips,.nl-settings-row .focus-chips{gap:var(--space-2);flex-basis:100%;grid-template-columns:repeat(3,minmax(0,1fr));min-width:0;display:grid}.nl-settings-row .focus-chip{min-width:0;padding:var(--space-1-5) var(--space-3);justify-content:center;gap:var(--space-1);font-size:var(--font-size-xs);white-space:nowrap}.lesson-body,#lessonMain[data-view=student] .lesson-body{max-width:100%;padding:var(--space-4) var(--space-4) var(--space-10)}.lesson-identity{margin-top:0}.block-hd{row-gap:var(--space-2);gap:var(--space-2);padding:var(--space-2-5) var(--space-3);flex-wrap:wrap;min-height:0}.block-hd-title{min-width:0;font-size:var(--font-size-sm);line-height:var(--line-height-snug);flex:1}.block-hd .vis-btn{width:28px;height:28px}.block-hd .block-help-btn{width:24px;height:24px}.block-hd .vis-btn,.block-hd .block-help-btn,.item-vis-btn,.vocab-vis-btn{position:relative}.block-hd .vis-btn:after,.block-hd .block-help-btn:after,.item-vis-btn:after,.vocab-vis-btn:after{content:"";position:absolute;inset:-8px}.tf-item-hd,.exercise-item{align-items:flex-start;gap:var(--space-2)}.tf-list{gap:var(--space-2)}.tf-item-hd{padding:var(--space-3) var(--space-3) var(--space-2)}.tf-item-bd{padding:0 var(--space-3) var(--space-3);gap:var(--space-2)}.tf-item-num{width:20px;height:20px}.tf-choice-btn{min-height:40px;padding:var(--space-2) var(--space-2);gap:var(--space-1)}.mc-choice-btn{min-height:40px;padding:var(--space-2) var(--space-2-5);gap:var(--space-2)}.exercise-instruction{font-size:var(--font-size-xs);margin-bottom:var(--space-3)}.exercise-item{padding:var(--space-2-5) var(--space-3)}.exercise-list{gap:var(--space-1-5)}.gf-sentence{gap:var(--space-2);padding:var(--space-2-5) var(--space-3);font-size:var(--font-size-sm)}.gf-num{width:20px;height:20px}.sa-item{padding:var(--space-3)}.sa-list,.speaking-list{gap:var(--space-2)}.tf-choices--3{grid-template-columns:1fr}.transcript-para{margin-bottom:var(--space-3);display:block}.transcript-timestamp{margin:0 0 var(--space-1);padding:1px var(--space-2);font-size:10px;line-height:1.5;display:inline-block}.transcript-para p{display:block}.transcript-body{margin-top:var(--space-3);padding:var(--space-3)}.transcript-body p{line-height:var(--line-height-normal);margin-bottom:var(--space-2)}.preview-bar-eye,.preview-bar-exit,.preview-bar-text-full{display:none}.preview-bar-text-short{display:inline}.match-cols{gap:var(--space-2);grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr)}.match-word-btn,.match-def-btn{padding:var(--space-2);font-size:var(--font-size-xs)}.match-resolved-row{align-items:baseline;gap:var(--space-1) var(--space-2);flex-wrap:wrap}.match-resolved-word{min-width:0}.match-resolved-arrow{display:none}.match-resolved-def{flex-basis:100%;width:100%}.block-bd{padding-left:var(--space-3);padding-right:var(--space-3)}.vocab-grid{gap:var(--space-2);grid-template-columns:1fr}.vocab-item{padding:var(--space-2-5) var(--space-3)}.vocab-def{line-height:var(--line-height-normal)}.vocab-example{line-height:var(--line-height-normal);margin-top:var(--space-1)}.vocab-section-divider{margin:var(--space-3) 0 var(--space-2)}.speaking-item{padding:var(--space-3);gap:var(--space-3)}.speaking-icon{width:26px;height:26px}.gf-bank{padding:var(--space-2) var(--space-3)}.gf-chip,.gf-chip--display{padding:2px var(--space-2);font-size:var(--font-size-xs)}.match-list{gap:var(--space-2)}.match-pair{align-items:center;gap:var(--space-1) var(--space-2);padding:var(--space-3);background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-md);flex-wrap:wrap}.match-pair:last-child{border-bottom:1px solid var(--color-border-primary)}.match-pair:hover{background:var(--color-bg-secondary)}.match-leader{display:none}.match-word{flex:1;max-width:none}.match-def{text-align:left;flex-basis:100%;order:5;width:100%;max-width:none}.match-pair .item-vis-btn{opacity:1}.sa-question-text,.speaking-prompt{font-size:var(--font-size-sm)}.hidden-student-badge{flex-basis:100%;order:4;width:100%}.review-summary-top{gap:var(--space-3);flex-direction:column}.review-score-block{text-align:left;min-width:0}.review-score-bar-wrap{max-width:160px}.modal-step .btn-block svg{display:none}.link-copy-row{flex-direction:column;align-items:stretch}.link-copy-row .btn{width:100%}.modal-card-footer{align-items:stretch;gap:var(--space-2);flex-direction:column}.modal-card-footer .btn,.modal-card-footer .btn-danger{justify-content:center;width:100%}.modal-card-footer .btn-ghost{border-color:var(--color-border-strong);background:var(--color-bg-card)}.assignment-item{gap:var(--space-2) var(--space-3);flex-wrap:wrap}.assignment-item .assign-status-icon{display:none}.assignment-item .assignment-info{flex:100%}.lesson-row{gap:var(--space-3);padding:var(--space-4);grid-template-rows:auto auto;grid-template-columns:56px 1fr;align-items:start}.lesson-row-thumb{grid-area:1/1;width:56px;height:34px}.lesson-row-info{grid-area:1/2;padding-right:0}.lesson-row-title-line{padding-right:calc(38px + var(--space-2))}.lesson-row-title{white-space:normal;text-overflow:clip;font-size:var(--font-size-base);line-height:1.3;overflow:visible}.lesson-row-title-line{margin-bottom:0}.lesson-row-chips{margin-top:var(--space-2)}.lesson-row-actions{width:100%;margin-top:var(--space-2);z-index:auto;grid-area:2/1/auto/-1;justify-content:center;align-items:center;position:static}.lesson-row-actions .lesson-more-wrap{top:6px;right:calc(var(--space-2) - 1px);margin-right:0;position:absolute}.lesson-row-actions .lesson-review-wrap{flex:0 auto;min-width:0}.lesson-row-actions .lesson-review-btn{height:40px;padding:0 var(--space-7);font-size:var(--font-size-sm)}.lesson-row-actions .lesson-more-btn{background:0 0;border:none;width:40px;height:40px}.lesson-row-actions .lesson-more-btn:hover{background:0 0}.lesson-row,.folder-hd{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.lesson-row-chips{gap:3px}.lesson-row .lesson-param,.lesson-row .lesson-focus-chip{letter-spacing:.01em;padding:5px calc(6px - .01em) 4px 6px;font-size:9px}.exercise-sticky-hd{top:var(--app-header-h-real,var(--app-header-height))}.gf-bank--sticky{top:calc(var(--app-header-h-real,var(--app-header-height)) + var(--ex-hd-h,118px));position:sticky}.library-topbar{align-items:stretch;gap:var(--space-4);margin-top:0;margin-bottom:var(--space-4);flex-direction:column}.library-topbar-right{gap:var(--space-2)}.library-search-wrap{flex:1}.library-search{width:100%}.library-body{padding:var(--space-4) var(--space-4) var(--space-10);--library-indent:0px}.folder-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.folder-count{white-space:nowrap;flex-shrink:0}.folder-more-btn{width:40px;height:40px}.folder-toggle-btn{display:none}.library-ungrouped-label{padding-left:var(--space-2);padding-right:calc(var(--space-2) + 40px + var(--space-1))}.library-ungrouped-text{flex:1;min-width:0}.lesson-more-item,.folder-more-item,.move-folder-option{padding:var(--space-4) var(--space-5);font-size:var(--font-size-base)}.sheet-panel .assignments-panel-top,.sheet-panel .assignments-empty{align-items:stretch;gap:var(--space-3);padding:0 var(--space-5);flex-direction:column}.sheet-panel .assignments-panel-hdr{display:none}.sheet-panel .assign-send-btn{justify-content:center;width:100%;height:44px}.sheet-panel .assignment-item{align-items:center;column-gap:var(--space-2);row-gap:var(--space-2);padding:var(--space-3) var(--space-5);border-radius:0;grid-template-rows:auto auto;grid-template-columns:1fr auto auto;margin:0;display:grid}.sheet-panel .assignment-item+.assignment-item{border-top:1px solid var(--color-border-primary)}.sheet-panel .assignment-info{grid-area:1/1;min-width:0}.sheet-panel .assignment-status-label{grid-area:2/1;justify-self:start}.sheet-panel .assign-copy-wrap{grid-area:1/2/3;align-self:center}.sheet-panel .assign-delete-btn{grid-area:1/3/3;align-self:center}.sheet-panel .assign-copy-btn,.sheet-panel .assign-delete-btn{width:36px;height:36px}.sheet-panel .assignments-empty-title{display:none}.sheet-panel .assignments-empty-sub{font-size:var(--font-size-sm);margin-top:0}.assignments-panel-inner{padding-left:0;padding-right:0}.assignments-panel .assignment-item{align-items:flex-start}}.workshop-main{background:var(--color-bg-primary);flex-direction:column;height:100dvh;padding:0;display:flex;overflow:hidden}.ws-howto{align-items:center;gap:var(--space-2) var(--space-3);margin-bottom:var(--space-3);padding:var(--space-2) var(--space-3);background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-md);font-size:var(--font-size-xs);color:var(--color-text-secondary);flex-wrap:wrap;display:flex}.ws-howto-item{align-items:center;gap:6px;display:inline-flex}.ws-howto b{color:var(--color-text-primary);font-weight:var(--font-weight-semibold)}.ws-howto-sep{background:var(--color-border-strong);width:1px;height:13px}.ws-swatch{font-size:11px;font-weight:var(--font-weight-semibold);color:var(--color-accent-gold);border-radius:4px;padding:2px 5px;line-height:1}.ws-swatch--sel{background:#c8870a33}.ws-swatch--sug{color:var(--color-text-secondary);background:#c8870a12;border:1.5px dotted #c8870a99}.workshop-intro{width:100%;max-width:1100px;margin:var(--space-5) auto var(--space-4);padding:0 var(--space-6);flex-shrink:0}.workshop-intro h1{font-family:var(--font-family-display);font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);margin:0;line-height:1.15}.workshop-intro p{font-size:var(--font-size-sm);color:var(--color-text-secondary);max-width:80ch;margin:0;line-height:1.45}.ws-title-row{align-items:center;gap:var(--space-2);display:flex}.ws-help-btn{border:1px solid var(--color-border-primary);border-radius:var(--radius-full);background:var(--color-bg-secondary);width:26px;height:26px;color:var(--color-text-secondary);cursor:pointer;transition:background var(--duration-fast), color var(--duration-fast);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex;position:relative;top:4px}.ws-help-btn:hover{background:var(--color-bg-card-hover);color:var(--color-text-primary)}.modal-card.ws-help-card{max-width:640px;max-height:90vh;overflow-y:auto}.ws-help-lead{font-size:var(--font-size-base);color:var(--color-text-secondary);line-height:var(--line-height-relaxed);margin:0 0 var(--space-4)}.ws-help-steps{margin:0 0 var(--space-4);flex-direction:column;display:flex}.ws-help-step{align-items:center;gap:var(--space-4);padding:var(--space-4) 0;display:flex}.ws-help-step+.ws-help-step{border-top:1px solid var(--color-border-secondary)}.ws-help-tile{background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-md);flex-shrink:0;justify-content:center;align-items:center;width:124px;height:76px;display:flex;position:relative}.ws-help-chip{white-space:nowrap;font-size:13px;font-weight:var(--font-weight-medium);color:var(--color-accent-gold);border-radius:6px;align-items:center;padding:3px 8px;display:inline-flex;position:relative}.ws-help-chip--sel{background:#c8870a33}.ws-help-chip--sug{background:#c8870a12;border:1.5px dotted #c8870a99}.ws-help-chip--select{background:#c8870a52;border-radius:2px;padding:2px 4px}.ws-help-selbar{background:var(--color-accent-gold);width:2px;position:absolute;top:-2px;bottom:-2px}.ws-help-selbar--l{left:-1px}.ws-help-selbar--r{right:-1px}.ws-help-selbar:before{content:"";background:var(--color-accent-gold);border-radius:2px;width:6px;height:6px;position:absolute;left:50%;transform:translate(-50%)}.ws-help-selbar--l:before{top:-4px}.ws-help-selbar--r:before{bottom:-4px}.ws-help-vcard{background:var(--color-bg-card);border:1px solid var(--color-border-primary);border-left:3px solid var(--color-accent-gold);text-align:left;border-radius:5px;width:92px;padding:7px 8px;position:relative}.ws-help-vcard-top{justify-content:space-between;align-items:center;gap:6px;display:flex}.ws-help-vcard-word{font-size:12px;font-weight:var(--font-weight-bold);color:var(--color-accent-gold)}.ws-help-vcard-x{color:var(--color-text-secondary);font-size:14px;line-height:1;position:relative}.ws-help-vcard-line{background:var(--color-border-primary);border-radius:2px;height:4px;margin-top:6px;display:block}.ws-help-vcard-line--short{width:62%}.ws-help-cursor{color:var(--color-text-primary);filter:drop-shadow(0 1px 1.5px #00000040);pointer-events:none;position:absolute;bottom:8px;right:12px}.ws-help-cursor--x{inset:50% auto auto 50%;transform:translate(-3px,-3px)}.ws-help-num{background:var(--color-accent-primary);color:#fff;width:25px;height:25px;font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.ws-help-text{flex:1;min-width:0}.ws-help-th{align-items:center;gap:var(--space-2);margin:0 0 4px;display:flex}.ws-help-th h3{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0;line-height:1.25}.ws-help-text p{padding-left:calc(25px + var(--space-2));font-size:var(--font-size-base);color:var(--color-text-secondary);margin:0;line-height:1.5}.ws-help-legend{align-items:center;gap:var(--space-2) var(--space-5);padding:var(--space-3) var(--space-4);margin:0 0 var(--space-5);background:var(--color-bg-secondary);border:1px solid var(--color-border-primary);border-radius:var(--radius-md);font-size:var(--font-size-xs);color:var(--color-text-secondary);flex-wrap:wrap;display:flex}.ws-help-legend-cap{font-weight:var(--font-weight-semibold);color:var(--color-text-primary);flex-basis:100%}.ws-help-legend .ws-howto-item{align-items:center;gap:6px;display:inline-flex}.ws-help-got{justify-content:center;width:100%}.workshop-grid{width:100%;max-width:1100px;min-height:0;padding:0 var(--space-6) var(--space-5);gap:var(--space-6);flex:1;grid-template-columns:minmax(0,1fr) 360px;align-items:stretch;margin:0 auto;display:grid}.workshop-transcript{background:var(--color-bg-card);border:1px solid var(--color-border-primary);border-radius:var(--radius-lg);min-height:0;padding:var(--space-5);flex-direction:column;display:flex}.ws-vidblock{margin-bottom:var(--space-3);flex-shrink:0}.ws-vidhead{cursor:pointer;width:100%;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);transition:color var(--duration-fast);background:0 0;border:0;align-items:center;gap:8px;padding:4px 0;display:flex}.ws-vidhead:hover{color:var(--color-text-primary)}.ws-vidhead-label{text-align:left;flex:1}.ws-vidhead-chev{transition:transform var(--duration-fast)}.ws-vidhead[aria-expanded=false] .ws-vidhead-chev{transform:rotate(-90deg)}.ws-video{aspect-ratio:16/9;width:auto;max-width:100%;height:240px;max-height:32vh;margin:var(--space-2) auto 0;border-radius:var(--radius-md);background:#000;position:relative;overflow:hidden}.ws-video iframe{border:0;width:100%;height:100%;position:absolute;inset:0}.ws-transcript-body{min-height:0;font-size:var(--font-size-md);color:var(--color-text-primary);-webkit-user-select:text;user-select:text;flex:1;line-height:2;overflow-y:auto}.ws-transcript-body ::selection{background:#c8870a52}.ws-transcript-body ::selection{background:#c8870a52}.ws-para{margin:0 0 var(--space-4);align-items:flex-start}.ws-para:last-child{margin-bottom:0}.ws-para .transcript-timestamp{margin-top:6px}.ws-token{transition:background var(--duration-fast), color var(--duration-fast);padding:1px 2px}.ws-clickable{cursor:pointer}.ws-token:not(.ws-mark):hover{background:#c8870a24;border-radius:4px}.ws-mark{-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:5px;padding:1px 3px}.ws-mark--sel{color:var(--color-accent-gold);font-weight:var(--font-weight-medium);background:#c8870a33}.ws-mark--sel:hover{background:#c8870a4d}.ws-mark--sug{background:#c8870a12;border:1.5px dotted #c8870a99}.ws-mark--sug:hover{background:#c8870a29}.workshop-panel{background:var(--color-bg-card);border:1px solid var(--color-border-primary);border-radius:var(--radius-lg);min-height:0;box-shadow:var(--shadow-md);flex-direction:column;display:flex;overflow:hidden}.ws-panel-head{justify-content:space-between;align-items:baseline;gap:var(--space-2);padding:var(--space-4) var(--space-4) var(--space-3);border-bottom:1px solid var(--color-border-primary);display:flex}.ws-panel-head h2{font-family:var(--font-family-display);font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-text-primary);margin:0}.ws-counter{font-size:var(--font-size-sm);color:var(--color-text-secondary);white-space:nowrap}.ws-counter .is-over{color:var(--color-accent-gold);font-weight:var(--font-weight-semibold)}.ws-panel-scroll{padding:var(--space-3) var(--space-4);flex:1;overflow-y:auto}.ws-panel-section+.ws-panel-section{margin-top:var(--space-3)}.ws-panel-section .vocab-section-divider{margin:var(--space-2) 0 var(--space-3)}.ws-terms{gap:var(--space-2);flex-direction:column;display:flex}.ws-term{border:1px solid var(--color-border-primary);border-left:3px solid var(--color-accent-gold);border-radius:var(--radius-sm);background:var(--color-bg-secondary);padding:var(--space-3)}.ws-term-head{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.ws-term-word{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-accent-gold)}.ws-term-remove{border-radius:var(--radius-full);width:20px;height:20px;color:var(--color-text-secondary);cursor:pointer;transition:background var(--duration-fast), color var(--duration-fast);background:0 0;border:0;flex-shrink:0;justify-content:center;align-items:center;font-size:16px;line-height:1;display:inline-flex}.ws-term-remove:hover{color:var(--color-accent-primary);background:#c8202e1a}.ws-term-def{font-size:var(--font-size-xs);color:var(--color-text-secondary);margin:3px 0 0;line-height:1.45}.ws-term-def--pending{opacity:.75;font-style:italic}.ws-term-ex{margin:var(--space-2) 0 0;padding-top:var(--space-2);border-top:1px solid var(--color-border-secondary);font-size:var(--font-size-xs);color:var(--color-text-secondary);font-style:italic;line-height:1.5}.ws-term-ex em{color:var(--color-accent-gold);font-style:italic;font-weight:var(--font-weight-medium)}.ws-empty{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0;font-style:italic}.ws-warning{margin:0 var(--space-4) 0}.ws-toast{margin:var(--space-2) var(--space-4) 0;font-size:var(--font-size-sm);color:var(--color-accent-primary)}.ws-generate{margin:var(--space-4);justify-content:center;align-self:stretch}.ws-overlay{z-index:100;justify-content:center;align-items:center;gap:var(--space-3);text-align:center;padding:var(--space-6);background:color-mix(in srgb, var(--color-bg-primary) 88%, transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);flex-direction:column;display:flex;position:fixed;inset:0}.workshop-loading{text-align:center;min-height:70vh;padding:var(--space-6);flex-direction:column;justify-content:center;align-items:center;display:flex}@media (max-width:900px){.workshop-main{height:auto;padding-bottom:var(--space-8);display:block;overflow:visible}.workshop-grid{flex:none;grid-template-columns:1fr;min-height:0;padding-bottom:0}.workshop-transcript{display:block}.ws-transcript-body,.workshop-panel{overflow:visible}.ws-panel-scroll{max-height:none;overflow:visible}}.adv-toggle-row{justify-content:space-between;align-items:center;gap:var(--space-4);cursor:pointer;display:flex}.adv-toggle-info{flex:1;min-width:0}.adv-toggle-title{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);display:block}.adv-toggle-desc{font-size:var(--font-size-xs);color:var(--color-text-secondary);line-height:var(--line-height-relaxed);margin-top:2px;display:block}.adv-section-label{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-secondary);margin:0 0 var(--space-3)}.toggle-switch{flex-shrink:0}.toggle-input{opacity:0;pointer-events:none;width:0;height:0;position:absolute}.toggle-track{background:var(--color-border-strong);border-radius:var(--radius-full);cursor:pointer;width:40px;height:22px;transition:background var(--duration-fast);display:block;position:relative}.toggle-track:after{content:"";width:16px;height:16px;box-shadow:var(--shadow-xs);transition:transform var(--duration-fast) var(--easing-bounce);background:#fff;border-radius:50%;position:absolute;top:3px;left:3px}.toggle-input:checked+.toggle-track{background:var(--color-accent-primary)}.toggle-input:checked+.toggle-track:after{transform:translate(18px)}.toggle-input:focus-visible+.toggle-track{box-shadow:var(--shadow-focus)}.nl-customvocab-row{margin-top:var(--space-3);padding-top:var(--space-4);border-top:1px solid var(--color-border-primary)}.assign-preview{margin-bottom:var(--space-5);padding:var(--space-4);background:var(--color-bg-card);border:1px solid var(--color-border-primary);border-radius:var(--radius-md)}.assign-preview-group+.assign-preview-group{margin-top:var(--space-4)}.assign-preview-label{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wide);text-transform:uppercase;color:var(--color-text-secondary);margin-bottom:var(--space-2)}.assign-preview-loading{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.assign-preview-chips{align-items:center;gap:var(--space-1-5);flex-wrap:wrap;display:flex}.assign-preview-chip{font-size:var(--font-size-xs);padding:5px var(--space-2) 4px;color:var(--color-text-secondary);background:var(--color-bg-tertiary);border:1px solid var(--color-border-primary);border-radius:var(--radius-full);white-space:nowrap;align-items:center;line-height:1;display:inline-flex}.assign-preview-chip[data-focus=vocabulary]{color:var(--color-accent-gold);background:#c8870a1f;border-color:#c8870a47}.assign-preview-chip[data-focus=listening]{color:var(--color-accent-green);background:#2ea05a1a;border-color:#2ea05a40}.assign-preview-chip[data-focus=speaking]{color:var(--color-accent-cobalt);background:#1a3a8f1a;border-color:#1a3a8f40}.assign-preview-chip.is-muted{opacity:.72;background:0 0;border-style:dashed}.assign-preview-chip.is-muted:not([data-focus]){color:var(--color-text-secondary)}.assign-preview-warning{margin:var(--space-3) 0 0;font-size:var(--font-size-xs);line-height:var(--line-height-snug);color:var(--color-text-secondary)}.assign-preview-warning--blocking{color:var(--color-accent-primary);margin:0}.field-hint{margin:var(--space-1-5) 0 0;font-size:var(--font-size-xs);line-height:var(--line-height-snug);color:var(--color-text-secondary)}.modal-card-hd{align-items:flex-start;gap:var(--space-3)}.modal-card-hd-text{flex:1;min-width:0}.modal-card-title{line-height:1.15}.modal-card-hd:has(.modal-card-subtitle){padding-bottom:var(--space-5);border-bottom:1px solid var(--color-border-primary);margin-bottom:var(--space-5)}.modal-card-subtitle{text-overflow:ellipsis;white-space:nowrap;margin:var(--space-2) 0 0;font-size:var(--font-size-sm);line-height:var(--line-height-snug);color:var(--color-text-secondary);overflow:hidden}.modal-card-hd .modal-close-btn{flex-shrink:0;margin:0 -8px 0 0}.modal-overlay{z-index:1000}.modal-step .field-label{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold)}.modal-card{max-height:calc(100dvh - var(--space-6));overscroll-behavior:contain;overflow-y:auto}@media (max-width:600px){input[type=text],input[type=search],input[type=email],input[type=password],input[type=url],textarea,select{font-size:var(--font-size-base)}}@media (hover:none),(any-pointer:coarse){.vis-btn,.item-vis-btn,.match-pair .item-vis-btn,.vocab-vis-btn,.block-help-btn,.assign-delete-btn,.folder-more-btn,.lesson-row .lesson-more-wrap,.lesson-row .lesson-review-wrap{opacity:1;pointer-events:auto}.block-help-btn:focus+.block-help-tooltip{display:block}.assign-copy-tooltip--hint{display:none}}@media (max-width:600px){.user-avatar-btn{margin-right:0}.lesson-header{min-height:var(--app-header-height)}.user-avatar-btn.is-sheet-open{color:var(--color-text-primary);border-color:var(--color-border-strong);font-size:0}}.account-sheet{inset:var(--app-header-height) 0 0 0;z-index:99;background:var(--color-bg-primary);justify-content:center;align-items:center;gap:var(--space-6);padding:var(--space-6) var(--space-5) var(--space-8);overscroll-behavior:contain;animation:account-sheet-in var(--duration-normal) var(--easing-out);flex-direction:column;display:flex;position:fixed;overflow-y:auto}@keyframes account-sheet-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.account-sheet{animation:none}}.account-sheet .user-menu-identity{align-items:center;gap:var(--space-1);text-align:center;padding:0}.account-sheet .user-menu-name{font-size:var(--font-size-lg)}.account-sheet .user-menu-email{font-size:var(--font-size-sm)}.account-sheet-items{align-items:center;gap:var(--space-5);flex-direction:column;width:100%;display:flex}.account-sheet .user-menu-item{width:auto;font-size:var(--font-size-lg);padding:var(--space-1) var(--space-4);background:0 0;border:0;justify-content:center}.account-sheet .user-menu-item:hover{background:0 0}.account-sheet .user-menu-item>svg,.account-sheet .user-menu-divider{display:none}.account-sheet-theme{width:auto;padding:var(--space-2) var(--space-4);color:var(--color-text-secondary);font-weight:var(--font-weight-medium);border:0}.account-sheet .account-sheet-theme{font-size:var(--font-size-base)}.account-sheet .account-sheet-theme>svg{display:block}[data-theme=dark] .account-sheet .account-sheet-theme>svg.icon-sun,.account-sheet .account-sheet-theme>svg.icon-moon{display:none}[data-theme=dark] .account-sheet .account-sheet-theme>svg.icon-moon{display:block}
