:root{--ground:#f5f6f1;--surface:#eaede3;--surface-2:#e1e5d8;--raised:#fff;--border:#dfe3d6;--text:#16201a;--muted:#5b655d;--faint:#8b948c;--accent:#1b6e66;--accent-ink:#fff;--forest:#13362d;--forest-2:#1c4a3e;--on-forest:#eef3e6;--on-forest-muted:#a9bdb2;--leaf:#b9e27c;--positive:#2e7d32;--positive-bg:#dcf5e1;--negative:#b42318;--negative-bg:#fde9e7;--warning:#92400e;--warning-bg:#fdf3dc;--active:#e3e7da;--radius:22px;--radius-sm:14px;--pill:999px;--gap:16px;--serif:"Instrument Serif", Georgia, serif;--sans:"Instrument Sans", Inter, system-ui, sans-serif;--ease:cubic-bezier(.2, .7, .2, 1);--sidebar:236px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--ground:#0e1411;--surface:#161e19;--surface-2:#1d2721;--raised:#1a231e;--border:#26312b;--text:#e8eee6;--muted:#a2ada5;--faint:#78847c;--accent:#5cc4b2;--accent-ink:#062320;--forest:#173d33;--forest-2:#1f4d41;--on-forest:#eef3e6;--on-forest-muted:#a9bdb2;--leaf:#c3ea86;--positive:#6fd283;--positive-bg:#12301b;--negative:#ff8a7a;--negative-bg:#3a1714;--warning:#f3c06b;--warning-bg:#352a12;--active:#212c25;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body{background:var(--ground);color:var(--text);font:15px/1.55 var(--sans);-webkit-font-smoothing:antialiased;margin:0}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}::selection{background:var(--leaf);color:var(--forest)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}h1,h2,h3{letter-spacing:-.01em;margin:0;font-weight:600}.serif{font-family:var(--serif);letter-spacing:-.015em;font-weight:400}.muted{color:var(--muted)}.faint{color:var(--faint)}.small{font-size:13px}.tiny{font-size:12px}.num{font-variant-numeric:tabular-nums}.row{align-items:center;gap:10px;display:flex}.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.stack{gap:var(--gap);display:grid}.pre{white-space:pre-wrap}.err{color:var(--negative)}.icon{flex:none;display:block}.btn{border-radius:var(--pill);background:var(--forest);height:40px;color:var(--on-forest);cursor:pointer;transition:transform .15s var(--ease), background .2s;white-space:nowrap;border:none;justify-content:center;align-items:center;gap:8px;padding:0 18px;font-size:14px;font-weight:600;display:inline-flex}.btn:hover{background:var(--forest-2)}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.55;cursor:default;transform:none}.btn.accent{background:var(--accent);color:var(--accent-ink)}.btn.leaf{background:var(--leaf);color:var(--forest)}.btn.quiet{background:var(--surface);color:var(--text)}.btn.quiet:hover{background:var(--surface-2)}.btn.sm{height:32px;padding:0 13px;font-size:13px}.btn.full{width:100%}.btn.icon-only{width:40px;padding:0}.link{color:var(--accent);align-items:center;gap:4px;font-weight:500;display:inline-flex}.link:hover{text-underline-offset:3px;text-decoration:underline}input,select,textarea{font:inherit;color:var(--text);background:var(--raised);border:1px solid var(--border);border-radius:12px;max-width:100%;padding:10px 12px;transition:border-color .15s}input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:none}textarea{resize:vertical;width:100%}.field{color:var(--muted);gap:6px;font-size:13px;display:grid}.field input{height:46px;font-size:15px}.chip{border-radius:var(--pill);background:var(--surface);cursor:pointer;border:none;height:32px;padding:0 14px;font-size:13px;transition:background .15s}.chip:hover{background:var(--surface-2)}.chip.on{background:var(--forest);color:var(--on-forest)}.form-card .chip:not(.on){background:var(--raised);box-shadow:inset 0 0 0 1px var(--border);color:var(--text)}.chip-n{opacity:.7;font-variant-numeric:tabular-nums;margin-left:8px;font-size:11px}button.link{cursor:pointer;background:0 0;border:none;padding:0 6px}.pill{border-radius:var(--pill);background:var(--surface);height:24px;color:var(--muted);white-space:nowrap;align-items:center;gap:5px;padding:0 10px;font-size:12px;font-weight:500;display:inline-flex}.pill.ok{background:var(--positive-bg);color:var(--positive)}.pill.warn{background:var(--warning-bg);color:var(--warning)}.pill.bad{background:var(--negative-bg);color:var(--negative)}.badge{border-radius:var(--pill);background:var(--accent);min-width:20px;height:20px;color:var(--accent-ink);place-items:center;padding:0 6px;font-size:11px;font-weight:600;display:inline-grid}.seg{background:var(--surface);border-radius:var(--pill);gap:2px;padding:4px;display:inline-flex;position:relative}.seg button{border-radius:var(--pill);cursor:pointer;height:32px;color:var(--muted);z-index:1;background:0 0;border:none;padding:0 14px;font-size:13px;transition:color .2s;position:relative}.seg button.on{color:var(--text);background:var(--raised)}.app{grid-template-columns:var(--sidebar) minmax(0, 1fr);min-height:100vh;display:grid}.side{flex-direction:column;gap:4px;height:100vh;padding:22px 14px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:10px;padding:0 10px 20px;display:flex}.brand b{font-size:15px;font-weight:600;line-height:1.15;display:block}.brand span{color:var(--muted);font-size:12px}.nav-label{color:var(--faint);padding:18px 12px 6px;font-size:12px}.nav a{height:36px;color:var(--muted);border-radius:11px;align-items:center;gap:11px;padding:0 12px;font-size:14px;transition:background .15s,color .15s;display:flex}.nav a:hover{color:var(--text);background:var(--surface)}.nav a.on{color:var(--text);background:var(--active);font-weight:500}.nav a .badge{margin-left:auto}.side-foot{gap:4px;margin-top:auto;display:grid}.me{border-radius:12px;align-items:center;gap:10px;padding:10px 12px;display:flex}.avatar{background:var(--leaf);width:30px;height:30px;color:var(--forest);border-radius:50%;flex:none;place-items:center;font-size:13px;font-weight:600;display:grid}.me .grow{font-size:13px;line-height:1.25}.me button{cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:8px;padding:6px}.me button:hover{background:var(--surface);color:var(--text)}main{min-width:0;padding:36px 40px 80px}.mobile-top,.tabbar{display:none}@media (max-width:900px){.app{grid-template-columns:1fr}.side{display:none}.mobile-top{z-index:30;background:var(--ground);align-items:center;gap:10px;height:56px;padding:0 16px;display:flex;position:sticky;top:0}.mobile-top b{font-size:15px}.mobile-top .grow{min-width:0}.tabbar{z-index:30;background:var(--raised);padding:6px 6px calc(6px + env(safe-area-inset-bottom));border-top:1px solid var(--border);grid-template-columns:repeat(5,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.tabbar a{color:var(--muted);border-radius:12px;justify-items:center;gap:2px;padding:6px 0;font-size:11px;display:grid}.tabbar a.on{color:var(--text);background:var(--active)}main{padding:8px 16px 110px}}.sheet-nav{z-index:60;background:var(--ground);animation:fade .2s var(--ease);flex-direction:column;padding:18px 16px;display:flex;position:fixed;inset:0}.sheet-nav .nav a{height:48px;font-size:16px}.page{max-width:1100px;margin:0 auto}.page.wide{max-width:1400px}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:28px;display:flex}.page-title{font-family:var(--serif);letter-spacing:-.02em;font-size:48px;font-weight:400;line-height:1.02}.page-sub{color:var(--muted);max-width:60ch;margin-top:8px;font-size:15px}@media (max-width:900px){.page-title{font-size:34px}.page-head{margin:12px 0 20px}}.panel{background:var(--surface);border-radius:var(--radius);padding:20px}.panel-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;display:flex}.panel-head h2{align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex}.card{background:var(--raised);border-radius:var(--radius-sm)}.empty{text-align:center;color:var(--muted);padding:28px 20px}.grid12{gap:var(--gap);grid-template-columns:repeat(12,minmax(0,1fr));display:grid}.s3{grid-column:span 3}.s4{grid-column:span 4}.s5{grid-column:span 5}.s6{grid-column:span 6}.s7{grid-column:span 7}.s8{grid-column:span 8}.s9{grid-column:span 9}.s12{grid-column:span 12}@media (max-width:900px){.grid12>*{grid-column:span 12}.grid12>.tile{grid-column:span 6}}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{opacity:0;transform:scale(.96)translateY(6px)}to{opacity:1;transform:none}}@keyframes grow{0%{transform:scaleX(0)}}@keyframes sheet{0%{transform:translateY(100%)}}.rise{animation:rise .55s var(--ease) both;animation-delay:calc(var(--i,0) * 70ms)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-delay:0s!important}}.auth{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);min-height:100vh;display:grid}.auth-art{background:var(--forest);position:relative;overflow:hidden}.auth-art img{object-fit:cover;width:100%;height:100%;animation:30s ease-in-out infinite alternate drift;position:absolute;inset:0}@keyframes drift{0%{transform:scale(1.04)}to{transform:scale(1.14)translate(-1.5%,-1%)}}.auth-art .credit{color:#fff;opacity:.8;background:#00000059;border-radius:6px;padding:3px 8px;font-size:11px;position:absolute;bottom:16px;left:20px}.auth-form{flex-direction:column;justify-content:center;gap:18px;max-width:620px;padding:48px clamp(24px,6vw,96px);display:flex}.auth-form h1{font-family:var(--serif);letter-spacing:-.025em;font-size:clamp(44px,5vw,68px);font-weight:400;line-height:.98}.auth-form .lede{color:var(--muted);max-width:42ch;font-size:17px}@media (max-width:900px){.auth{grid-template-rows:34vh auto;grid-template-columns:1fr}.auth-form{padding:28px 20px 40px}}.pending{place-items:center;min-height:100vh;padding:20px;display:grid}.pending .box{text-align:center;justify-items:center;gap:14px;max-width:460px;display:grid}.pending h1{font-family:var(--serif);font-size:44px;font-weight:400;line-height:1}.greet{grid-template-columns:minmax(0,1fr) 260px;align-items:end;gap:28px;margin-bottom:40px;display:grid}.greet h1{font-family:var(--serif);letter-spacing:-.025em;font-size:56px;font-weight:400;line-height:1}.greet p{color:var(--muted);max-width:54ch;margin:12px 0 0;font-size:16px}.greet-art{border-radius:var(--radius);background:var(--forest);height:150px;overflow:hidden}.greet-art img{object-fit:cover;object-position:50% 35%;width:100%;height:100%;transition:transform 1.2s var(--ease)}.greet-art:hover img{transform:scale(1.06)}@media (max-width:900px){.greet{grid-template-columns:1fr;margin:8px 0 24px}.greet h1{font-size:38px}.greet-art{display:none}}.tile{background:var(--surface);border-radius:var(--radius);flex-direction:column;justify-content:space-between;min-height:128px;padding:18px 20px;transition:background .2s;display:flex}.tile:hover{background:var(--surface-2)}.tile .label{color:var(--muted);align-items:center;gap:7px;font-size:13px;display:flex}.tile .value{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:40px;font-weight:400;line-height:1}.tile .value small{color:var(--muted);margin-left:4px;font-size:16px}.tile .cap{color:var(--muted);font-size:12px}.week-field{background:var(--forest);color:var(--on-forest);border-radius:var(--radius);gap:18px;padding:24px;display:grid}.week-field .wf-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.week-field h2{font-family:var(--serif);letter-spacing:-.015em;font-size:34px;font-weight:400;line-height:1.05}.week-field .meta{color:var(--on-forest-muted);margin-top:6px;font-size:14px}.week-field .ring{flex:none;width:74px;height:74px;position:relative}.week-field .ring span{font-variant-numeric:tabular-nums;place-items:center;font-size:17px;display:grid;position:absolute;inset:0}.wf-tasks{gap:8px;display:grid}.wf-task{background:var(--forest-2);min-height:60px;transition:transform .2s var(--ease), background .2s;border-radius:16px;align-items:center;gap:14px;padding:10px 14px 10px 12px;display:flex}.wf-task:hover{background:#24584a;transform:translate(4px)}.wf-task .tick{border:1.6px solid var(--on-forest-muted);width:28px;height:28px;color:var(--forest);border-radius:50%;flex:none;place-items:center;display:grid}.wf-task.done .tick{background:var(--leaf);border-color:var(--leaf)}.wf-task.done .t-title{color:var(--on-forest-muted)}.wf-task .t-kind{color:var(--on-forest-muted);font-size:12px}.wf-task .t-title{font-size:15px}.wf-task .t-score{font-variant-numeric:tabular-nums;color:var(--leaf);font-size:15px}.wf-task .icon.go{color:var(--on-forest-muted)}.week-field .order{color:var(--on-forest-muted);font-size:13px}.session{flex-direction:column;justify-content:space-between;gap:18px;display:flex}.session .when{font-family:var(--serif);font-size:30px;line-height:1.05}.session .what{color:var(--muted);font-size:14px}.season{grid-template-columns:repeat(var(--n), minmax(0, 1fr));align-items:end;gap:5px;display:grid}.season a,.season div.wk{color:var(--faint);justify-items:center;gap:7px;font-size:11px;display:grid}.season .bar{background:var(--surface-2);border-radius:9px;width:100%;height:54px;position:relative;overflow:hidden}.season .bar i{background:var(--accent);transform-origin:bottom;animation:growUp .9s var(--ease) both;animation-delay:calc(var(--i) * 35ms);position:absolute;bottom:0;left:0;right:0}@keyframes growUp{0%{transform:scaleY(0)}}.season .now .bar{outline:2px solid var(--forest);outline-offset:2px}.season .now{color:var(--text);font-weight:600}.season .locked .bar{background:repeating-linear-gradient(135deg, transparent 0 5px, var(--border) 5px 6px), var(--surface)}.season a:hover .bar{background-color:var(--active)}.season-legend{color:var(--muted);flex-wrap:wrap;gap:16px;margin-top:12px;font-size:12px;display:flex}.season-legend i{vertical-align:-1px;border-radius:3px;width:10px;height:10px;margin-right:6px;display:inline-block}.rows{gap:8px;display:grid}.r{border-radius:var(--radius-sm);background:var(--raised);min-height:58px;transition:transform .2s var(--ease);align-items:center;gap:12px;padding:10px 14px;display:flex}a.r:hover{transform:translate(3px)}.r .r-main{flex:1;min-width:0}.r .r-title{font-size:14px}.r .r-sub{color:var(--muted);font-size:12px}.r .dot{background:var(--accent);border-radius:50%;flex:none;width:8px;height:8px}.weeks{gap:10px;display:grid}.wk-row{background:var(--surface);border-radius:var(--radius);transition:background .2s;overflow:hidden}.wk-row.now{background:var(--forest);color:var(--on-forest)}.wk-row.now .muted,.wk-row.now .faint{color:var(--on-forest-muted)}.wk-btn{text-align:left;cursor:pointer;background:0 0;border:none;grid-template-columns:64px minmax(0,1fr) 160px 24px;align-items:center;gap:16px;width:100%;padding:16px 20px;display:grid}.wk-no{font-family:var(--serif);font-size:34px;line-height:1}.wk-title{font-size:17px;font-weight:500}.wk-date{font-size:13px}.meter{background:var(--surface-2);border-radius:3px;height:6px;overflow:hidden}.wk-row.now .meter{background:var(--forest-2)}.meter i{background:var(--accent);transform-origin:0;height:100%;animation:grow .9s var(--ease) both;display:block}.wk-row.now .meter i{background:var(--leaf)}.wk-row .chev{transition:transform .3s var(--ease)}.wk-row.open .chev{transform:rotate(180deg)}.wk-body{animation:fade .3s var(--ease);padding:0 20px 20px}.wk-row.locked .wk-btn{cursor:default}.wk-row.locked .wk-no,.wk-row.locked .wk-title{color:var(--faint)}@media (max-width:640px){.wk-btn{grid-template-columns:44px minmax(0,1fr) 20px}.wk-btn .meter-col{display:none}.wk-no{font-size:28px}}.tasklist{gap:8px;display:grid}.task-row{background:var(--raised);min-height:60px;transition:transform .2s var(--ease);border-radius:16px;align-items:center;gap:14px;padding:10px 16px 10px 12px;display:flex}.task-row:hover{transform:translate(4px)}.task-row .tick{border:1.6px solid var(--control,#c9cfc0);width:28px;height:28px;color:var(--raised);border-radius:50%;flex:none;place-items:center;display:grid}.task-row.done .tick{background:var(--accent);border-color:var(--accent)}.task-row .t-kind{color:var(--muted);font-size:12px}.task-row .t-score{font-variant-numeric:tabular-nums;font-size:15px}.wk-row.now .task-row{background:var(--forest-2);color:var(--on-forest)}.wk-row.now .task-row .t-kind{color:var(--on-forest-muted)}.wk-row.now .task-row.done .tick{background:var(--leaf);border-color:var(--leaf);color:var(--forest)}.task-top{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:16px;display:flex}.task-top h1{font-family:var(--serif);letter-spacing:-.015em;margin-top:6px;font-size:36px;font-weight:400;line-height:1.05}.crumb{color:var(--muted);align-items:center;gap:6px;font-size:13px;display:inline-flex}.crumb:hover{color:var(--text)}.toolbar{z-index:12;background:var(--ground);flex-wrap:wrap;align-items:center;gap:8px;padding:10px 0;display:flex;position:sticky;top:0}.toolbar .btn.on{background:var(--negative);color:#fff}.split{gap:var(--gap);grid-template-columns:minmax(0,1.2fr) minmax(340px,1fr);align-items:start;display:grid}.split.no-panel{grid-template-columns:minmax(0,1fr)}.split-side{background:var(--surface);border-radius:var(--radius);flex-direction:column;height:calc(100vh - 84px);padding:8px;display:flex;position:sticky;top:64px}.tab-body{flex:1;min-height:0;padding:12px 10px;overflow:auto}.side-toggle{display:none}@media (max-width:900px){.split{grid-template-columns:minmax(0,1fr)}.split-side{z-index:40;height:72vh;padding-bottom:env(safe-area-inset-bottom);animation:sheet .35s var(--ease);border-radius:24px 24px 0 0;position:fixed;inset:auto 0 0;box-shadow:0 -10px 40px #0000002e}.split.no-panel .split-side{display:none}.side-toggle{display:inline-flex}.split-side .grabber{background:var(--border);border-radius:2px;width:40px;height:4px;margin:4px auto 6px;display:block}}.grabber{display:none}.pdf{gap:12px;display:grid}.pdf-page{animation:fade .4s var(--ease) both;background:#fff;border-radius:12px;position:relative;overflow:hidden}.pdf-page canvas{display:block}.pdf-page .ink{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.pdf-circle .ink{pointer-events:auto;cursor:crosshair;touch-action:none}.pdf-circle .pdf-page{outline:2px solid var(--negative);outline-offset:-2px}.pg{color:#8a8a8a;font-variant-numeric:tabular-nums;font-size:11px;position:absolute;bottom:6px;right:8px}.loading{color:var(--muted);place-items:center;gap:10px;padding:40px 20px;font-size:13px;display:grid}.spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:22px;height:22px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.quiz-item{gap:8px;margin-bottom:18px;display:grid}.quiz-label{font-size:14px}.quiz-label b{font-weight:600}.tabs{background:var(--surface-2);border-radius:16px;flex:none;gap:2px;padding:4px;display:flex;overflow-x:auto}.tabs>*{height:36px;color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:12px;flex:1;justify-content:center;align-items:center;gap:6px;padding:0 12px;font-size:13px;transition:background .2s,color .2s;display:inline-flex}.tabs>.on{background:var(--raised);color:var(--text);font-weight:500}.page-tabs{flex-wrap:wrap;gap:4px;margin-bottom:22px;display:flex}.page-tabs>*{border-radius:var(--pill);cursor:pointer;height:38px;color:var(--muted);background:0 0;border:none;align-items:center;gap:8px;padding:0 16px;font-size:14px;transition:background .2s,color .2s;display:inline-flex}.page-tabs>:hover{color:var(--text)}.page-tabs>.on{background:var(--forest);color:var(--on-forest)}.mcq{gap:12px;display:grid}.mcq-grid{grid-template-columns:repeat(auto-fill,minmax(196px,1fr));gap:6px 14px;display:grid}.mcq-row{border-radius:12px;align-items:center;gap:5px;padding:3px 6px;transition:background .3s;display:flex}.mcq-row.ok{background:var(--positive-bg)}.mcq-row.bad{background:var(--negative-bg)}.qn{width:30px;color:var(--muted);font-variant-numeric:tabular-nums;font-size:13px}.bub{border:1.5px solid var(--border);background:var(--raised);cursor:pointer;width:34px;height:34px;transition:transform .12s var(--ease), background .15s, border-color .15s;border-radius:50%;font-size:13px;font-weight:500}.bub:hover{border-color:var(--accent)}.bub:active{transform:scale(.88)}.bub.on{background:var(--forest);color:var(--on-forest);border-color:var(--forest);animation:pop .2s var(--ease)}.bub.right{box-shadow:0 0 0 2px var(--positive)}.sticky-submit{background:var(--surface);justify-content:space-between;align-items:center;gap:10px;padding:12px 0;display:flex;position:sticky;bottom:-12px}.score-box{background:var(--forest);color:var(--on-forest);animation:pop .4s var(--ease);border-radius:18px;align-items:center;gap:16px;padding:16px 18px;display:flex}.score-box .score{font-family:var(--serif);font-variant-numeric:tabular-nums;font-size:52px;line-height:.9}.score-box .score small{color:var(--on-forest-muted);font-size:24px}.score-box p{color:var(--on-forest-muted);margin:0;font-size:13px}.selfmark{gap:12px;display:grid}.score-in{color:var(--muted);align-items:center;gap:10px;font-size:22px;display:flex}.score-in input{text-align:center;font-variant-numeric:tabular-nums;border-radius:16px;width:92px;height:56px;font-size:26px}.thumbs{flex-wrap:wrap;gap:8px;display:flex}.thumb{position:relative}.thumb img{object-fit:cover;background:var(--surface-2);border-radius:12px;width:84px;height:84px;display:block}.thumb button{background:var(--text);width:22px;height:22px;color:var(--ground);cursor:pointer;border:none;border-radius:50%;place-items:center;padding:0;display:grid;position:absolute;top:-6px;right:-6px}.teacher-note{background:var(--warning-bg);color:var(--text);border-radius:14px;padding:12px 14px;font-size:14px}.teacher-note b{font-weight:600}.modal{z-index:70;animation:fade .2s var(--ease);background:#0a140f80;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal-box{background:var(--raised);width:100%;max-width:540px;max-height:92vh;animation:pop .3s var(--ease);border-radius:24px;gap:14px;padding:20px;display:grid;overflow:auto;box-shadow:0 24px 80px #0000004d}.snip{object-fit:contain;background:#fff;border-radius:12px;justify-self:center;max-width:100%;max-height:38vh}.actions{grid-template-columns:1fr 1fr;gap:8px;display:grid}.action{background:var(--surface);cursor:pointer;text-align:left;transition:background .15s, transform .15s var(--ease);border:none;border-radius:16px;align-items:center;gap:12px;padding:14px;font-size:14px;font-weight:500;display:flex}.action:hover{background:var(--surface-2);transform:translateY(-2px)}.action .ic{background:var(--raised);border-radius:12px;flex:none;place-items:center;width:36px;height:36px;display:grid}.action small{color:var(--muted);font-size:12px;font-weight:400;display:block}.action.primary{background:var(--forest);color:var(--on-forest)}.action.primary small{color:var(--on-forest-muted)}.action.primary .ic{background:var(--forest-2);color:var(--leaf)}@media (max-width:480px){.actions{grid-template-columns:1fr}}.picker{position:relative}.picker-btn{border-radius:var(--pill);background:var(--raised);cursor:pointer;border:none;align-items:center;gap:10px;max-width:100%;height:40px;padding:0 14px 0 16px;font-size:14px;font-weight:500;display:inline-flex}.picker-btn .grow{text-overflow:ellipsis;white-space:nowrap;text-align:left;overflow:hidden}.picker-pop{z-index:50;background:var(--raised);width:min(560px,86vw);max-height:60vh;animation:pop .22s var(--ease);border-radius:20px;gap:14px;padding:14px;display:grid;position:absolute;top:46px;left:0;overflow:auto;box-shadow:0 18px 60px #0000002e}.picker-group h4{color:var(--faint);margin:0 0 6px;padding-left:6px;font-size:12px;font-weight:500}.picker-group .opts{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:4px;display:grid}.picker-group button{text-align:left;cursor:pointer;background:0 0;border:none;border-radius:10px;padding:8px 10px;font-size:13px;line-height:1.3}.picker-group button:hover{background:var(--surface)}.picker-group button.on{background:var(--forest);color:var(--on-forest)}.notes{gap:12px;display:grid}.note-frame{background:#fff;border:none;border-radius:14px;width:100%;height:72vh}.split-side .note-frame{height:calc(100vh - 220px)}.chat{flex-direction:column;height:100%;min-height:380px;display:flex}.chat-log{flex:1;align-content:start;gap:10px;padding:4px 2px;display:grid;overflow:auto}.chat-hello{gap:10px;padding:8px 4px;display:grid}.chat-hello h3{font-family:var(--serif);font-size:28px;font-weight:400;line-height:1.05}.chat-hello p{color:var(--muted);margin:0;font-size:14px}.bubble{max-width:90%;animation:rise .35s var(--ease);border-radius:18px;padding:10px 14px;font-size:14px}.bubble.user{background:var(--forest);color:var(--on-forest);border-bottom-right-radius:6px;justify-self:end}.bubble.model{background:var(--raised);border-bottom-left-radius:6px}.bubble img,.chat-img img{background:#fff;border-radius:10px;max-width:100%;max-height:200px;margin-bottom:8px;display:block}.typing{gap:4px;display:inline-flex}.typing i{background:var(--faint);border-radius:50%;width:6px;height:6px;animation:1.2s infinite blink}.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}@keyframes blink{0%,60%,to{opacity:.25}30%{opacity:1}}.chat-img{align-items:flex-end;gap:8px;margin-top:8px;display:flex}.chat-img img{max-height:70px;margin:0}.chat-in{background:var(--raised);border-radius:20px;align-items:flex-end;gap:8px;margin-top:10px;padding:6px 6px 6px 14px;display:flex}.chat-in textarea{resize:none;background:0 0;border:none;min-height:40px;padding:8px 0}.tutor-wrap{height:calc(100vh - 210px);min-height:460px}.table{gap:6px;display:grid}.trow{background:var(--raised);border-radius:var(--radius-sm);flex-wrap:wrap;align-items:center;gap:10px;min-height:56px;padding:8px 10px 8px 16px;display:flex}.trow .t-name{flex:1;min-width:180px;font-size:14px}.trow .t-name small{color:var(--muted);font-size:12px;display:block}.lock-note{color:var(--muted);background:var(--surface);border-radius:var(--radius-sm);align-items:center;gap:10px;padding:12px 16px;font-size:13px;display:flex}.doubt{background:var(--surface);border-radius:var(--radius);gap:10px;padding:18px 20px;display:grid}.doubt .q{font-size:15px}.answer{background:var(--raised);border-radius:14px;gap:4px;padding:12px 14px;font-size:14px;display:grid}.answer b{color:var(--accent);font-size:12px;font-weight:600}.composer{background:var(--surface);border-radius:var(--radius);gap:12px;padding:16px;display:grid}.composer textarea{min-height:90px}.mistake{background:var(--raised);border-radius:var(--radius-sm);align-items:flex-start;gap:14px;padding:14px 16px;transition:opacity .3s;display:flex}.mistake.done{opacity:.55}.ans-pair{font-variant-numeric:tabular-nums;align-items:center;gap:6px;display:inline-flex}.ans-pair .you{color:var(--negative);text-decoration:line-through}.ans-pair .right{color:var(--positive);font-weight:600}.chapter-group{gap:8px;margin-bottom:26px;display:grid}.chapter-group h2{align-items:baseline;gap:10px;font-size:15px;display:flex}.chapter-group h2 .faint{font-size:13px;font-weight:400}.scroll-x{background:var(--surface);border-radius:var(--radius);padding:8px;overflow-x:auto}table.grid{border-collapse:separate;border-spacing:0;min-width:100%;font-size:13px}table.grid th{color:var(--muted);text-align:right;white-space:nowrap;padding:10px;font-weight:500}table.grid td{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;border-top:1px solid var(--border);padding:10px}table.grid td:first-child,table.grid th:first-child{text-align:left;background:var(--surface);position:sticky;left:0}table.grid td.cell{text-align:center;padding:6px 4px}.cellbox{border-radius:8px;place-items:center;min-width:40px;height:28px;font-size:12px;display:inline-grid}.c-ok{background:var(--positive-bg);color:var(--positive)}.c-mid{background:var(--warning-bg);color:var(--warning)}.c-low{background:var(--negative-bg);color:var(--negative)}.c-none{color:var(--faint)}.sub-card{background:var(--surface);border-radius:var(--radius);gap:10px;padding:16px 18px;display:grid}.form-card{background:var(--surface);border-radius:var(--radius);gap:12px;padding:18px 20px;display:grid}.pomo{z-index:35;justify-items:end;gap:10px;display:grid;position:fixed;bottom:20px;right:20px}@media (max-width:900px){.pomo{bottom:84px;right:12px}.pomo.hide-mobile{display:none}}.pomo-btn{border-radius:var(--pill);background:var(--forest);min-width:48px;height:48px;color:var(--on-forest);cursor:pointer;font-variant-numeric:tabular-nums;transition:transform .15s var(--ease);border:none;align-items:center;gap:8px;padding:0 16px;font-size:15px;font-weight:600;display:inline-flex;box-shadow:0 8px 24px #13362d47}.pomo-btn:active{transform:scale(.95)}.pomo-btn.running{background:var(--leaf);color:var(--forest)}.pomo-panel{background:var(--raised);width:260px;animation:pop .25s var(--ease);transform-origin:100% 100%;border-radius:24px;justify-items:center;gap:14px;padding:20px;display:grid;box-shadow:0 18px 60px #0003}.pomo-ring{width:160px;height:160px;position:relative}.pomo-ring svg{transform:rotate(-90deg)}.pomo-ring circle{transition:stroke-dashoffset 1s linear}.pomo-ring .t{align-content:center;place-items:center;display:grid;position:absolute;inset:0}.pomo-ring .t b{font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-size:38px;font-weight:400;line-height:1}.pomo-ring .t span{color:var(--muted);font-size:12px}.season.blocks{gap:5px;margin-top:10px}.blk{white-space:nowrap;text-overflow:ellipsis;border-radius:9px;padding:6px 10px;font-size:12px;font-weight:500;overflow:hidden}.blk-animals{color:#24452f;background:#dbe8d0}.blk-plants{color:#3d4a12;background:#e7efc4}.blk-ecology{color:#134a43;background:#cfe5e1}.blk-foundations{color:#4d3f22;background:#ebe3d3}@media (prefers-color-scheme:dark){.blk-animals{color:#bfe0c6;background:#21352a}.blk-plants{color:#dbe9a8;background:#2e3519}.blk-ecology{color:#a8ddd4;background:#173733}.blk-foundations{color:#e6d6b3;background:#352e20}}.season-legend .hatch{background:repeating-linear-gradient(135deg, transparent 0 3px, var(--faint) 3px 4px)}.countdown{gap:8px;margin-top:14px;display:flex}.countdown span{background:var(--raised);color:var(--muted);border-radius:12px;flex:1;justify-items:center;padding:10px 8px;font-size:11px;display:grid}.countdown b{color:var(--text);font-variant-numeric:tabular-nums;font-size:26px;font-weight:400;line-height:1.1}@media (max-width:900px){.season{gap:3px}.season span:not(.bar):not(.blk){font-size:9px}.blk{padding:4px 5px;font-size:10px}}.react-box{color:#fff;background:#0b0b0b;border-radius:28px;width:100%;max-width:420px;animation:.5s cubic-bezier(.2,1.4,.4,1) both slam;overflow:hidden;box-shadow:0 30px 90px #00000080}.react-box img{aspect-ratio:1;object-fit:cover;width:100%;display:block}.react-body{gap:12px;padding:18px 20px 20px;display:grid}.react-body p{color:#d6d6d6;margin:0;font-size:15px}.react-score{font-family:var(--serif);font-variant-numeric:tabular-nums;font-size:48px;line-height:1}.react-score small{color:#9a9a9a;font-size:24px}.react-score span{font-family:var(--sans);vertical-align:middle;border-radius:999px;margin-left:10px;padding:4px 10px;font-size:18px}.react-bravo .react-score span{background:var(--leaf);color:var(--forest)}.react-zeft .react-score span{color:#fff;background:#c8102e}.react-mid{background:var(--raised);color:var(--text)}.react-mid .react-body p{color:var(--muted)}.react-mid .react-score span{background:var(--warning-bg);color:var(--warning)}.react-zeft{animation:.5s cubic-bezier(.2,1.4,.4,1) both slam,.45s ease-in-out .5s shake}@keyframes slam{0%{opacity:0;transform:scale(.6)rotate(-4deg)}to{opacity:1;transform:none}}@keyframes shake{0%,to{transform:none}20%{transform:translate(-10px)rotate(-1deg)}40%{transform:translate(9px)rotate(1deg)}60%{transform:translate(-6px)}80%{transform:translate(4px)}}.pdf-wrap{gap:10px;min-width:0;display:grid}.pdf-bar{z-index:11;background:var(--raised);border-radius:var(--pill);flex-wrap:wrap;justify-self:start;align-items:center;gap:4px;padding:4px;display:flex;position:sticky;top:58px;box-shadow:0 4px 16px #00000014}.split-side .pdf-bar{top:0}.pb{border-radius:var(--pill);cursor:pointer;min-width:32px;height:32px;color:var(--text);background:0 0;border:none;justify-content:center;align-items:center;gap:6px;padding:0 10px;font-size:13px;transition:background .15s;display:inline-flex}.pb:hover:not(:disabled){background:var(--surface)}.pb:disabled{opacity:.35;cursor:default}.pb.pct{font-variant-numeric:tabular-nums;min-width:54px;color:var(--muted)}.pb.on{color:#3a3000;background:#ffe14d}.pb-sep{background:var(--border);width:1px;height:20px;margin:0 2px}.swatch{cursor:pointer;width:24px;height:24px;transition:transform .15s var(--ease);border:2px solid #0000;border-radius:50%}.swatch.on{border-color:var(--text);transform:scale(1.12)}.pdf{overflow-x:auto}.pdf.zoomed .pdf-page{margin:0}.pdf-page .hl-layer{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.pdf-hl .ink{pointer-events:auto;cursor:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='22' height='22'><circle cx='11' cy='11' r='8' fill='%23ffe14d' fill-opacity='.6' stroke='%23000' stroke-opacity='.3'/></svg>") 11 11,crosshair;touch-action:none}.pdf-hl .pdf-page{outline-offset:-2px;outline:2px solid #f5d000}.page-hl-tools{opacity:.85;gap:4px;display:flex;position:absolute;top:6px;right:6px}.page-hl-tools button{color:#fff;cursor:pointer;background:#000000a6;border:none;border-radius:999px;align-items:center;gap:4px;height:24px;padding:0 8px;font-size:11px;display:inline-flex}@media (max-width:900px){.pdf-bar{top:56px}.pb-label{display:none}}.session-bar{background:var(--surface);border-radius:20px;align-items:center;gap:14px;margin-bottom:16px;padding:12px 14px 12px 12px;display:flex}.session-bar .sb-icon{background:var(--raised);width:40px;height:40px;color:var(--accent);border-radius:12px;flex:none;place-items:center;display:grid}.session-bar b{font-weight:600}.session-bar .sb-sub{color:var(--muted);font-size:13px;display:block}.session-bar.live{background:var(--forest);color:var(--on-forest)}.session-bar.live .sb-sub{color:var(--on-forest-muted)}.session-bar.live .sb-icon{background:var(--leaf);color:var(--forest);animation:1.6s ease-in-out infinite pulse}@keyframes pulse{0%,to{box-shadow:0 0 #b9e27c8c}50%{box-shadow:0 0 0 8px #b9e27c00}}@media (max-width:640px){.session-bar{flex-wrap:wrap}.session-bar .btn{width:100%}}.announce{background:var(--leaf);color:var(--forest);border-radius:18px;gap:6px;padding:12px 16px;font-size:15px;display:grid}.announce .faint-on{opacity:.65;font-size:12px}.announce.home{margin-bottom:16px}.announce .msg-del{color:var(--forest)}.chatroom{flex-direction:column;height:calc(100vh - 230px);min-height:460px;padding:8px;display:flex}.chat-log.room{gap:8px;padding:8px}.day-sep{color:var(--muted);background:var(--raised);border-radius:999px;justify-self:center;margin:6px 0;padding:3px 12px;font-size:12px}.msg{max-width:80%;animation:rise .3s var(--ease);align-items:flex-end;gap:8px;display:flex}.msg.mine{flex-direction:row-reverse;justify-self:end}.avatar.sm{width:28px;height:28px;font-size:12px}.msg-bubble{background:var(--raised);border-radius:18px 18px 18px 6px;min-width:60px;padding:8px 12px;font-size:14px}.msg.mine .msg-bubble{background:var(--forest);color:var(--on-forest);border-radius:18px 18px 6px}.msg-name{color:var(--accent);align-items:center;margin-bottom:2px;font-size:12px;font-weight:600;display:flex}.msg-time{color:var(--faint);justify-content:flex-end;align-items:center;gap:4px;margin-top:2px;font-size:11px;display:flex}.msg.mine .msg-time{color:var(--on-forest-muted)}.msg-del{cursor:pointer;color:inherit;opacity:.5;background:0 0;border:none;border-radius:6px;place-items:center;padding:2px;display:inline-grid}.msg-del:hover{opacity:1}.composer-bar{gap:8px;padding:8px 4px 2px;display:grid}.chat-in.announcing{outline:2px solid var(--leaf)}.tab-dot{background:var(--negative);border-radius:50%;width:8px;height:8px;margin-top:-2px;margin-left:18px;position:absolute}.tabbar a{position:relative}@media (max-width:900px){.chatroom{height:calc(100vh - 250px)}.msg{max-width:92%}}
