@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Serif:wght@600&display=swap";body{background:#e8eef4;min-width:320px;margin:0}:root{--ink:#1f2933;--muted:#62748a;--line:#d7dee8;--panel:#fff;--accent:#0f6e56;--warn:#9a5b00;--bg:#e8eef4;color:var(--ink);background:var(--bg);font-family:IBM Plex Sans,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}.app{grid-template-rows:auto 1fr auto;height:100%;display:grid}.topbar{background:var(--panel);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:1rem;padding:.85rem 1.25rem;display:flex}.brand{letter-spacing:-.02em;font-family:IBM Plex Serif,Georgia,serif;font-size:1.35rem;font-weight:600}.brand-logo{width:auto;height:30px;display:block}.brand-lg .brand-logo{height:44px;margin-bottom:.5rem}.subtitle{color:var(--muted);font-size:.85rem}.meta{flex-wrap:wrap;justify-content:center;gap:.45rem;display:flex}.pill,.status{border:1px solid var(--line);background:#f8fafc;border-radius:999px;padding:.25rem .7rem;font-size:.8rem}.status-online{color:var(--accent);background:#e7f7ef;border-color:#9ed9bc}.status-reconnecting,.status-connecting{color:var(--warn);background:#fff6e5;border-color:#f0d39a}.status-offline,.status-error{color:#9b1c1c;background:#fdecec;border-color:#f0b4b4}.pill.warn{color:var(--warn);background:#fff6e5;border-color:#f0d39a}.pill.ok{color:var(--accent);background:#e7f7ef;border-color:#9ed9bc}.pill.hw-status{white-space:nowrap;display:inline-block}.actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.actions button{appearance:none;border:1px solid var(--accent);background:var(--accent);color:#fff;font:inherit;cursor:pointer;border-radius:8px;padding:.45rem .9rem}.actions button.secondary{color:var(--accent);background:#fff}.actions button:hover{filter:brightness(1.05)}.actions .linkish{color:var(--accent);font-size:.85rem}.answer-overlay{background:#fff;border:2px solid #0f6e56;border-radius:6px;outline:none;padding:0 .5rem;font:14px IBM Plex Sans,Segoe UI,sans-serif;box-shadow:0 4px 16px #0f6e562e}.canvas-wrap{touch-action:none;overflow:hidden}.board-host{min-height:0;overflow:hidden}.hint{color:var(--muted);background:var(--panel);border-top:1px solid var(--line);padding:.65rem 1.25rem;font-size:.85rem}@media (width<=800px){.topbar{flex-direction:column;align-items:flex-start}}.shell{background:radial-gradient(ellipse 80% 60% at 10% 0%, #d9e8f5 0%, transparent 55%), radial-gradient(ellipse 70% 50% at 90% 100%, #d5ebe3 0%, transparent 50%), var(--bg);place-items:center;min-height:100%;padding:2rem 1rem;display:grid}.auth-card{background:var(--panel);border:1px solid var(--line);border-radius:16px;width:min(440px,100%);padding:1.75rem;box-shadow:0 12px 40px #1f293314}.brand-lg{letter-spacing:-.03em;margin-bottom:.35rem;font-family:IBM Plex Serif,Georgia,serif;font-size:1.85rem;font-weight:600}.lede{color:var(--muted);margin:0 0 1.25rem;line-height:1.45}.stack{flex-direction:column;gap:.85rem;display:flex}.stack label{flex-direction:column;gap:.35rem;font-size:.9rem;display:flex}.stack input,.stack select,.inline-form input{border:1px solid var(--line);font:inherit;border-radius:8px;padding:.55rem .75rem}.role-pick{border:1px solid var(--line);border-radius:10px;margin:0;padding:.75rem 1rem}.role-pick .radio{align-items:center;gap:.5rem;margin-top:.4rem;display:flex}.row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.btn{appearance:none;font:inherit;cursor:pointer;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;padding:.5rem .95rem;text-decoration:none;display:inline-flex}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.secondary{border-color:var(--accent);color:var(--accent);background:#fff}.btn.ghost{border-color:var(--line);color:var(--ink);background:0 0}.btn.danger{color:#9f2d24;background:#fff;border-color:#e7b8b4}.btn.block{width:100%}.btn:disabled{opacity:.6;cursor:not-allowed}.banner{border-radius:10px;margin-bottom:1rem;padding:.75rem .9rem;font-size:.9rem}.banner.error{color:#9b1c1c;background:#fdecec;border:1px solid #f0b4b4}.banner.info{color:#1f4b6e;background:#eef5fb;border:1px solid #c5d8ea}.muted{color:var(--muted)}.small{font-size:.85rem}.footer-note{margin-top:1.25rem}.cabinet-app{background:var(--bg);height:100vh;display:flex}.cabinet-sidebar{border-right:1px solid var(--line);background:#f8fafc;flex-direction:column;justify-content:space-between;width:260px;display:flex}.sidebar-top{padding:1.5rem 1rem}.sidebar-brand{color:var(--accent);align-items:center;gap:.5rem;margin-bottom:2rem;padding:0 .5rem;text-decoration:none;display:flex}.sidebar-nav{flex-direction:column;gap:.25rem;display:flex}.nav-item{color:var(--ink);border-radius:8px;align-items:center;gap:.75rem;padding:.75rem 1rem;font-size:.95rem;font-weight:500;text-decoration:none;display:flex}.nav-item:hover{background:#eef2f6}.nav-item.active{color:var(--accent);background:#e2eef2}.nav-item.disabled{color:var(--muted);cursor:default}.nav-item.disabled:hover{background:0 0}.badge.soon{color:var(--muted);text-transform:lowercase;background:#eef2f6;font-weight:500}.nav-icon{opacity:.7;font-size:1.1rem}.nav-item.active .nav-icon{opacity:1}.badge{background:var(--line);color:var(--ink);border-radius:999px;margin-left:auto;padding:.1rem .4rem;font-size:.75rem}.badge.warning{color:#fff;background:#f5a623}.sidebar-bottom{border-top:1px solid var(--line);padding:1rem}.user-profile{align-items:center;gap:.75rem;display:flex}.user-avatar{background:var(--accent);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-size:.9rem;font-weight:600;display:flex}.user-info{flex:1;min-width:0}.user-name{white-space:nowrap;text-overflow:ellipsis;font-size:.9rem;font-weight:600;overflow:hidden}.user-role{color:var(--muted);font-size:.8rem}.btn-icon{cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:.25rem;font-size:1.2rem;display:flex}.btn-icon:hover{background:#eef2f6}.cabinet-content{flex-direction:column;flex:1;display:flex;overflow:hidden}.cabinet-topbar{background:var(--panel);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:1rem 2rem;display:flex}.topbar-title{color:var(--muted);font-size:.9rem}.topbar-actions{align-items:center;gap:1rem;display:flex}.lang-switch{position:relative}.lang-switch-btn{appearance:none;border:1px solid var(--line);height:36px;color:var(--ink);font:inherit;letter-spacing:.03em;cursor:pointer;background:#fff;border-radius:8px;align-items:center;gap:.35rem;padding:0 .7rem;font-size:.82rem;font-weight:600;display:inline-flex}.lang-switch-btn:hover{background:#f8fafc;border-color:#b8c5d4}.lang-menu{z-index:20;border:1px solid var(--line);background:#fff;border-radius:10px;min-width:148px;margin:0;padding:.3rem;list-style:none;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 10px 28px #1f29331f}.lang-menu button{appearance:none;text-align:left;width:100%;font:inherit;color:var(--ink);cursor:pointer;background:0 0;border:none;border-radius:7px;padding:.5rem .7rem;font-size:.9rem}.lang-menu button:hover,.lang-menu button.active{color:var(--accent);background:#e7f4ef}.user-menu-wrap{margin-left:auto;position:relative}.lang-menu.user-menu{min-width:180px;top:auto;bottom:calc(100% + 6px)}.user-menu button{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.user-menu-divider{background:var(--line);height:1px;margin:.3rem .2rem}.lang-menu .user-menu-logout,.lang-menu .user-menu-logout:hover{color:#c62828}.lang-menu .user-menu-logout:hover{background:#fdecec}.cabinet-main{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:2rem;overflow-y:auto}.dashboard-header{justify-content:space-between;align-items:flex-start;margin-bottom:2rem;display:flex}.dashboard-welcome h1{margin:0 0 .5rem;font-family:IBM Plex Serif,Georgia,serif;font-size:2rem}.dashboard-welcome p{color:var(--muted);margin:0;font-size:1.1rem}.dashboard-grid{grid-template-columns:1fr 340px;align-items:start;gap:1.5rem;display:grid}@media (width<=900px){.dashboard-grid{grid-template-columns:1fr}.cabinet-app{flex-direction:column}.cabinet-sidebar{flex-direction:row;align-items:center;width:100%;height:auto;padding:.5rem 1rem}.sidebar-top{align-items:center;gap:1rem;padding:0;display:flex}.sidebar-brand{margin-bottom:0}.sidebar-nav{flex-direction:row}.sidebar-bottom{border-top:none;padding:0}}.dashboard-col{flex-direction:column;gap:1.5rem;display:flex}.panel-header{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.panel-header h2{align-items:center;gap:.5rem;margin:0;display:flex}.link-all{color:var(--accent);font-size:.9rem;font-weight:500;text-decoration:none}.link-all:hover{text-decoration:underline}.review-card{border:1px solid var(--line);background:#fff;border-radius:12px;align-items:center;gap:1rem;margin-bottom:.75rem;padding:1rem;display:flex}.review-icon{color:#3b82f6;background:#eef5fb;border-radius:8px;justify-content:center;align-items:center;width:40px;height:40px;font-size:1.2rem;display:flex}.review-icon.test{color:#ef4444;background:#fdf2f2}.review-info{flex:1}.review-title{margin-bottom:.25rem;font-weight:600}.review-meta{color:var(--muted);font-size:.85rem}.lesson-card{border:1px solid var(--line);background:#fff;border-radius:12px;align-items:center;gap:1rem;margin-bottom:.75rem;padding:1rem;display:flex}.lesson-card.lesson-done,.panel.lesson-done{background:#ecf8f2;border-color:#8fd1b3}.list li.lesson-done{background:#ecf8f2;border:1px solid #8fd1b3;border-radius:10px;margin:0 -.8rem;padding:.65rem calc(.8rem - 1px)}.list li.lesson-done:first-child{padding-top:.65rem}.list li.lesson-done+li{border-top-color:#0000}.lesson-line-list .btn.lesson-completed{color:var(--accent);background:#ecf8f2;border-color:#8fd1b3}.lesson-line-list .btn.secondary.lesson-completed{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.lesson-done-badge{color:var(--accent);vertical-align:middle;background:#d3efe2;border-radius:999px;margin-left:.5rem;padding:.05rem .5rem;font-size:.75rem;font-weight:600;display:inline-block}.lesson-finish-row{justify-content:flex-end;display:flex}.lesson-thumb{border:1px solid var(--line);background:#f1f5f9;border-radius:6px;flex:none;width:80px;height:50px;overflow:hidden}.lesson-thumb-card{aspect-ratio:16/9;width:100%;height:auto}.lesson-thumb-image,.lesson-thumb-empty{object-fit:cover;width:100%;height:100%;display:block}.lesson-thumb-empty{color:#94a3b8;background-color:#f8fafc;background-image:linear-gradient(#eef2f6 1px,#0000 1px),linear-gradient(90deg,#eef2f6 1px,#0000 1px),none;background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:18px 18px;background-attachment:scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;flex-direction:column;justify-content:center;align-items:center;gap:.35rem;font-size:.78rem;display:flex}.lesson-thumb:not(.lesson-thumb-card) .lesson-thumb-empty span:not(.sr-only){display:none}.sr-only{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.lesson-info{flex:1}.lesson-title{margin-bottom:.25rem;font-weight:600}.lesson-meta{color:var(--muted);font-size:.85rem}.lesson-status{color:var(--muted);background:#f1f5f9;border-radius:999px;padding:.2rem .5rem;font-size:.75rem}.lesson-status.ready{color:#1b7f4e;background:#e5f6ea}.student-card{border-bottom:1px solid var(--line);align-items:center;gap:1rem;padding:.75rem 0;display:flex}.student-card:last-child{border-bottom:none}.student-avatar{width:40px;height:40px;color:var(--accent);background:#e2eef2;border-radius:50%;justify-content:center;align-items:center;font-weight:600;display:flex}.student-info{flex:1}.student-name{color:var(--ink);margin-bottom:.15rem;font-weight:600;text-decoration:none}.student-status{color:var(--muted);font-size:.8rem}.student-status.pending{color:#f5a623}.copy-invite{color:var(--accent);align-items:center;gap:.25rem;margin-top:.25rem;font-size:.8rem;text-decoration:none;display:flex}.add-student-btn{border:1px dashed var(--line);width:100%;color:var(--accent);cursor:pointer;background:#fff;border-radius:8px;margin-top:1rem;padding:.75rem;font-weight:500}.add-student-btn:hover{background:#f8fafc}.hint-card{background:#fdf8e5;border:1px solid #fce8b2;border-radius:12px;padding:1.25rem}.hint-icon{margin-bottom:.5rem;font-size:1.5rem}.hint-title{margin-bottom:.5rem;font-weight:600}.hint-text{color:var(--muted);margin-bottom:1rem;font-size:.9rem;line-height:1.4}.hint-link{color:var(--accent);font-size:.9rem;font-weight:500;text-decoration:none}.panel{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:1.1rem 1.25rem}.panel.soft{background:#f7fafc}.panel h2{margin:0 0 .75rem;font-family:IBM Plex Serif,Georgia,serif;font-size:1.1rem}.panel .row h2{margin:0}.student-sections{flex-direction:column;gap:1rem;display:flex}.student-section{border:1px solid var(--line);background:#f8fafc;border-radius:12px;flex-direction:column;gap:.75rem;padding:.9rem 1rem;display:flex}.student-section h3{margin:0;font-size:1.05rem}.class-block{border:1px solid var(--line);background:#fff;border-radius:10px;flex-direction:column;gap:.55rem;padding:.75rem .85rem;display:flex}.lesson-line-list{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.lesson-line-list a{color:var(--accent)}.class-lesson-list{flex-direction:column;gap:.55rem;margin-bottom:.85rem;display:flex}.list{flex-direction:column;gap:.75rem;margin:0;padding:0;list-style:none;display:flex}.list li{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:1rem;padding:.65rem 0;display:flex}.list li:first-child{border-top:none;padding-top:0}.inline-form{flex-wrap:wrap;gap:.5rem;display:flex}.inline-form input,.inline-form select{border:1px solid var(--line);font:inherit;background:#fff;border-radius:8px;flex:160px;padding:.55rem .75rem}.student-name{color:inherit;flex:1;text-decoration:none}.pill.soft{color:var(--muted);background:#f1f5f9}.panel-toggle{width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:.6rem;padding:0;display:flex}.panel .panel-toggle h2{margin:0}.panel-toggle[aria-expanded=true]{margin-bottom:.75rem}.panel-toggle-chevron{color:var(--muted);margin-left:auto;transition:transform .15s}.panel-toggle-chevron.open{transform:rotate(180deg)}.panel-toggle:hover .panel-toggle-chevron{color:var(--accent)}.invite-link{border:1px dashed var(--line);word-break:break-all;background:#f8fafc;border-radius:8px;margin:.5rem 0 .75rem;padding:.65rem .75rem;font-size:.85rem;display:block}@media (width<=700px){.cabinet-top,.list li{flex-direction:column;align-items:flex-start}}.class-tabs{border:1px solid var(--line);background:#eef3f8;border-radius:12px;gap:.25rem;width:fit-content;padding:.25rem;display:flex}.class-tab{appearance:none;color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:none;border-radius:9px;padding:.55rem 1.15rem}.class-tabs-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.class-send-student{align-items:center;gap:.4rem;display:flex}.class-tab.active{background:var(--panel);color:var(--ink);font-weight:600;box-shadow:0 1px 3px #1f293314}.board-tab-panel{max-width:none;padding:.75rem}.cabinet-main:has(.board-tab-panel){max-width:1200px}.board-workspace{border:1px solid var(--line);background:#f7fafc;border-radius:12px;grid-template-rows:auto 1fr auto;height:min(70vh,720px);min-height:520px;display:grid;overflow:hidden}.board-workspace.compact{height:min(68vh,680px)}.app>.board-workspace{border:none;border-radius:0;height:100%;min-height:0}.board-workspace-bar{background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:.55rem .75rem;display:flex}.board-workspace-canvas{height:100%;min-height:0;position:relative}.board-expand{z-index:9;border:1px solid var(--line);color:#1f2933;background:#fff;border-radius:10px;place-items:center;width:40px;height:40px;text-decoration:none;display:grid;position:absolute;bottom:12px;right:12px;box-shadow:0 4px 14px #1f29331f}.board-expand:hover{color:var(--accent)}.actions a.board-cabinet{border:1px solid var(--line);color:var(--ink);font:inherit;background:#fff;border-radius:8px;align-items:center;padding:.45rem .9rem;text-decoration:none;display:inline-flex}.actions a.board-cabinet:hover{border-color:var(--accent);color:var(--accent)}.board-toolbar{z-index:8;border:1px solid var(--line);background:#fff;border-radius:14px;align-items:center;gap:2px;max-width:calc(100% - 20px);padding:6px;display:flex;position:absolute;bottom:14px;left:50%;overflow-x:auto;transform:translate(-50%);box-shadow:0 10px 28px #1f293324}.board-tool{appearance:none;color:#334155;cursor:pointer;min-width:52px;height:46px;font:inherit;background:0 0;border:none;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:4px 6px 3px;font-size:10px;line-height:1;display:inline-flex}.board-tool span{white-space:nowrap}.board-tool:hover:not(:disabled){background:#f4f7fb}.board-tool.active{color:#0f6e56;background:#e7f4ef}.board-tool:disabled{opacity:.35;cursor:default}.board-tool-sep{background:#e2e8f0;flex:none;align-self:stretch;width:1px;margin:6px 4px}.board-colors{gap:5px;padding:0 6px;display:flex}.board-swatch{cursor:pointer;border:2px solid #fff;border-radius:50%;width:16px;height:16px;padding:0;box-shadow:0 0 0 1px #c9d3df}.board-swatch.active{box-shadow:0 0 0 2px #0f6e56}.board-swatch:disabled{cursor:default}.board-text-editor{z-index:12;resize:none;background:#fffffff5;border:2px solid #0f6e56;border-radius:6px;outline:none;margin:0;padding:2px 6px;font-family:IBM Plex Sans,Segoe UI,sans-serif;line-height:1.35;position:absolute;overflow:auto;box-shadow:0 8px 24px #0f6e5629}.board-selection-bar{z-index:9;border:1px solid var(--line);background:#fff;border-radius:8px;flex-wrap:wrap;justify-content:center;gap:4px;max-width:560px;padding:4px;display:flex;position:absolute;box-shadow:0 6px 16px #1f29331f}.board-selection-bar button{appearance:none;color:var(--ink);font:inherit;cursor:pointer;background:#f4f7fb;border:none;border-radius:6px;padding:4px 8px;font-size:12px}.board-selection-bar button:hover{color:var(--accent);background:#e7f4ef}.board-selection-bar button:disabled{opacity:.38;cursor:default;color:var(--ink);background:#f4f7fb}.board-format{border-right:1px solid var(--line);align-items:center;gap:2px;margin-right:2px;padding-right:4px;display:inline-flex}.board-selection-bar .board-format button{min-width:26px;font-size:13px}.board-selection-bar .board-format button.active{color:var(--accent);background:#d6efe4}.board-font-size{border:1px solid var(--line);height:24px;font:inherit;cursor:pointer;background:#fff;border-radius:6px;padding:0 2px;font-size:12px}.board-selection-split{background:var(--line);align-self:stretch;width:1px;margin:2px}.board-face-label{letter-spacing:.02em;color:#8a6a12;align-self:center;padding:0 6px;font-size:11px;font-weight:650}.board-link-hint{z-index:12;color:#fff;pointer-events:none;background:#0f6e56;border-radius:999px;max-width:min(520px,100% - 24px);padding:.45rem .75rem;font-size:.85rem;position:absolute;top:58px;left:50%;transform:translate(-50%)}.board-notice{z-index:13;max-width:min(520px,100% - 24px);color:var(--warn);text-align:center;background:#fff6e5;border:1px solid #f0d39a;border-radius:999px;padding:6px 12px;font-size:13px;position:absolute;top:12px;left:50%;transform:translate(-50%)}@media (width<=860px){.board-tool{width:36px;min-width:36px;padding:0}.board-tool span{display:none}}.lesson-mode-switch{margin-bottom:.85rem}.lesson-panel{flex-direction:column;gap:.9rem;display:flex}.lesson-toolbar{justify-content:space-between;align-items:flex-end}.lesson-title-field{flex-direction:column;flex:220px;gap:.3rem;font-size:.9rem;display:flex}.lesson-title-field input,.lesson-step-card input,.lesson-step-card textarea,.lesson-step-card select,.lesson-player-card input,.lesson-player-card textarea{border:1px solid var(--line);font:inherit;border-radius:8px;width:100%;padding:.5rem .7rem}.lesson-add{padding-bottom:.25rem}.lesson-editor-layout{grid-template-columns:minmax(0,1fr) 240px;align-items:start;gap:1rem;display:grid}.lesson-editor-main{min-width:0}.lesson-sections-panel{border:1px solid var(--line);background:#fff;border-radius:12px;flex-direction:column;gap:.6rem;padding:.75rem;display:flex;position:sticky;top:1rem}.lesson-sections-head{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.lesson-sections-list{flex-direction:column;gap:.3rem;margin:0;padding:0;list-style:none;display:flex}.lesson-sections-list button{text-align:left;border:1px solid var(--line);width:100%;font:inherit;cursor:pointer;background:#f8fafc;border-radius:8px;justify-content:space-between;gap:.5rem;padding:.45rem .6rem;display:flex}.lesson-sections-list button:hover{border-color:var(--accent)}.lesson-sections-list li{position:relative}.lesson-sections-list li[draggable=true] button{cursor:grab}.lesson-sections-list li.dragging{opacity:.45}.lesson-sections-list li.drop-before:before,.lesson-sections-list li.drop-after:after{content:"";background:var(--accent);border-radius:2px;height:2px;position:absolute;left:0;right:0}.lesson-sections-list li.drop-before:before{top:-.2rem}.lesson-sections-list li.drop-after:after{bottom:-.2rem}@media (width<=900px){.lesson-editor-layout{grid-template-columns:1fr}.lesson-sections-panel{order:-1;position:static}}.add-task{display:inline-block;position:relative}.add-task-trigger{font:inherit;color:var(--accent);cursor:pointer;background:0 0;border:0;align-items:center;gap:.55rem;padding:.25rem .1rem;font-weight:600;display:inline-flex}.add-task-plus{color:#fff;background:#1a9b5c;border-radius:50%;place-items:center;width:2rem;height:2rem;font-size:1.35rem;line-height:1;display:inline-grid;box-shadow:0 2px 6px #1a9b5c59}.add-task-trigger:hover .add-task-plus{background:#15824d}.btn.add-task-paste{vertical-align:middle;margin-left:1rem}.add-task.compact .add-task-plus{width:1.7rem;height:1.7rem;font-size:1.15rem}.add-task-menu{z-index:20;border:1px solid var(--line);background:#fff;border-radius:10px;flex-direction:column;min-width:190px;padding:.3rem;display:flex;position:absolute;top:calc(100% + .3rem);left:0;box-shadow:0 10px 28px #0f172a24}.add-task-menu button{text-align:left;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:7px;padding:.5rem .7rem}.add-task-menu button:hover{background:#e9f6ef}.lesson-add-inline{padding-left:.25rem}.lesson-section-card{border-left:4px solid var(--accent);background:#eef7f3;border-radius:10px;flex-wrap:wrap;align-items:flex-end;gap:.6rem;margin-top:.5rem;padding:.7rem .85rem;scroll-margin-top:1rem;display:flex}.lesson-section-field{color:var(--muted);flex-direction:column;flex:260px;gap:.3rem;font-size:.85rem;display:flex}.lesson-section-field input{border:1px solid var(--line);font:inherit;color:var(--ink);border-radius:8px;padding:.5rem .7rem;font-size:1.05rem;font-weight:700}.lesson-step-card input.lesson-exercise-title-input{font-weight:700}.lesson-section-title{margin:0 0 .85rem;font-size:1.25rem}.lesson-page-item+.lesson-page-item{border-top:1px solid var(--line);margin-top:1.1rem;padding-top:1.1rem}.step-hint{background:#f2faf6;border:1px solid #cfe6da;border-radius:10px;font-size:.9rem}.step-hint summary{cursor:pointer;color:var(--accent);align-items:center;gap:.5rem;padding:.5rem .7rem;font-weight:600;list-style:none;display:flex}.step-hint summary::-webkit-details-marker{display:none}.step-hint summary:after{content:"▾";margin-left:auto;transition:transform .15s}.step-hint[open] summary:after{transform:rotate(180deg)}.step-hint-icon{background:var(--accent);color:#fff;border-radius:50%;place-items:center;width:1.3rem;height:1.3rem;font-size:.8rem;font-weight:700;display:inline-grid}.step-hint-body{flex-direction:column;gap:.55rem;padding:0 .85rem .8rem;line-height:1.45;display:flex}.step-hint-body p,.step-hint-body ol{margin:0}.step-hint-body ol{flex-direction:column;gap:.25rem;padding-left:1.3rem;display:flex}.step-hint-preview{background:#fff;border:1px dashed #b7d6c6;border-radius:8px;flex-direction:column;gap:.3rem;padding:.55rem .75rem;display:flex}.choice-list{gap:.75rem}.choice-question{border:1px solid var(--line);background:#fff;border-radius:10px;flex-direction:column;gap:.45rem;padding:.65rem .8rem;display:flex}.choice-sentence{gap:.45rem;font-size:1.02rem;line-height:1.7;display:flex}.choice-number{color:var(--muted);font-weight:600}.choice-slot{text-align:center;border-bottom:2px solid #9fb0c2;min-width:3.5rem;margin:0 .15rem;padding:0 .4rem;font-weight:600;display:inline-block}.choice-slot.mark-correct{background:#e5f6ea;border-color:#1b7f4e}.choice-slot.mark-incorrect{background:#fde8e6;border-color:#c0392b}.choice-slot.mark-open{background:#fff4cc;border-color:#d4a017}.choice-options{flex-wrap:wrap;gap:.4rem;padding-left:1.4rem;display:flex}.choice-option{border:1px solid var(--line);font:inherit;cursor:pointer;background:#f8fafc;border-radius:999px;padding:.3rem .85rem}.choice-option:hover:not(:disabled){border-color:var(--accent)}.choice-option.chosen{border-color:var(--accent);background:#e9f6ef;font-weight:600}.choice-option.chosen.mark-correct{background:#e5f6ea;border-color:#1b7f4e}.choice-option.chosen.mark-incorrect{background:#fde8e6;border-color:#c0392b}.choice-option:disabled{cursor:default}.lesson-player-card label.radio{cursor:pointer;align-items:center;gap:.55rem;display:flex}.lesson-player-card label.radio input{width:auto;margin:0}.lesson-step-card input.lesson-exercise-title-input::placeholder{font-weight:400}.lesson-exercise-title{margin:0 0 .55rem;font-size:1.05rem;font-weight:700}.copy-lesson{border-top:1px solid var(--line);margin-top:1.25rem;padding-top:1rem}.copy-lesson h3{margin:0 0 .35rem}.lesson-steps{flex-direction:column;gap:.85rem;margin:0;padding:0;list-style:none;display:flex}.lesson-step-card,.lesson-under-video{scroll-margin-top:1rem}.lesson-step-card.lesson-step-error,.lesson-section-card.lesson-step-error,.lesson-under-video.lesson-step-error{background:#fdf1f0;border:2px solid #c0392b;box-shadow:0 0 0 4px #c0392b26}.lesson-step-error-text{color:#c0392b;flex:100%;order:3;font-size:.9rem;font-weight:600}.lesson-section-card .lesson-step-error-text{order:0}.lesson-save-error{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.lesson-save-error .btn{color:#c0392b;background:#fff;border-color:#c0392b;flex:none}.lesson-step-fresh{outline:2px solid var(--accent);outline-offset:3px}.lesson-step-card{border:1px solid var(--line);background:#f8fafc;border-radius:12px;flex-direction:column;gap:.65rem;padding:.85rem;display:flex}.lesson-step-head{justify-content:space-between}.lesson-image{border:1px solid var(--line);object-fit:contain;background:#fff;border-radius:10px;max-width:100%;max-height:280px}.lesson-video{aspect-ratio:16/9;background:#0f172a;border-radius:12px;width:100%;max-width:720px;position:relative;overflow:hidden}.lesson-video iframe,.lesson-video video{border:0;width:100%;height:100%;position:absolute;inset:0}.lesson-video-attach{border-top:1px solid var(--line);flex-direction:column;gap:.6rem;margin-top:.25rem;padding-top:.85rem;display:flex}.lesson-under-video{border:1px dashed var(--line);background:#fff;border-radius:12px;margin-top:.25rem;padding:.85rem}.lesson-player-card{border:1px solid var(--line);background:#f8fafc;border-radius:12px;min-height:180px;padding:1rem}.lesson-player-body{white-space:pre-wrap;line-height:1.5}.lesson-prompt{margin:0;font-size:1.05rem;line-height:1.45}.gap-card{border:1px dashed var(--line);background:#fff;border-radius:10px;padding:.7rem}.gap-text{white-space:pre-wrap;line-height:2.15}.lesson-player-card input.mark-correct,.lesson-player-card textarea.mark-correct,.lesson-player-card select.mark-correct,label.radio.mark-correct{background:#e5f6ea;border-color:#1b7f4e}.lesson-player-card input.mark-incorrect,.lesson-player-card textarea.mark-incorrect,.lesson-player-card select.mark-incorrect,label.radio.mark-incorrect{background:#fde8e6;border-color:#c0392b}.lesson-player-card input.mark-open,.lesson-player-card textarea.mark-open,.lesson-player-card select.mark-open,label.radio.mark-open{background:#fff4cc;border-color:#d4a017}label.radio.mark-correct,label.radio.mark-incorrect,label.radio.mark-open{border-radius:8px;padding:.2rem .4rem}.lesson-hl{background:#ffe08a;border-radius:2px}.lesson-ul{text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:2px}.lesson-pen{z-index:30;border:1px solid var(--line);background:#fff;border-radius:10px;gap:.3rem;padding:.3rem;display:flex;position:fixed;box-shadow:0 8px 24px #0f172a1f}.lesson-player-card .gap-text input,.lesson-player-card .gap-text select{border:1px solid var(--line);vertical-align:baseline;border-radius:8px;width:auto;min-width:6.5rem;max-width:16rem;margin:0 .2rem;padding:.15rem .45rem;display:inline-block}.lesson-player-card .gap-text input.mark-correct,.lesson-player-card .gap-text select.mark-correct{background:#e5f6ea;border-color:#1b7f4e}.lesson-player-card .gap-text input.mark-incorrect,.lesson-player-card .gap-text select.mark-incorrect{background:#fde8e6;border-color:#c0392b}.lesson-player-card .gap-text input.mark-open,.lesson-player-card .gap-text select.mark-open{background:#fff4cc;border-color:#d4a017}label.btn input[type=file]{display:none}.lesson-options{margin:0;padding-left:1.1rem}.lesson-progress-dots{flex-wrap:wrap;gap:.35rem;display:flex}.lesson-progress-dots .dot{background:#c9d4e0;border-radius:50%;width:.55rem;height:.55rem}.lesson-progress-dots .dot.done{background:#7bb89f}.lesson-progress-dots .dot.active{outline:2px solid var(--accent);outline-offset:2px}.whitespace-pre{white-space:pre-wrap}.dialog-backdrop{z-index:50;background:#0f172a59;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.dialog{width:min(460px,100%);box-shadow:0 18px 48px #0f172a33}.word-bank{background:#f1f6fb;border-radius:10px;flex-wrap:wrap;gap:.5rem;min-height:3rem;padding:.75rem;display:flex}.word-bank.drop-zone.over{outline:2px dashed #3aa0e8}.word-chip{border:1px solid var(--line);cursor:grab;-webkit-user-select:none;user-select:none;background:#fff;border-radius:8px;align-items:center;padding:.3rem .7rem;line-height:1.3;display:inline-flex}.word-chip:before{content:"⋮";color:#9aa8b8;margin-right:.4rem}.word-chip.static{cursor:default}.word-chip.picked,.drop-slot.picked{border-color:#3aa0e8;box-shadow:0 0 0 3px #3aa0e840}.drop-slot{border:1px solid var(--line);text-align:center;vertical-align:middle;cursor:pointer;-webkit-user-select:none;user-select:none;background:#fff;border-radius:8px;min-width:5.5rem;margin:0 .15rem;padding:0 .6rem;line-height:1.9;display:inline-block}.drop-slot.filled{cursor:grab;background:#f8fbff}.drop-slot.over{background:#e9f5fe;border-color:#3aa0e8}.drop-slot.mark-correct{color:#145c39;background:#e5f6ea;border-color:#1b7f4e}.drop-slot.mark-incorrect{color:#8e2a20;background:#fde8e6;border-color:#c0392b}.match-grid{gap:.6rem;display:grid}.match-row{border-radius:10px;grid-template-columns:minmax(0,1fr) 4rem minmax(0,1fr);align-items:stretch;display:grid}.match-item{text-align:left;border:1px solid var(--line);font:inherit;color:inherit;cursor:pointer;background:#fff;border-radius:10px;padding:.6rem .8rem}.match-item:disabled{cursor:default;color:inherit}.match-item.active{border-color:#3aa0e8;box-shadow:0 0 0 3px #3aa0e840}.match-item.linked{background:#f4faff;border-color:#3aa0e8}.match-link{align-self:center;height:1.5rem;position:relative}.match-link.on{cursor:pointer}.match-link.on:before{content:"";border-top:2px solid #3aa0e8;position:absolute;top:50%;left:-.3rem;right:-.3rem}.match-link.on:after{content:"";background:#3aa0e8;border-radius:50%;width:.55rem;height:.55rem;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.match-row.mark-correct .match-item{background:#e5f6ea;border-color:#1b7f4e}.match-row.mark-correct .match-link.on:before{border-color:#1b7f4e}.match-row.mark-correct .match-link.on:after{background:#1b7f4e}.match-row.mark-incorrect .match-item{background:#fde8e6;border-color:#c0392b}.match-row.mark-incorrect .match-link.on:before{border-color:#c0392b}.match-row.mark-incorrect .match-link.on:after{background:#c0392b}.match-edit{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;align-items:center;gap:.5rem;display:grid}.match-edit-row{display:contents}.banner.success{color:#145c39;background:#ecf8f2;border:1px solid #8fd1b3}.hw-step{border-left:3px solid #0000;border-radius:2px;margin-left:-.75rem;padding-left:.75rem}.hw-step.hw-missing{background:#fdf4f3;border-left-color:#c0392b}.hw-step.hw-review{background:#fffbea;border-left-color:#d4a017}.hw-verdict{flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.75rem;display:flex}.btn.verdict-correct{color:#145c39;background:#e5f6ea;border-color:#1b7f4e}.btn.verdict-incorrect{color:#8e2a20;background:#fde8e6;border-color:#c0392b}.hw-actions{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.6rem;margin-top:1rem;padding-top:1rem;display:flex}.hw-actions .banner{flex-basis:100%;margin-bottom:0}.drop-slot.mark-open{background:#fff4cc;border-color:#d4a017}.list li.hw-waiting{background:#fffbea;border:1px solid #f0d39a;border-radius:10px;margin:0 -.8rem;padding:.65rem calc(.8rem - 1px)}.list li.hw-waiting:first-child{padding-top:.65rem}.list li.hw-waiting+li{border-top-color:#0000}.hw-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.hw-filters{flex-wrap:wrap}.item-menu-wrap{position:relative}.btn.item-menu-btn{padding:.5rem}.item-menu{z-index:10;border:1px solid var(--line);background:#fff;border-radius:8px;min-width:230px;padding:.25rem;position:absolute;top:calc(100% + 4px);right:0;box-shadow:0 4px 12px #0000001a}.item-menu button{text-align:left;width:100%;font:inherit;color:var(--ink);white-space:nowrap;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:.5rem .75rem;display:block}.item-menu button:hover{background:#eef2f6}.item-menu button.danger{color:#e53e3e}.hw-student-select{border:1px solid var(--line);background:#fff;border-radius:8px;min-width:180px;padding:.55rem 1rem}.hw-filters .pill{margin-left:.3rem;padding:0 .45rem}.bell-btn{position:relative}.bell-count{color:#fff;text-align:center;background:#e5484d;border-radius:999px;min-width:16px;height:16px;padding:0 4px;font-size:.65rem;font-weight:700;line-height:16px;position:absolute;top:-2px;right:-4px}.bell-menu{z-index:30;border:1px solid var(--line);background:#fff;border-radius:12px;width:320px;max-height:420px;padding:.4rem;position:absolute;top:calc(100% + 6px);right:0;overflow-y:auto;box-shadow:0 12px 32px #0f172a1f}.bell-menu ul{margin:0;padding:0;list-style:none}.bell-menu-title{padding:.4rem .6rem .5rem;font-weight:600}.bell-empty{margin:0;padding:0 .6rem .5rem}.bell-item{appearance:none;text-align:left;width:100%;font:inherit;color:var(--ink);cursor:pointer;background:0 0;border:none;border-radius:8px;flex-direction:column;gap:.2rem;padding:.55rem .6rem;font-size:.88rem;display:flex}.bell-item:hover{background:#eef2f6}.bell-item.unread{background:#eef5fb;font-weight:600}
