:root{--ink: #0b1f2a;--ink-soft: #4a6670;--ink-mute: #7a939c;--jade: #1f8a7e;--jade-deep: #14665d;--jade-soft: #d7f0eb;--sky: #e8f3f5;--surface: rgba(248, 252, 252, .92);--surface-solid: #f7fbfb;--line: rgba(11, 31, 42, .1);--line-strong: rgba(11, 31, 42, .16);--danger: #b42318;--danger-soft: #fdeceb;--ok: #0f766e;--warn: #a16207;--warn-soft: #fef6d8;--shadow: 0 20px 48px rgba(11, 31, 42, .14);--radius: 20px;--radius-sm: 12px;--font: "Be Vietnam Pro", sans-serif;--display: "Fraunces", Georgia, serif;font-family:var(--font);color:var(--ink);line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}html{overflow-x:hidden}body:has(.modal-backdrop){overflow:hidden}body{min-height:100vh;background-color:#0b1f2a;background-image:linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px),radial-gradient(ellipse 80% 55% at 8% 0%,rgba(31,138,126,.38),transparent 55%),radial-gradient(ellipse 60% 45% at 100% 10%,rgba(120,180,190,.22),transparent 50%),linear-gradient(165deg,#0b1f2a,#12343a 48%,#0f4a46);background-size:48px 48px,48px 48px,auto,auto,auto;background-attachment:fixed}button,input,select,textarea{font:inherit}button{cursor:pointer;border:none;border-radius:var(--radius-sm);background:var(--jade);color:#fff;padding:.72rem 1.05rem;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:.45rem;transition:transform .18s ease,background .18s ease,box-shadow .18s ease}button:hover:not(:disabled){background:var(--jade-deep);transform:translateY(-1px)}button:disabled{opacity:.5;cursor:not-allowed}button.ghost{background:#ffffff14;border:1px solid rgba(255,255,255,.22);color:#f4fffc;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}button.ghost:hover:not(:disabled){background:#ffffff24}button.linkish{background:transparent;color:var(--jade-deep);padding:.35rem 0;font-weight:600;text-decoration:underline;text-underline-offset:3px}button.linkish:hover:not(:disabled){background:transparent;transform:none;color:var(--jade)}button.danger{background:transparent;color:var(--danger);border:1px solid rgba(180,35,24,.22);padding:.45rem .7rem}button.danger:hover:not(:disabled){background:var(--danger-soft)}button.btn-primary-glow{box-shadow:0 10px 28px #1f8a7e59}button.btn-primary-glow.ready{animation:soft-pulse 2.4s ease-in-out infinite}input,select,textarea{width:100%;border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:.72rem .9rem;background:#fff;color:var(--ink);transition:border-color .15s ease,box-shadow .15s ease}input:focus,select:focus,textarea:focus{outline:none;border-color:#1f8a7e8c;box-shadow:0 0 0 3px #1f8a7e24}label{display:grid;gap:.35rem;font-size:.9rem;font-weight:500;color:var(--ink-soft)}.field-label{display:inline-flex;align-items:center;gap:.4rem}.brand{margin:0;font-family:var(--display);font-size:clamp(1.7rem,2.8vw,2.25rem);letter-spacing:-.02em;font-weight:700}.brand-row{display:flex;align-items:center;gap:.7rem}.brand-mark{color:var(--jade);flex-shrink:0}.auth-shell{position:relative;min-height:100vh;display:grid;grid-template-columns:1.05fr .95fr;padding:1.25rem;gap:1.25rem;animation:fade-up .55s ease both}.auth-visual{position:relative;overflow:hidden;border-radius:28px;padding:clamp(1.5rem,4vw,3rem);color:#f4fffc;background:radial-gradient(circle at 80% 20%,rgba(215,240,235,.2),transparent 35%),linear-gradient(145deg,#144644bf,#0b1f2a59),url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' stroke='%23ffffff' stroke-opacity='0.06'%3E%3Cpath d='M0 30h60M30 0v60'/%3E%3C/g%3E%3C/svg%3E");display:flex;flex-direction:column;justify-content:flex-end;min-height:520px;box-shadow:var(--shadow)}.auth-visual .brand{color:#f4fffc}.auth-visual h2{margin:1rem 0 .6rem;font-family:var(--display);font-size:clamp(1.8rem,3.2vw,2.6rem);line-height:1.15;max-width:12ch}.auth-visual p{margin:0;max-width:36ch;color:#f4fffcc7}.auth-steps{display:grid;gap:.7rem;margin-top:2rem}.auth-step{display:flex;align-items:center;gap:.75rem;padding:.75rem .9rem;border-radius:14px;background:#ffffff14;border:1px solid rgba(255,255,255,.1);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:fade-up .55s ease both}.auth-step:nth-child(2){animation-delay:.08s}.auth-step:nth-child(3){animation-delay:.16s}.auth-step span{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;background:#d7f0eb2e;color:#d7f0eb;font-size:.8rem;font-weight:700}.auth-panel{background:var(--surface);border:1px solid rgba(255,255,255,.45);border-radius:28px;padding:clamp(1.5rem,3vw,2.4rem);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);display:flex;flex-direction:column;justify-content:center}.auth-panel h1{margin:.55rem 0 .45rem;font-family:var(--display);font-size:1.85rem}.lead,.hint,.meta,.userline{color:var(--ink-soft)}.auth-form{display:grid;gap:.95rem;margin:1.35rem 0 .9rem}button.auth-google{width:100%;margin-top:1.15rem;background:#fff;color:var(--ink);border:1px solid var(--line-strong);box-shadow:0 6px 16px #1428320f;font-weight:650}button.auth-google:hover:not(:disabled){background:#f7fafb;color:var(--ink);border-color:#c8d4dc}.auth-divider{display:flex;align-items:center;gap:.75rem;margin:.95rem 0 0;color:var(--ink-mute);font-size:.82rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--line-strong)}.auth-panel>.error{display:flex;align-items:flex-start;gap:.4rem;margin:.85rem 0 0}.auth-divider+.auth-form,.auth-panel>.error+.auth-form{margin-top:.9rem}.input-with-icon{position:relative}.input-with-icon>svg{position:absolute;left:.85rem;top:50%;transform:translateY(-50%);color:var(--ink-mute);pointer-events:none}.input-with-icon input{padding-left:2.55rem}.dev-banner,.banner-error,.toast{border-radius:var(--radius-sm);padding:.75rem .9rem;margin:.85rem 0 0;font-size:.9rem;display:flex;align-items:flex-start;gap:.55rem}.dev-banner{background:var(--jade-soft);color:var(--jade-deep)}.banner-error{margin:0 1.5rem;background:var(--danger-soft);color:var(--danger)}.viewing-banner{margin:.35rem 1.25rem 0;padding:.55rem .8rem;border-radius:var(--radius-sm);background:#fef6d8;color:#7a4d00;display:flex;align-items:center;gap:.65rem;font-size:.88rem}.viewing-banner strong{font-weight:700}.viewing-banner button.ghost{margin-left:auto;background:#7a4d001a;border-color:#7a4d0038;color:#7a4d00;padding:.35rem .7rem}.admin-sheet{width:min(920px,100%)}.admin-console{max-height:min(92dvh,880px);overflow:auto}.admin-tabs{display:flex;flex-wrap:wrap;gap:.3rem;margin:.15rem 0 .75rem}.admin-tab{background:#145a520f;color:var(--ink-soft);border:1px solid transparent;box-shadow:none;padding:.4rem .75rem;font-size:.82rem;font-weight:650;border-radius:999px}.admin-tab:hover:not(:disabled){background:#145a521f;transform:none}.admin-tab.is-active{background:var(--jade);color:#fff}.admin-tab-body{min-height:12rem}.admin-tab-lead{margin:0 0 .75rem;color:var(--ink-soft);font-size:.88rem}.admin-stack{display:grid;gap:.85rem}.admin-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.55rem}.admin-form{margin:0}.admin-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:.65rem}.admin-fieldset{border:1px solid var(--line);border-radius:12px;padding:.7rem .8rem .85rem;display:grid;gap:.55rem}.admin-fieldset legend{font-size:.82rem;font-weight:700;padding:0 .35rem}.admin-list{display:grid;gap:.4rem}.admin-list-row{display:flex;justify-content:space-between;gap:.75rem;align-items:flex-start;padding:.65rem .7rem;border:1px solid var(--line);border-radius:12px;background:#fffc}.admin-list-row p{margin:.2rem 0 0;font-size:.84rem;color:var(--ink-soft)}.admin-list-row.is-warning{border-color:#a1620759;background:#fff8e6}.admin-list-row.is-alert{border-color:#b4231847;background:var(--danger-soft)}.notice-banners{display:grid;gap:.4rem;padding:0 1.1rem}.notice-banner{display:flex;gap:.55rem;align-items:flex-start;padding:.65rem .85rem;border-radius:12px;border:1px solid rgba(31,138,126,.22);background:#d7f0ebe6;color:var(--jade-deep)}.notice-banner>div{flex:1;min-width:0}.notice-banner .req-float-close{flex-shrink:0;margin-left:auto}.notice-banner strong{display:block;font-size:.9rem}.notice-banner p{margin:.15rem 0 0;font-size:.84rem}.notice-banner.is-warning{border-color:#a162074d;background:#fff8e6;color:#7a4d00}.notice-banner.is-alert{border-color:#b4231847;background:var(--danger-soft);color:var(--danger)}.promo-list{margin:.75rem 0 0;padding:0;list-style:none;display:grid;gap:.4rem}.promo-list li{padding:.5rem .65rem;border-radius:10px;background:#1f8a7e14;font-size:.86rem}.admin-sheet .modal-head h3{display:inline-flex;align-items:center;gap:.4rem}.admin-table{display:grid;gap:.35rem}.admin-table-head,.admin-table-row{display:grid;grid-template-columns:minmax(0,1.4fr) 110px minmax(220px,auto);gap:.55rem;align-items:center}.admin-table-head{padding:.1rem .45rem;font-size:.7rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-mute)}.admin-table-row{padding:.5rem .55rem;border:1px solid var(--line);border-radius:10px;background:#ffffffd1}.admin-table-row.is-viewing{border-color:#a1620759;background:#fff8e6}.admin-credits{font-weight:700;color:var(--jade-deep)}.admin-row-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.35rem}.admin-table-row .name-cell strong{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem}.modal-backdrop.nested{z-index:210;background:#08181673}.loading.compact{min-height:8rem;color:var(--ink-soft)}.error{color:var(--danger);margin:0;font-size:.9rem}.app-shell{min-height:100vh;min-height:100dvh;padding-bottom:1.5rem;overflow-x:hidden;max-width:100%}.topbar{position:relative;z-index:80;display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.85rem 1.25rem .45rem;color:#f4fffc;animation:fade-up .45s ease both}.topbar .brand{color:#f4fffc;font-size:1.55rem}.topbar .brand-mark{color:#8fd6cb}.topbar-actions{display:flex;align-items:center;gap:.55rem;margin-left:auto}.topbar .btn-compact{background:#ffffff1a;border:1px solid rgba(255,255,255,.22);color:#f4fffc}.topbar .btn-compact:hover:not(:disabled){background:#ffffff29}.topbar .btn-compact.is-open{background:#8fd6cb38;border-color:#8fd6cb66;color:#e7fffb}.topbar .btn-compact.is-open svg{transform:none}.account-menu{position:relative}.account-trigger{background:#ffffff14;border:1px solid rgba(255,255,255,.2);color:#f4fffc;padding:.35rem .65rem .35rem .4rem;border-radius:999px;box-shadow:none}.account-trigger:hover:not(:disabled){background:#ffffff24;transform:none}.account-trigger.is-open{background:#ffffff29}.account-trigger-copy{display:grid;text-align:left;line-height:1.2}.account-trigger-copy strong{font-size:.84rem;font-weight:650}.account-trigger-copy em{font-style:normal;font-size:.72rem;color:#b9ebe3}.account-chevron{opacity:.75;transition:transform .15s ease}.account-trigger.is-open .account-chevron{transform:rotate(180deg)}.account-dropdown{position:absolute;z-index:100;top:calc(100% + .45rem);right:0;width:min(280px,calc(100vw - 1.5rem));padding:.4rem;border-radius:14px;background:#f7fffd;color:var(--ink);border:1px solid rgba(20,90,82,.14);box-shadow:0 18px 40px #081e1a47;display:grid;gap:.15rem}.account-dropdown-head{display:grid;gap:.15rem;padding:.55rem .65rem .6rem;margin-bottom:.15rem;border-bottom:1px solid var(--line)}.account-dropdown-head strong{font-size:.92rem}.account-dropdown-head>span:not(.badge){font-size:.78rem;color:var(--ink-soft);word-break:break-all}.account-dropdown-head .badge{justify-self:start;margin-top:.15rem}.account-dropdown button{width:100%;justify-content:flex-start;background:transparent;color:var(--ink);box-shadow:none;padding:.55rem .65rem;font-weight:550}.account-dropdown button:hover:not(:disabled){background:#1f8a7e1a;transform:none}.account-dropdown button.danger-item{color:var(--danger);margin-top:.15rem;border-top:1px solid var(--line);border-radius:0 0 10px 10px}.lang-switcher{position:relative}.lang-trigger{background:#ffffff14;border:1px solid rgba(255,255,255,.2);color:#f4fffc;padding:.32rem .55rem .32rem .4rem;border-radius:999px;box-shadow:none;min-width:0}.lang-trigger:hover:not(:disabled){background:#ffffff24;transform:none}.lang-trigger.is-open{background:#ffffff29}.lang-trigger.is-open .account-chevron{transform:rotate(180deg)}.lang-switcher.is-dark .lang-trigger{background:#145a5214;border-color:#145a5233;color:var(--ink)}.lang-switcher.is-dark .lang-trigger:hover:not(:disabled),.lang-switcher.is-dark .lang-trigger.is-open{background:#145a5224}.lang-flag{display:block;width:22px;height:16px;object-fit:cover;border-radius:3px;box-shadow:0 0 0 1px #ffffff40;flex-shrink:0}.lang-switcher.is-dark .lang-flag{box-shadow:0 0 0 1px #0b1f2a1f}.lang-code{font-size:.72rem;font-weight:750;letter-spacing:.04em}.lang-dropdown{position:absolute;z-index:100;top:calc(100% + .45rem);inset-inline-end:0;width:min(260px,calc(100vw - 1.5rem));max-height:min(70vh,420px);overflow:auto;padding:.35rem;border-radius:14px;background:#f7fffd;color:var(--ink);border:1px solid rgba(20,90,82,.14);box-shadow:0 18px 40px #081e1a47;display:grid;gap:.08rem}.lang-dropdown button{width:100%;justify-content:flex-start;background:transparent;color:var(--ink);box-shadow:none;padding:.45rem .55rem;font-weight:550;border-radius:10px}.lang-dropdown button:hover:not(:disabled){background:#1f8a7e1a;transform:none}.lang-dropdown button.is-active{background:#1f8a7e29;color:var(--jade-deep)}.lang-dropdown .lang-name{flex:1;text-align:start;font-size:.86rem}.lang-dropdown em{font-style:normal;font-size:.7rem;font-weight:700;color:var(--ink-mute)}.auth-lang-wrap{position:absolute;top:1.15rem;inset-inline-end:1.15rem;z-index:6}.account-sheet{width:min(440px,100%)}.account-form{display:grid;gap:.65rem}.account-form textarea{min-height:5.5rem;resize:vertical}.credits-alert-info{background:#1f8a7e1a!important;color:var(--jade-deep)!important;font-weight:550!important}.user-chip{display:flex;align-items:center;gap:.55rem;margin-top:.25rem;color:#f4fffcc7;font-size:.9rem}.user-avatar{width:28px;height:28px;border-radius:9px;display:grid;place-items:center;background:#8fd6cb2e;color:#b9ebe3}.credits-pill{display:inline-flex;align-items:center;gap:.35rem;margin-left:.35rem;padding:.2rem .55rem;border-radius:999px;background:#8fd6cb29;border:1px solid rgba(143,214,203,.28);color:#d7fff7;font-size:.82rem;font-weight:600}.credits-modal{width:min(540px,100%)}.credits-modal-head{margin-bottom:.85rem}.credits-alert{display:flex;align-items:flex-start;gap:.65rem;color:var(--ink)}.credits-alert h3{margin:0;font-size:1.05rem}.credits-alert p{display:flex;align-items:center;gap:.35rem;margin:.4rem 0 0;padding:.4rem .55rem;border-radius:8px;background:var(--danger-soft);color:var(--danger);font-size:.84rem;font-weight:600}.credits-body{display:grid;gap:.75rem}.credits-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem}.stat-tile{padding:.65rem .7rem;border-radius:12px;background:#145a520f;border:1px solid rgba(20,90,82,.1)}.stat-tile.need{background:#fff6e8;border-color:#a1620738}.stat-tile span,.stat-tile em{display:block;font-size:.72rem;color:var(--ink-soft)}.stat-tile strong{display:block;margin:.15rem 0 .1rem;font-size:1.25rem;line-height:1.15}.credits-rate{margin:0;font-size:.78rem;color:var(--ink-soft)}.transfer-card{padding:.75rem .85rem;border-radius:12px;background:#fff;border:1px solid var(--line)}.transfer-card h4{margin:0 0 .55rem;font-size:.88rem}.transfer-card dl{display:grid;gap:.4rem;margin:0}.transfer-card dl>div{display:grid;grid-template-columns:7.2rem 1fr;gap:.45rem;align-items:baseline}.transfer-card dt{margin:0;font-size:.78rem;color:var(--ink-soft)}.transfer-card dd{margin:0;font-size:.9rem}button.btn-modal-close{position:relative;z-index:4;pointer-events:auto;width:auto;min-width:5.5rem;padding:.5rem 1rem;font-weight:650;color:var(--jade-deep);background:#fff;border:1px solid rgba(31,138,126,.35);box-shadow:none}button.btn-modal-close:hover:not(:disabled){background:#1f8a7e1a;transform:none}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.01em}.item-actions{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:flex;justify-content:center;align-items:flex-start;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:max(1rem,env(safe-area-inset-top,0px)) max(1rem,env(safe-area-inset-right,0px)) max(1rem,env(safe-area-inset-bottom,0px)) max(1rem,env(safe-area-inset-left,0px));background:#0818168c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-sheet{width:min(720px,100%);max-width:100%;min-width:0;max-height:min(calc(100dvh - 2rem),900px);margin-block:auto;overflow:auto;-webkit-overflow-scrolling:touch;border-radius:16px;background:#f7fffd;border:1px solid rgba(20,90,82,.16);box-shadow:0 24px 60px #081e1a47;padding:1rem 1.1rem 1.1rem}.modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:.85rem}.modal-head h3{margin:0;font-size:1.05rem}.modal-head p{margin:.25rem 0 0;color:var(--muted, #5a736d);font-size:.88rem}.docx-sheet{width:min(980px,100%);max-width:100%;min-width:0;max-height:min(94vh,1100px);display:flex;flex-direction:column;overflow:hidden}.knowledge-map-sheet{width:min(1280px,100%);max-height:min(94vh,1100px);display:flex;flex-direction:column;overflow:hidden}.subject-curriculum-textbook-sheet{width:min(920px,100%)}.knowledge-map-layout.is-subject-textbook-map{grid-template-columns:minmax(220px,1fr) minmax(260px,1.1fr);min-height:min(68vh,640px)}.generations-sheet{width:min(1020px,100%)}.generations-head{align-items:center;margin-bottom:.65rem}.generations-head h3{margin:0;flex:1 1 auto}.generations-head-actions{display:flex;align-items:center;gap:.45rem;flex-shrink:0}.generations-table{max-height:min(62vh,560px);gap:.1rem}.generations-table .data-table-head,.generations-table .data-table-row{display:grid;grid-template-columns:40px minmax(180px,2.2fr) minmax(110px,.9fr) 64px 84px;gap:.45rem;min-height:32px;padding:.18rem .3rem;font-size:.82rem;line-height:1.2}.generations-table .data-table-head{align-items:center;font-size:.74rem;padding-top:.12rem;padding-bottom:.12rem}.generations-table .data-table-row{align-items:start}.generations-stt,.generations-when,.generations-count{font-size:.76rem;white-space:nowrap;align-self:center}.generations-stt{font-weight:650;color:var(--ink-soft);text-align:center}.generations-count{text-align:center;font-weight:650}.generations-class{min-width:0;font-weight:600;color:var(--ink, #1a2e28);white-space:normal;word-break:break-word;line-height:1.35;padding-top:.12rem;padding-bottom:.12rem}.generations-actions-head{text-align:right;font-size:.74rem}.generations-actions{display:flex;align-items:center;justify-content:flex-end;gap:.12rem;flex-wrap:nowrap;align-self:center}.generations-actions .icon-only{width:26px;height:26px;padding:0;flex-shrink:0}.data-sources-sheet{width:min(1020px,100%)}.data-sources-head{align-items:flex-start;margin-bottom:.65rem}.data-sources-head h3{margin:0}.data-sources-table{max-height:min(62vh,560px);gap:.1rem}.data-sources-table .data-table-head,.data-sources-table .data-table-row{display:grid;grid-template-columns:40px minmax(180px,2.4fr) minmax(120px,.9fr) minmax(110px,.85fr) 36px;gap:.45rem;min-height:32px;padding:.18rem .3rem;font-size:.82rem;line-height:1.2;align-items:center}.data-sources-table .data-table-head{font-size:.74rem}.data-source-stt{font-size:.76rem;font-weight:650;color:var(--ink-soft);text-align:center}.data-source-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-source-category{color:var(--ink-mute);font-size:.78rem}.data-source-when{font-size:.78rem;color:var(--ink-mute);white-space:nowrap}.data-sources-table .data-table-empty{display:flex;flex-direction:column;align-items:center;gap:.35rem;padding:2rem 1rem;color:var(--ink-mute);font-size:.85rem}.loading.compact{padding:1.5rem 0;font-size:.9rem}.knowledge-map-body{flex:1 1 auto;min-height:0;overflow:hidden;display:flex;flex-direction:column;gap:.5rem}.knowledge-map-layout{display:grid;grid-template-columns:minmax(200px,.9fr) minmax(220px,1fr) minmax(240px,1.15fr);gap:.65rem;align-items:stretch;flex:1 1 auto;min-height:min(72vh,700px);overflow:hidden;--knowledge-map-foot-pane-height: min(24vh, 200px)}.knowledge-map-layout.is-lesson-step{grid-template-columns:minmax(200px,.85fr) minmax(280px,1.5fr)}.knowledge-map-layout.is-detail-step{grid-template-columns:minmax(180px,.75fr) minmax(220px,1fr) minmax(260px,1.1fr)}.knowledge-map-lesson-pick{display:flex;flex-direction:column;gap:.22rem;margin-bottom:.15rem}.knowledge-map-lesson-pick select{width:100%;min-width:0;font-size:.78rem;padding:.32rem .4rem;border:1px solid var(--line);border-radius:.35rem;background:#ffffffe6}.knowledge-map-col-textbook .knowledge-map-list-item span{overflow-wrap:anywhere}.knowledge-map-list-item.is-lesson-unit{flex-direction:column;align-items:stretch;border-top:1px solid rgba(0,0,0,.06);margin-top:.28rem;padding-top:.42rem}.knowledge-map-list-item.is-lesson-unit:first-child{border-top:none;margin-top:0;padding-top:.32rem}.knowledge-map-list-item.is-lesson-unit input{align-self:flex-start}.knowledge-map-textbook-lesson{width:100%;font-weight:700;text-align:center}.knowledge-map-textbook-topic{font-weight:500;text-align:left;text-transform:none}.knowledge-map-col{display:flex;flex-direction:column;gap:.32rem;min-width:0;min-height:0;max-height:100%;overflow:hidden;padding:.55rem .55rem .5rem;border:1px solid var(--line);border-radius:10px;background:#ffffff8c}.knowledge-map-col.is-lessons{min-height:0;text-align:left}.knowledge-map-col.is-lessons h4,.knowledge-map-col.is-lessons .knowledge-map-col-hint,.knowledge-map-col.is-lessons .knowledge-map-located,.knowledge-map-col.is-lessons .knowledge-map-located-list{text-align:left}.knowledge-map-col-editable{padding-bottom:.45rem}.knowledge-map-col-scroll{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;display:flex;flex-direction:column;gap:.32rem;scrollbar-gutter:stable}.knowledge-map-col-foot{flex-shrink:0;display:flex;flex-direction:column;gap:.28rem;margin-top:auto;padding-top:.45rem;border-top:1px solid var(--line);background:#fffffff5}.knowledge-map-foot-label{font-size:.7rem;font-weight:650;color:var(--ink-soft);line-height:1.2}.knowledge-map-col h4{margin:0;font-size:.82rem;font-weight:750;color:var(--ink)}.knowledge-map-col-hint{margin:0;font-size:.72rem;font-weight:500;color:var(--ink-soft);line-height:1.35}.knowledge-map-col-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:.45rem}.knowledge-map-col-toolbar .knowledge-map-col-hint{flex:1 1 auto;min-width:0}.knowledge-map-clear-btn{flex-shrink:0;font-size:.72rem;padding:.2rem .45rem;white-space:nowrap}.knowledge-map-col textarea{flex-shrink:0;min-height:4.25rem;max-height:9rem;width:100%;font:inherit;font-weight:400;color:var(--ink);padding:.35rem .5rem;border:1px solid var(--line);border-radius:8px;resize:vertical;background:#fff;box-sizing:border-box}.knowledge-map-col-foot textarea:first-of-type{height:var(--knowledge-map-foot-pane-height);min-height:var(--knowledge-map-foot-pane-height);max-height:var(--knowledge-map-foot-pane-height);resize:vertical}.knowledge-map-col-foot textarea:not(:first-of-type){min-height:2.75rem;max-height:5.5rem}.knowledge-map-col-foot-located{gap:0;padding-top:.4rem}.knowledge-map-col-foot-located .knowledge-map-located{margin:0;padding:.4rem .45rem;height:var(--knowledge-map-foot-pane-height);min-height:var(--knowledge-map-foot-pane-height);max-height:var(--knowledge-map-foot-pane-height);overflow-y:auto;scrollbar-gutter:stable}.knowledge-map-col-foot-located .knowledge-map-located>span{font-size:.72rem;font-weight:650;color:var(--ink-soft)}.knowledge-map-col-foot-located .knowledge-map-located-list li{font-size:.78rem}.knowledge-map-nav{display:grid;align-content:start;gap:.22rem}.knowledge-map-col .knowledge-map-list{flex:0 1 auto;min-height:0}.knowledge-map-outline{flex-shrink:0;max-height:min(22vh,220px);overflow-y:auto;scrollbar-gutter:stable}.knowledge-map-located{display:grid;gap:.35rem;margin-bottom:.55rem;padding:.45rem .55rem;border:1px solid var(--border, #d8dee8);border-radius:.45rem;background:var(--surface-2, #f7f9fc)}.knowledge-map-located>span{font-size:.82rem;color:var(--muted, #5c6678)}.knowledge-map-located-hint{margin:0;font-size:.68rem;font-weight:500;color:var(--ink-soft);line-height:1.35}.knowledge-map-selected-sections{display:grid;gap:.22rem}.knowledge-map-selected-sections-list{margin:0;padding:0;list-style:none;display:grid;gap:.18rem;max-height:min(14vh,120px);overflow-y:auto}.knowledge-map-selected-sections-list li{font-size:.74rem;line-height:1.3;color:var(--ink)}.knowledge-map-theory-map{display:grid;gap:.28rem;margin-top:.15rem;padding-top:.35rem;border-top:1px dashed var(--line)}.knowledge-map-theory-map-title{font-size:.7rem;font-weight:650;color:var(--ink-soft)}.knowledge-map-theory-map-list{margin:0;padding:0;list-style:none;display:grid;gap:.28rem}.knowledge-map-theory-map-item{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:.28rem;align-items:start;font-size:.74rem;line-height:1.32}.knowledge-map-theory-map-ctdt{color:var(--ink)}.knowledge-map-theory-map-arrow{color:var(--ink-soft);font-size:.72rem;padding-top:.05rem}.knowledge-map-theory-map-target{margin:0;padding:0;border:0;background:none;text-align:left;font:inherit;font-size:.74rem;line-height:1.32;color:var(--accent, #2563eb);cursor:pointer;text-decoration:underline;text-underline-offset:2px}.knowledge-map-theory-map-item.is-selected .knowledge-map-theory-map-target{font-weight:650}.knowledge-map-theory-map-item.is-unmatched .knowledge-map-theory-map-arrow{opacity:.45}.knowledge-map-located-list{margin:0;padding:0;list-style:none;display:grid;gap:.35rem}.knowledge-map-located-list li{display:grid;gap:.12rem;font-size:.86rem}.knowledge-map-located-list li.is-missing{color:var(--danger, #b42318)}.knowledge-map-located-list li em{font-style:normal;color:var(--accent, #2563eb)}.knowledge-map-located-list li span:not(.row-meta){color:var(--text, #1f2937)}.knowledge-map-outline textarea{min-height:8rem}.knowledge-map-nav-item{display:grid;gap:.08rem;width:100%;box-sizing:border-box;text-align:left;justify-content:start;justify-items:stretch;align-items:start;padding:.4rem .5rem;border:1px solid var(--line);border-radius:8px;background:#ffffffb3;color:inherit;cursor:pointer}.knowledge-map-nav-item strong{font-size:.8rem;font-weight:650;white-space:normal;overflow:visible;line-height:1.35}.knowledge-map-nav-item span{font-size:.72rem;color:var(--ink-soft)}.knowledge-map-nav-item.is-active{border-color:#0f766e73;background:#e8f8f2}.knowledge-map-field{display:grid;gap:.28rem;font-size:.78rem;font-weight:650;color:var(--ink-soft)}.knowledge-map-field textarea{width:100%;font:inherit;font-weight:400;color:var(--ink);padding:.4rem .5rem;border:1px solid var(--line);border-radius:8px;resize:vertical;background:#fff}.knowledge-map-list{display:grid;gap:0;border:1px solid var(--line);border-radius:8px;background:#fff}.knowledge-map-list-item{display:grid;grid-template-columns:1.15rem minmax(0,1fr);gap:.5rem;align-items:start;margin:0;padding:.5rem .55rem;border-bottom:1px solid var(--line);font-size:.84rem;font-weight:500;color:var(--ink);cursor:pointer}.knowledge-map-list-item:last-child{border-bottom:0}.knowledge-map-list-item input{margin:.15rem 0 0;width:1rem;height:1rem}.knowledge-map-list-item span{min-width:0;white-space:normal;overflow-wrap:anywhere;line-height:1.35}.knowledge-map-list-item.on{background:#e8f8f2}.knowledge-map-steps{display:flex;gap:.4rem;flex-wrap:wrap;margin:.35rem 0 .15rem}.knowledge-map-step{border:1px solid var(--line);background:var(--surface-2, #f7f9fc);color:var(--ink-soft);border-radius:999px;padding:.28rem .75rem;font-size:.78rem;font-weight:600;cursor:pointer}.knowledge-map-step.is-active{background:#e8f8f2;border-color:#9fd9c6;color:var(--ink)}.knowledge-map-subtitle{margin:.15rem 0 0}.knowledge-map-col-detail{grid-column:2 / -1}.knowledge-map-col-ctdt .knowledge-map-list-item span{overflow-wrap:anywhere}.knowledge-map-ctdt-groups{display:flex;flex-direction:column;gap:.55rem}.knowledge-map-ctdt-group-title{font-size:.74rem;font-weight:700;color:var(--ink);line-height:1.35;padding:.28rem .35rem;border-radius:.3rem;background:#e8f8f2d9;border:1px solid #c5e8da;overflow-wrap:anywhere}.knowledge-map-ctdt-tree{display:flex;flex-direction:column;gap:.12rem}.knowledge-map-tree-item{display:flex;align-items:flex-start;justify-content:space-between;gap:.4rem;width:100%;text-align:left;border:1px solid transparent;border-radius:.35rem;background:transparent;padding:.32rem .4rem;font:inherit;color:var(--ink)}.knowledge-map-tree-item.is-parent{color:var(--ink-soft);font-size:.78rem;font-weight:600;cursor:default}.knowledge-map-tree-item.is-leaf{cursor:pointer;font-size:.78rem}.knowledge-map-tree-item.is-leaf:hover{background:#ffffffbf;border-color:var(--line)}.knowledge-map-tree-item.is-leaf.is-active{background:#e8f8f2;border-color:#9fd9c6}.knowledge-map-tree-item.is-leaf.is-mapped:not(.is-active){border-color:#9fd9c68c}.knowledge-map-tree-label{flex:1 1 auto;min-width:0;line-height:1.35;overflow-wrap:anywhere}.knowledge-map-tree-meta{flex-shrink:0;font-size:.68rem;font-weight:650;color:var(--ink-soft);white-space:nowrap;padding-top:.08rem}.knowledge-map-tree-item.is-leaf.is-mapped .knowledge-map-tree-meta{color:#1a7f5a}.knowledge-map-detail-list{display:grid;gap:.45rem}.knowledge-map-detail-row{display:grid;grid-template-columns:minmax(120px,.85fr) minmax(200px,2fr) auto;gap:.45rem;align-items:start;padding:.4rem .45rem;border:1px solid var(--line);border-radius:.4rem;background:var(--surface-2, #f7f9fc)}.knowledge-map-detail-heading{font-size:.8rem;line-height:1.35;overflow-wrap:anywhere;padding-top:.15rem}.knowledge-map-detail-sections{display:flex;flex-direction:column;gap:.22rem;max-height:min(28vh,220px);overflow-x:hidden;overflow-y:auto;padding:.28rem .32rem;border:1px solid var(--line);border-radius:.35rem;background:#ffffffb8;scrollbar-gutter:stable}.knowledge-map-detail-section-item{display:flex;align-items:flex-start;gap:.35rem;font-size:.76rem;line-height:1.32;padding:.18rem .28rem;border-radius:.28rem;cursor:pointer}.knowledge-map-detail-section-item input{flex-shrink:0;margin-top:.12rem}.knowledge-map-detail-section-item span{overflow-wrap:anywhere}.knowledge-map-detail-section-item.on{background:#e8f8f2}.knowledge-map-detail-row select{min-width:0;font-size:.78rem;padding:.28rem .35rem}.knowledge-map-detail-status{font-size:.72rem;font-weight:650;white-space:nowrap}.knowledge-map-detail-status.is-mapped{color:#1a7f5a}.knowledge-map-detail-status.is-empty{color:var(--muted, #5c6678)}.knowledge-map-actions{display:flex;justify-content:space-between;gap:.5rem;flex-wrap:wrap;flex-shrink:0;margin-top:.75rem;padding-top:.65rem;border-top:1px solid var(--line)}.knowledge-map-actions-end{display:flex;gap:.4rem;margin-left:auto}.docx-sheet .modal-head{position:relative;z-index:3;flex-shrink:0;background:#f7fffd;align-items:center}.modal-head-actions{display:flex;align-items:center;gap:.45rem;flex-shrink:0}.modal-head-actions .btn-modal-close{display:inline-flex;align-items:center;gap:.35rem}.docx-preview-scroll{position:relative;flex:1 1 auto;min-width:0;min-height:52vh;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch;background:#d8d8d8;border-radius:10px;padding:.85rem .6rem 1.1rem}.docx-preview-loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:grid;place-content:center;place-items:center;gap:.65rem;color:var(--ink-soft);background:#d8d8d8e0}.docx-preview-host{overflow:visible;isolation:isolate;width:max-content;min-width:100%}.docx-preview-host .docx-wrapper{background:transparent!important;padding:4px 0 12px!important;width:max-content;min-width:100%;max-width:none!important}.docx-preview-host section.docx,.docx-preview-host .docx{background:#fff;box-shadow:0 10px 28px #141e1c2e;margin-left:auto;margin-right:auto;overflow:hidden!important;height:auto!important;max-width:none!important}.docx-preview-host table{width:100%;table-layout:fixed;border-collapse:collapse}.docx-preview-host td,.docx-preview-host th{vertical-align:top;word-break:break-word}.preview-grid{display:grid;gap:.65rem;margin:0}.preview-field{padding:.65rem .75rem;border-radius:10px;background:#145a520d;border:1px solid rgba(20,90,82,.1)}.preview-field dt{margin:0 0 .3rem;font-size:.78rem;font-weight:650;color:var(--muted, #5a736d);text-transform:uppercase;letter-spacing:.03em}.preview-field dd{margin:0;white-space:pre-wrap;line-height:1.45;font-size:.92rem}.modal-foot{display:flex;justify-content:space-between;align-items:center;gap:.75rem;margin-top:1rem;padding-top:.85rem;border-top:1px solid rgba(20,90,82,.12)}.workflow{display:flex;flex-wrap:wrap;gap:.5rem;padding:.15rem 1.25rem .65rem;animation:fade-up .5s ease both}.workflow-step{display:flex;align-items:center;gap:.55rem;padding:.45rem .75rem;border-radius:999px;background:#ffffff14;border:1px solid rgba(255,255,255,.12);color:#f4fffce0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);flex:1 1 180px;min-width:0}.workflow-step strong{display:inline;font-size:.86rem;margin-right:.35rem}.workflow-step span{display:inline;font-size:.78rem;color:#f4fffc9e}.workflow-icon{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;background:#8fd6cb29;color:#9fe0d5;flex-shrink:0}.workspace{display:grid;grid-template-columns:1fr;gap:.5rem;width:100%;max-width:none;margin:0;padding:.15rem 1.25rem 1.25rem;box-sizing:border-box}.workspace-heading{display:flex;align-items:flex-start;gap:.65rem;color:#f4fffc;margin:.1rem 0 .15rem}.workspace-heading svg{flex-shrink:0;margin-top:.18rem;color:#9fe0d5}.workspace-heading h1{margin:0;font-family:var(--display);font-size:1.28rem;font-weight:650;letter-spacing:-.02em;line-height:1.2}.workspace-heading p{margin:.18rem 0 0;font-size:.82rem;color:#f4fffcad}.workspace-nav{display:flex;flex-wrap:wrap;gap:.4rem}.build-step-num{width:1.2rem;height:1.2rem;border-radius:999px;display:grid;place-items:center;font-size:.72rem;font-weight:750;background:#ffffff24;color:inherit}button.workspace-tab.is-active .build-step-num{background:var(--jade-soft);color:var(--jade-deep)}button.workspace-tab{width:auto;padding:.48rem .95rem;border-radius:999px;background:#ffffff14;border:1px solid rgba(255,255,255,.16);color:#f4fffcdb;box-shadow:none;font-size:.88rem;font-weight:650;flex-shrink:0}button.workspace-tab:hover:not(:disabled){background:#ffffff24;transform:none}button.workspace-tab.is-active{background:#f4fffc;color:var(--jade-deep);border-color:transparent}button.workspace-tab svg,button.workspace-tab.is-active svg{transform:none}.workspace-panels{min-width:0}.workspace-panels>[hidden]{display:none!important}.panel{background:var(--surface);border:1px solid rgba(255,255,255,.4);border-radius:12px;padding:.55rem .75rem;box-shadow:0 8px 20px #0b1f2a1a;animation:fade-up .45s ease both;min-width:0;min-height:0;display:grid;grid-template-columns:1fr;gap:.45rem;align-items:start}.panel:nth-child(2){animation-delay:.05s}.panel:nth-child(3){animation-delay:.1s}.panel.accent{background:linear-gradient(90deg,#d7f0eb73,#f7fbfbeb 38%),var(--surface-solid)}.panel-head{display:flex;gap:.45rem;align-items:flex-start;margin:0;padding-right:.15rem}.panel-icon{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;background:var(--jade-soft);color:var(--jade-deep);flex-shrink:0}.panel.accent .panel-icon{background:#1f8a7e24;color:var(--jade-deep)}.panel-head h2{margin:0;font-family:var(--display);font-size:1rem;letter-spacing:-.01em;line-height:1.2}.panel-head p{margin:.12rem 0 0;color:var(--ink-soft);font-size:.74rem;line-height:1.3}.panel-body{display:flex;flex-direction:column;gap:.35rem;min-width:0;min-height:0}.panel .toast,.panel .hint.toast{padding:.35rem .55rem;margin:0;font-size:.8rem}.panel input,.panel select,.panel textarea{padding:.42rem .65rem}.panel button:not(.btn-compact):not(.btn-quiet):not(.danger):not(.btn-modal-close):not(.btn-compact-primary):not(.tpl-merge):not(.req-float-close):not(.btn-build-ga){padding:.42rem .75rem}.toolbar-row{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.toolbar-row .section-label{flex:1;margin-top:0}.map-guide{margin:0;padding:.45rem .6rem;border-radius:10px;background:#d7f0eb6b;border:1px solid rgba(31,138,126,.18);color:var(--ink-soft);font-size:.8rem;line-height:1.4}.map-guide strong{color:var(--jade-deep);font-weight:700}.map-guide-inline{margin:.28rem 0 0;color:var(--ink-soft);font-size:.8rem;font-weight:500;line-height:1.35}.req-setup-btns{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem}.req-setup-num{width:1.15rem;height:1.15rem;border-radius:999px;display:grid;place-items:center;font-size:.7rem;font-weight:750;background:#1f8a7e24;color:var(--jade-deep)}button.btn-compact.is-open .req-setup-num{background:#fff}.confirm-yes-sheet{width:min(440px,100%);display:grid;gap:.85rem}.confirm-yes-banner{display:flex;align-items:flex-start;gap:.6rem;padding:.7rem .75rem;border-radius:10px;background:var(--danger-soft);color:var(--danger)}.confirm-yes-banner h3{margin:0;font-size:.95rem;color:var(--danger)}.confirm-yes-banner p{margin:.25rem 0 0;font-size:.82rem;line-height:1.4;color:#7a1f18}.confirm-yes-label{display:grid;gap:.35rem;font-size:.82rem;color:var(--ink-soft)}.confirm-yes-actions{display:flex;justify-content:flex-end;gap:.4rem}.setup-sheet{width:min(96vw,var(--setup-w, 720px));max-height:min(92dvh,980px)}.setup-sheet.is-templates{--setup-w: 640px}.setup-sheet.is-materials{--setup-w: 980px}.setup-sheet.is-schedule{--setup-w: 780px;max-height:min(88dvh,720px)}.schedule-panel .panel-body,.schedule-panel-body{gap:.5rem}.schedule-panel .class-table{max-height:min(52vh,420px);overflow:auto}.schedule-panel .data-table-row{padding:.22rem .35rem}.schedule-panel .modal-head p.modal-head-short{margin:.15rem 0 0;font-size:.82rem;color:var(--ink-mute)}.schedule-panel .copy-schedule-sheet{width:min(380px,100%)}.schedule-panel .copy-schedule-form{gap:.55rem}.schedule-panel .modal-head{margin-bottom:.55rem}.schedule-panel .modal-head h3{font-size:1rem}.setup-sheet .panel{background:transparent;border:0;box-shadow:none;padding:0;animation:none}.setup-sheet .toolbar-row{padding-bottom:.55rem;margin-bottom:.2rem;border-bottom:1px solid var(--line)}.setup-sheet .section-label span:first-child{font-family:var(--display);font-size:1.05rem;font-weight:650;letter-spacing:-.01em;text-transform:none;color:var(--ink)}.setup-sheet .data-table,.setup-sheet .template-ready-list{overflow-x:auto}.add-box{padding:.4rem;border:1px dashed rgba(31,138,126,.28);border-radius:10px;background:#d7f0eb38}.filter-select{width:auto;min-width:9.5rem;max-width:14rem;padding:.32rem .55rem;font-size:.8rem;border-radius:999px}button.btn-quiet,.list button.btn-quiet{background:#fff;color:var(--jade-deep);border:1px solid rgba(31,138,126,.22);padding:.38rem .65rem;font-size:.8rem;box-shadow:none}button.btn-quiet:hover:not(:disabled){background:var(--jade-soft);transform:none}button.btn-compact-primary,.list button.btn-compact-primary{padding:.38rem .7rem;font-size:.8rem}button.danger.icon-only{width:32px;height:32px;padding:0;justify-self:end}.composer{display:grid;gap:.4rem;padding:.45rem .5rem;border:1px solid var(--line);border-radius:10px;background:#ffffff9e}.composer-one{grid-template-columns:1fr 1fr 1fr 1.05fr auto;align-items:end}.composer-one>button{white-space:nowrap;height:fit-content}.composer-fields,.composer-run{display:grid;gap:.4rem}.composer-fields{grid-template-columns:repeat(3,minmax(0,1fr))}.composer-run{grid-template-columns:minmax(0,1fr) auto;align-items:end}.composer-run>button{white-space:nowrap;height:fit-content}.upload-row,.inline-form,.generate-form{display:grid;gap:.5rem}.add-toggle-row{display:flex;justify-content:flex-start}button.btn-compact{width:auto;padding:.32rem .65rem;font-size:.8rem;font-weight:650;border-radius:999px;background:#1f8a7e1a;border:1px solid rgba(31,138,126,.22);color:var(--jade-deep);box-shadow:none}button.btn-compact:hover:not(:disabled){background:#1f8a7e29;transform:none}button.btn-compact.is-open{background:#1f8a7e29}button.btn-compact.is-open svg{transform:rotate(45deg)}button.btn-compact svg{transition:transform .15s ease}.upload-row.template-upload{grid-template-columns:minmax(160px,.8fr) minmax(0,1.4fr);align-items:stretch}.inline-form{grid-template-columns:1.35fr .75fr auto}.generate-form{grid-template-columns:repeat(4,minmax(0,1fr)) auto;align-items:end}.generate-form>button{height:fit-content;white-space:nowrap}.dropzone{position:relative;border:1.5px dashed rgba(31,138,126,.35);border-radius:10px;padding:.4rem .65rem;background:#d7f0eb47;display:flex;align-items:center;gap:.65rem;text-align:left;color:var(--ink-soft);transition:background .15s ease,border-color .15s ease}.dropzone>strong{display:block}.dropzone>span{display:block}.dropzone:hover{background:#d7f0eb73;border-color:#1f8a7e8c}.dropzone strong{color:var(--ink);font-size:.92rem}.dropzone span{font-size:.8rem}.dropzone input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.dropzone.busy{opacity:.7;pointer-events:none}.list{list-style:none;margin:0;padding:0;display:grid;gap:.28rem;overflow:auto;max-height:168px}.list>li{display:flex;justify-content:space-between;gap:.5rem;align-items:center;padding:.35rem .5rem;border:1px solid var(--line);border-radius:9px;background:#ffffffb8}.list>li.empty{border-style:dashed;color:var(--ink-soft);justify-content:center;text-align:center;background:transparent}.item-main{display:flex;gap:.7rem;min-width:0}.item-icon{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;background:var(--sky);color:var(--jade-deep);flex-shrink:0}.item-title{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem}.item-title strong{font-size:.88rem}.badge{display:inline-flex;align-items:center;gap:.25rem;padding:.12rem .5rem;border-radius:999px;font-size:.72rem;font-weight:600;background:var(--jade-soft);color:var(--jade-deep);text-transform:lowercase}.badge.status-ready{background:#d9f5e8;color:var(--ok)}.badge.status-processing{background:var(--warn-soft);color:var(--warn)}.badge.status-error{background:var(--danger-soft);color:var(--danger)}.badge.status-muted{background:#5a736d1f;color:var(--ink-mute);text-transform:none}.meta{margin:.1rem 0 0;font-size:.76rem}.data-table,.subject-table{display:grid;gap:.25rem;max-height:168px;overflow:auto}.data-table-head,.data-table-row{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(128px,1.1fr) minmax(92px,.7fr) minmax(92px,.7fr) 36px;gap:.4rem;align-items:center}.subject-table{max-height:280px}.subject-table-head,.subject-table-row{display:grid;grid-template-columns:36px minmax(0,1.25fr) minmax(140px,1fr) minmax(140px,1fr) 36px;gap:.4rem;align-items:center}.subject-stt{text-align:center;font-size:.8rem;font-weight:650;color:var(--ink-soft)}.subject-upload-cell{display:flex;align-items:center;gap:.35rem;min-width:0;position:relative}.subject-materials-col{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;min-width:0}.subject-materials-col .subject-map-btn{font-size:.76rem;padding:.22rem .45rem;max-width:100%;white-space:normal;text-align:left;line-height:1.25}.subject-upload-cell .file-chip{position:relative;flex:0 0 36px;width:36px;max-width:36px;min-width:36px;overflow:hidden}.subject-upload-files{min-width:0;flex:1;display:grid;gap:.12rem;position:relative;z-index:2}.subject-file-line{display:flex;align-items:center;gap:.15rem;min-width:0;position:relative;z-index:2}.subject-file-line .danger.icon-only{width:1.4rem;height:1.4rem;flex-shrink:0}.subject-doc-name{min-width:0;font-size:.76rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.class-table-head,.class-table-row{grid-template-columns:minmax(0,1fr) minmax(0,.55fr) minmax(260px,1.5fr) 36px}.class-row-actions{display:flex;flex-wrap:wrap;gap:.3rem;align-items:center}.class-row-actions .btn-compact{font-size:.76rem;padding:.22rem .45rem}.class-row-actions-empty{font-size:.82rem}.copy-schedule-sheet{width:min(440px,100%)}.add-class-form select{width:100%;padding:.45rem .55rem;border-radius:8px;border:1px solid var(--line);background:#fff;font-size:.88rem}.copy-schedule-form{display:flex;flex-direction:column;gap:.75rem}.copy-schedule-form label{display:flex;flex-direction:column;gap:.3rem}.copy-schedule-form label>span{font-size:.78rem;font-weight:600;color:var(--ink-mute)}.copy-schedule-form input{padding:.45rem .55rem;border-radius:8px;border:1px solid var(--line)}.copy-schedule-form-actions{display:flex;justify-content:flex-end;gap:.45rem}.class-schedule-cell{display:flex;flex-direction:column;align-items:flex-start;gap:.3rem;min-width:0}.class-schedule-inline{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;gap:.28rem;min-width:0}.class-schedule-inline .file-chip.compact,.class-schedule-cell .file-chip.compact{width:auto;min-width:0;max-width:none;flex:0 0 auto;padding:.22rem .5rem}.class-schedule-inline .btn-compact{flex:0 0 auto;font-size:.76rem;padding:.22rem .45rem;white-space:nowrap}.class-schedule-cell .class-map-btn{font-size:.76rem;padding:.22rem .45rem}.btn-compact.danger-soft{color:var(--danger, #b42318);border-color:#b4231840;background:#fff8f7e6}.btn-compact.danger-soft:hover:not(:disabled){background:var(--danger-soft, #fde8e6)}.data-table-head,.subject-table-head,.class-table-head{display:grid;padding:.1rem .4rem;font-size:.7rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-mute)}.data-table-row,.subject-table-row{padding:.3rem .4rem;border:1px solid var(--line);border-radius:8px;background:#ffffffc7}.data-empty,.subject-table-empty{padding:.55rem;text-align:center;color:var(--ink-soft);font-size:.85rem;border:1px dashed var(--line);border-radius:10px}.name-cell,.subject-name-cell{display:grid;gap:.1rem;min-width:0}.name-cell strong,.subject-name-cell strong{font-size:.9rem}.row-meta,.cell-muted{font-size:.75rem;color:var(--ink-soft)}.compact-list{max-height:168px}.compact-list>li{padding:.32rem .45rem}.class-create-form{grid-template-columns:1.2fr 1fr auto}.subject-add-form{grid-template-columns:1.15fr .55fr 1fr auto}.template-ready-list{display:grid;gap:.3rem;margin:.15rem 0 .65rem}.template-ready-row{display:grid;grid-template-columns:minmax(0,1fr) 36px;gap:.45rem;align-items:center;padding:.4rem .5rem;border:1px solid var(--line);border-radius:8px;background:#ffffffc7}.row-select{width:100%;min-width:0;padding:.3rem .4rem;font-size:.76rem}.req-lead{margin:0;color:var(--ink-soft);font-size:.8rem;line-height:1.4}.req-tools{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.45rem;align-items:center}.req-filters{display:flex;gap:.3rem;flex-wrap:wrap}.req-list{display:grid;gap:.55rem;max-height:min(70vh,720px);overflow:auto;padding-right:.15rem}.req-group{display:grid;gap:.35rem}.req-group-head{display:flex;align-items:center;gap:.45rem;padding:.1rem .15rem}.req-group-head strong{font-size:.78rem;font-weight:700}.req-group-head span{color:var(--ink-mute);font-size:.72rem}.req-group-head .btn-quiet{margin-left:auto;padding:.2rem .5rem;font-size:.72rem}.req-field{display:grid;gap:.28rem;padding:.45rem .55rem;border:1px solid var(--line);border-radius:10px;background:#ffffffc7}.req-field.has-prompt{border-color:#1f8a7e59;background:#d7f0eb47}.req-field-name{display:flex;align-items:center;gap:.35rem;flex-wrap:wrap;font-size:.78rem;font-weight:650;color:var(--jade-deep);word-break:break-all}.req-field-name em{font-style:normal;font-size:.68rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ok)}.req-sample{color:var(--ink-mute);font-size:.72rem;line-height:1.35}.req-field textarea{width:100%;min-height:3.2rem;resize:vertical;border:1px solid var(--line-strong);border-radius:8px;background:#fff;color:var(--ink);line-height:1.4}.req-field textarea:focus{outline:none;border-color:var(--jade);box-shadow:0 0 0 3px #1f8a7e29}.req-count{justify-self:end;font-size:.68rem;color:var(--ink-mute)}.req-field-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem}.req-field-actions .req-count{margin-left:auto}.req-saved-note{font-size:.7rem;font-weight:650;color:var(--ok)}.req-workspace{position:relative;display:grid;grid-template-columns:minmax(0,1fr);gap:.75rem;align-items:start}.req-editor-float{position:absolute;top:.55rem;right:.55rem;z-index:12;width:min(420px,calc(100% - 1.1rem));max-height:min(78vh,640px);overflow:auto;display:grid;gap:.4rem;padding:.7rem .75rem .8rem;border:1px solid rgba(31,138,126,.28);border-radius:14px;background:#fff;box-shadow:0 18px 40px #0b1f2a38}.req-editor-float textarea{width:100%;min-height:6.5rem;resize:vertical}.req-float-head{display:flex;align-items:flex-start;gap:.45rem}.req-float-head .req-field-name{flex:1;min-width:0}button.req-float-close{width:2rem;min-width:2rem;height:2rem;padding:0;border-radius:8px;background:#0b1f2a0d;color:var(--ink);border:1px solid var(--line);box-shadow:none;flex-shrink:0}button.req-float-close:hover:not(:disabled){background:var(--danger-soft);color:var(--danger);transform:none}.req-editor{min-width:0;position:sticky;top:.45rem}.req-template-view{position:sticky;top:.45rem;min-width:0;max-width:100%;display:grid;gap:.3rem;padding:.5rem .55rem .6rem;border:1px solid var(--line);border-radius:12px;background:#ffffffc7}.req-template-hint{margin:0;color:var(--ink-soft);font-size:.72rem;line-height:1.35}.req-template-scroll{position:relative;max-height:min(72vh,860px);min-height:18rem;min-width:0;max-width:100%;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch;background:#d8d8d8;border-radius:10px;padding:.55rem .4rem .75rem}button.tpl-merge{display:inline;width:auto;height:auto;min-height:0;margin:0 .05em;padding:0 .18em;border:0;border-radius:3px;background:#fff3a3;color:inherit;font:inherit;font-weight:700;line-height:inherit;gap:0;cursor:pointer;box-shadow:0 0 0 1px #c4950066;transform:none;white-space:pre-wrap;overflow:visible;max-width:none}button.tpl-merge:hover:not(:disabled){background:#ffe066;color:inherit;transform:none}button.tpl-merge.is-active{background:#7ee0d2;box-shadow:0 0 0 2px #1f8a7e}button.tpl-merge.is-active:hover:not(:disabled){background:#63d4c4}button.tpl-merge.is-dim{opacity:.38;background:#ececec;box-shadow:none;font-weight:600}.req-preview-bar{display:grid;gap:.4rem;padding:.4rem;border:1px dashed rgba(31,138,126,.28);border-radius:10px;background:#d7f0eb38}.req-preview-row{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem}.req-preview-row>.filter-select{width:14rem;max-width:14rem;flex:0 0 14rem}.req-preview-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;flex-shrink:0}button.btn-build-ga{position:relative;overflow:hidden;isolation:isolate;width:auto;padding:.62rem 1.2rem;font-size:.94rem;font-weight:750;letter-spacing:.01em;border-radius:999px;color:#f7fffd;background:linear-gradient(180deg,rgba(255,255,255,.18),transparent 42%),linear-gradient(135deg,#24c2ad,#1f8a7e 48%,#14665d);border:1px solid rgba(255,255,255,.28);box-shadow:0 10px 24px #14665d6b,0 0 0 1px #1f8a7e33}button.btn-build-ga:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(110deg,transparent 20%,rgba(255,255,255,.32) 48%,transparent 72%);transform:translate(-120%);pointer-events:none}button.btn-build-ga.is-ready:not(:disabled):after{animation:build-ga-shine 2.6s ease-in-out infinite}button.btn-build-ga.is-ready:not(:disabled){animation:build-ga-pulse 2.4s ease-in-out infinite}button.btn-build-ga:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 14px 30px #14665d80,0 0 0 1px #1f8a7e47}button.btn-build-ga:disabled{opacity:.48;box-shadow:none}.build-progress-sheet{width:min(560px,100%);max-height:min(86dvh,720px);display:flex;flex-direction:column}.build-progress-head h3{display:inline-flex;align-items:center;gap:.4rem}.build-overall{height:8px;border-radius:999px;background:#145a521f;overflow:hidden;margin:0 0 .75rem}.build-overall-fill{height:100%;border-radius:inherit;background:linear-gradient(90deg,#24c2ad,#14665d);transition:width .32s ease-out}.build-lesson-list{display:grid;gap:.35rem;max-height:min(46vh,380px);overflow:auto;padding-right:.15rem}.build-lesson-row{display:grid;grid-template-columns:1.7rem minmax(0,1fr) 2.4rem;gap:.45rem;align-items:center;padding:.42rem .5rem;border-radius:10px;border:1px solid var(--line);background:#ffffffb8}.build-lesson-row.is-pending{opacity:.55}.build-lesson-row.is-running{border-color:#1f8a7e66;background:#d7f0eb8c;box-shadow:0 0 0 2px #1f8a7e1a}.build-lesson-row.is-done{border-color:#0f766e47;background:#eefaf6}.build-lesson-num{width:1.5rem;height:1.5rem;border-radius:999px;display:grid;place-items:center;font-size:.7rem;font-weight:750;background:#1f8a7e1f;color:var(--jade-deep)}.build-lesson-copy{min-width:0;display:grid;gap:.22rem}.build-lesson-copy strong{font-size:.8rem;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.build-lesson-track{height:5px;border-radius:999px;background:#145a521a;overflow:hidden}.build-lesson-fill{height:100%;border-radius:inherit;background:linear-gradient(90deg,#3ad1bb,#14665d);transition:width .22s ease-out}.build-lesson-meta{justify-self:end;font-size:.72rem;font-weight:700;color:var(--jade-deep)}.build-boost{display:grid;grid-template-columns:auto 1fr;gap:.45rem .55rem;align-items:start;margin:.75rem 0 0;padding:.72rem .8rem;border-radius:12px;background:var(--warn-soft);border:1px solid rgba(161,98,7,.22);color:#7a4e04}.build-boost.is-verySlow{background:#fde8d8;border-color:#b4530947}.build-boost.is-slow{background:#fef1d4}.build-boost p{margin:0;font-size:.78rem;line-height:1.45}.build-boost .btn-build-boost{grid-column:2;justify-self:start;background:#b45309;color:#fff;padding:.4rem .7rem;font-size:.75rem}.build-boost .btn-build-boost:hover:not(:disabled){background:#9a3f06}.build-cancel-row{display:flex;justify-content:flex-end;margin-top:.8rem}.build-cancel-row .btn-compact{min-width:5.5rem}.build-success{display:grid;justify-items:center;text-align:center;gap:.55rem;padding:1.1rem .4rem .35rem}.build-success-mark{width:3.4rem;height:3.4rem;border-radius:999px;display:grid;place-items:center;color:#fff;background:linear-gradient(145deg,#24c2ad,#14665d);box-shadow:0 12px 28px #14665d59}.build-success h3{margin:.2rem 0 0;font-family:var(--display);font-size:1.35rem}.build-success p{margin:0;color:var(--ink-soft);font-size:.88rem}.build-success-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.45rem;margin-top:.55rem}@keyframes build-ga-pulse{0%,to{box-shadow:0 10px 24px #14665d6b,0 0 0 1px #1f8a7e33}50%{box-shadow:0 12px 32px #14665d94,0 0 0 4px #24c2ad2e}}@keyframes build-ga-shine{0%{transform:translate(-120%)}55%,to{transform:translate(120%)}}.req-lesson-nav{display:flex;align-items:center;gap:.3rem;flex:0 0 14rem;width:14rem;min-width:0;max-width:14rem}.req-lesson-select{width:14rem;min-width:0;max-width:14rem}.req-field.is-active{border-color:#1f8a7e73;box-shadow:0 0 0 2px #1f8a7e1f}.req-field-name .btn-quiet{margin-left:auto;padding:.18rem .45rem;font-size:.72rem}.req-preview{margin:0;padding:.45rem .55rem;border-radius:8px;background:#0b1f2a;color:#e8f8f2;font-size:.78rem;line-height:1.45;white-space:pre-wrap;word-break:break-word;max-height:12rem;overflow:auto}.req-preview>span{display:block;margin-bottom:.3rem;font-size:.68rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#9fe0d5}.subject-item{flex-direction:column;align-items:stretch!important}.list.subject-list{max-height:420px}.subject-top{width:100%;display:flex;justify-content:space-between;gap:.75rem}.doc-status{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.45rem}.doc-pill{display:inline-flex;align-items:center;gap:.3rem;font-size:.75rem;font-weight:600;padding:.2rem .5rem;border-radius:999px;background:#eef2f3;color:var(--ink-mute)}.doc-pill.on{background:#d9f5e8;color:var(--ok)}.file-grid{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.45rem;margin-top:.7rem}.file-grid.subject-docs{grid-template-columns:repeat(2,minmax(0,1fr))}.class-block{width:100%;margin-top:.55rem;padding-top:.55rem;border-top:1px dashed var(--line)}.class-add-form{display:grid;grid-template-columns:1fr auto;gap:.45rem;margin:.55rem 0 .65rem}.class-list{list-style:none;margin:0;padding:0;display:grid;gap:.45rem}.class-row{display:flex;justify-content:space-between;gap:.55rem;align-items:center;padding:.65rem .7rem;border-radius:12px;background:#e8f3f5a6;border:1px solid var(--line)}.class-info{display:grid;gap:.3rem;min-width:0}.class-info strong{font-size:.9rem}.class-actions{display:flex;align-items:center;gap:.4rem;flex-shrink:0}.file-chip.compact{padding:.28rem .45rem;min-width:96px;display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:.35rem;width:100%}.file-chip.compact.icon-upload{min-width:36px;width:36px;padding:.28rem;flex-shrink:0}.empty-class{color:var(--ink-soft);font-size:.84rem;padding:.35rem .1rem}.file-chip{position:relative;display:grid;gap:.35rem;justify-items:center;text-align:center;font-size:.78rem;font-weight:600;color:var(--ink-soft);padding:.7rem .4rem;border:1px dashed var(--line-strong);border-radius:12px;background:#ffffffa6;cursor:pointer;transition:border-color .15s ease,background .15s ease}.file-chip:hover{border-color:#1f8a7e73;background:var(--jade-soft);color:var(--jade-deep)}.file-chip input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.file-chip.on{border-style:solid;border-color:#0f766e59;background:#e8f8f2;color:var(--ok)}.section-label{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-top:0;font-size:.72rem;font-weight:600;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em}.loading,.loading-screen{color:#eefaf6;padding:2.5rem 1.5rem;text-align:center;display:grid;place-items:center;gap:.75rem;min-height:40vh}.upload-progress-card{display:grid;gap:.55rem;margin:.15rem 0 .55rem;padding:.65rem .75rem;border:1px solid rgba(31,138,126,.28);border-radius:12px;background:#d7f0eb59}.upload-progress-file{font-size:.8rem;word-break:break-all}.progress-row{display:grid;gap:.22rem}.progress-row-head{display:flex;justify-content:space-between;gap:.5rem;font-size:.76rem;font-weight:650}.progress-row-head strong{font-variant-numeric:tabular-nums;color:var(--jade-deep)}.progress-track{height:.48rem;border-radius:99px;background:#0b1f2a1a;overflow:hidden}.progress-fill{height:100%;width:0;border-radius:inherit;background:linear-gradient(90deg,#1f8a7e,#3ecfb8);transition:width .18s ease}.progress-track.is-wait .progress-fill{width:40%;animation:progress-slide 1.1s ease-in-out infinite}.progress-row.is-done .progress-fill{background:#0f766e}.progress-caption{margin:0;font-size:.72rem;color:var(--ink-soft);line-height:1.35}@keyframes progress-slide{0%{transform:translate(-120%)}to{transform:translate(280%)}}.spinner{width:28px;height:28px;border-radius:50%;border:2.5px solid rgba(255,255,255,.2);border-top-color:#9fe0d5;animation:spin .8s linear infinite}@keyframes fade-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes soft-pulse{0%,to{box-shadow:0 10px 28px #1f8a7e47}50%{box-shadow:0 12px 34px #1f8a7e7a}}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 960px){.panel,.generate-form,.composer-one,.composer-fields,.composer-run,.upload-row.template-upload,.class-create-form,.subject-add-form,.credits-stats,.inline-form,.class-add-form{grid-template-columns:1fr}.data-table-head:not(.generations-table-head):not(.data-sources-table-head),.subject-table-head{display:none}.data-table-row:not(.generations-table-row):not(.data-sources-table-row),.subject-table-row,.class-table-row{grid-template-columns:1fr;gap:.45rem}.knowledge-map-layout{grid-template-columns:1fr;min-height:min(50vh,480px)}.knowledge-map-col{max-height:min(42vh,400px)}.knowledge-map-col .knowledge-map-list,.knowledge-map-col.is-lessons{min-height:0}.knowledge-map-nav{grid-auto-flow:row;grid-auto-columns:unset}.req-tools,.req-preview-bar,.req-workspace{grid-template-columns:1fr}.req-template-view,.req-editor{position:static}.req-editor-float{position:fixed;top:auto;right:.75rem;bottom:.75rem;left:.75rem;width:auto;max-height:55vh}.req-lesson-nav{min-width:0;max-width:14rem}}@media (max-width: 1100px){.auth-shell{grid-template-columns:1fr;min-height:100dvh}.auth-visual{min-height:auto}}@media (max-width: 640px){input,select,textarea{font-size:16px}.topbar{flex-direction:row;align-items:center;gap:.5rem;padding:max(.55rem,env(safe-area-inset-top,0px)) .75rem .35rem}.topbar .brand{font-size:1.12rem}.brand-row{gap:.4rem;min-width:0}.topbar .brand-mark{width:26px;height:26px}.topbar button.ghost,.account-trigger,.topbar-actions{align-self:center}.topbar-actions{width:auto;margin-left:auto;flex-shrink:0}.account-trigger{max-width:min(14.5rem,52vw);padding:.28rem .5rem .28rem .32rem}.account-trigger-copy{min-width:0}.account-trigger-copy strong,.account-trigger-copy em{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-dropdown{right:0;width:min(280px,calc(100vw - 1rem))}.modal-backdrop{padding:max(.5rem,env(safe-area-inset-top,0px)) max(.5rem,env(safe-area-inset-right,0px)) max(.5rem,env(safe-area-inset-bottom,0px)) max(.5rem,env(safe-area-inset-left,0px))}.modal-sheet,.account-sheet,.credits-modal,.admin-sheet,.setup-sheet,.setup-sheet.is-schedule,.generations-sheet,.data-sources-sheet{width:100%;max-height:calc(100dvh - 1rem);border-radius:14px;padding:.85rem .8rem .95rem}.modal-foot{flex-wrap:wrap;position:sticky;bottom:0;background:#f7fffd;padding-bottom:.15rem}.credits-stats{grid-template-columns:1fr}.build-boost .btn-build-boost{width:100%;justify-content:center}.admin-stats{grid-template-columns:1fr 1fr}.admin-form-grid{grid-template-columns:1fr}.transfer-card dl>div{grid-template-columns:1fr;gap:.12rem}.auth-shell{padding:.55rem;gap:.65rem}.auth-visual{display:none}.auth-panel{padding:1.15rem 1rem 1.35rem;border-radius:18px;min-height:calc(100dvh - 1.1rem);justify-content:flex-start}.auth-panel h1{font-size:1.4rem}.auth-form{gap:.75rem;margin:1rem 0 .75rem}button.auth-google{margin-top:.85rem}.generate-form,.file-grid,.file-grid.subject-docs,.admin-table-head,.admin-table-row{grid-template-columns:1fr}.admin-row-actions{justify-content:flex-start}.class-row{flex-direction:column;align-items:stretch}.workspace{padding-inline:.65rem;padding-bottom:max(1rem,env(safe-area-inset-bottom,0px))}.workspace-nav{padding-inline:0}button.workspace-tab{flex:1 1 auto;justify-content:center}.workspace-heading h1{font-size:1.12rem}.panel{padding:.5rem .55rem;border-radius:10px}.req-setup-btns{width:100%}.req-setup-btns .btn-compact{flex:1 1 calc(50% - .3rem);justify-content:flex-start}.req-preview-row>.filter-select,.req-lesson-nav,.req-lesson-select{width:100%;max-width:none;flex:1 1 100%}.req-preview-actions{width:100%}.req-preview-actions .btn-compact,.req-preview-actions .btn-compact-primary,.req-preview-actions .btn-build-ga{flex:1 1 auto}.filter-select{min-width:0;max-width:none;width:100%}.viewing-banner{margin-inline:.65rem;flex-wrap:wrap}.schedule-class-action-controls{flex-direction:column;align-items:stretch}.schedule-apply-btn{width:100%}.schedule-template-cards{grid-template-columns:1fr}}@media (max-width: 420px){.topbar .brand{font-size:.98rem}.account-trigger-copy em,.lang-code{display:none}.lang-trigger{padding:.32rem .4rem}.account-trigger{max-width:min(9.5rem,46vw)}}.schedule-guide{padding:.75rem .85rem;border-radius:12px;border:1px solid rgba(20,90,82,.18);background:linear-gradient(135deg,#e8f8f4f2,#ffffffe0)}.schedule-guide-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.55rem}.schedule-guide-head strong{font-size:.92rem}.schedule-guide-dismiss{font-size:.78rem;padding:.15rem .45rem}.schedule-guide-steps{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.5rem}.schedule-guide-steps li{display:flex;gap:.55rem;align-items:flex-start;font-size:.84rem;color:var(--ink-soft);line-height:1.45}.schedule-guide-steps em{font-style:normal;font-weight:600;color:var(--jade-deep)}.schedule-guide-n{flex-shrink:0;width:1.35rem;height:1.35rem;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:700;background:var(--jade-deep);color:#fff}.schedule-templates-section{padding:.75rem .85rem;border:1px solid var(--line);border-radius:12px;background:#ffffff9e}.schedule-templates-head h4{margin:0;font-size:.95rem}.schedule-templates-head p{margin:.2rem 0 0;font-size:.8rem;color:var(--ink-mute)}.schedule-templates-subject{margin-top:.75rem}.schedule-templates-subject-name{display:block;font-size:.82rem;font-weight:700;color:var(--jade-deep);margin-bottom:.45rem}.schedule-template-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,220px),1fr));gap:.5rem}.schedule-template-card{display:flex;flex-direction:column;justify-content:space-between;gap:.55rem;padding:.6rem .7rem;border-radius:10px;border:1px solid rgba(20,90,82,.14);background:#ffffffeb;box-shadow:0 1px #081e1a0a}.schedule-template-card-main{display:flex;flex-direction:column;gap:.15rem;min-width:0}.schedule-template-card-main strong{font-size:.88rem}.schedule-template-card-main>span{font-size:.78rem;color:var(--ink-mute)}.schedule-template-dates{color:var(--jade-deep)!important;font-weight:600}.schedule-template-source{font-size:.72rem!important;opacity:.85}.schedule-template-card-actions{display:flex;gap:.35rem}.schedule-class-list{display:flex;flex-direction:column;gap:.65rem}.schedule-class-card{border:1px solid var(--line);border-radius:12px;background:#ffffffd1;padding:.7rem .8rem;display:flex;flex-direction:column;gap:.55rem}.schedule-class-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.65rem}.schedule-class-card-title{display:flex;flex-direction:column;gap:.12rem;min-width:0}.schedule-class-card-title strong{font-size:.95rem}.schedule-class-badges{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .55rem}.schedule-class-meta,.schedule-class-active{font-size:.78rem;color:var(--ink-mute)}.schedule-class-active strong{color:var(--jade-deep)}.schedule-class-action{padding:.6rem .7rem;border-radius:10px;border:1px dashed rgba(90,115,109,.35);background:#f8fcfbb3}.schedule-class-action.is-primary{border-style:solid;border-color:#145a5238;background:linear-gradient(180deg,#e8f8f48c,#ffffff80)}.schedule-class-action-label h5{margin:0;font-size:.86rem}.schedule-class-action-label p{margin:.2rem 0 0;font-size:.78rem;color:var(--ink-mute);line-height:1.4}.schedule-class-action-tag{display:inline-block;margin-bottom:.25rem;padding:.08rem .45rem;border-radius:999px;font-size:.68rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;background:var(--jade-deep);color:#fff}.schedule-class-action-controls{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem;margin-top:.55rem}.schedule-class-action-controls.is-upload{align-items:center}.schedule-field{display:flex;flex-direction:column;gap:.2rem;flex:1 1 200px;min-width:min(100%,200px)}.schedule-field.is-inline{flex:1 1 180px}.schedule-field>span{font-size:.72rem;font-weight:600;color:var(--ink-mute);text-transform:uppercase;letter-spacing:.03em}.schedule-field select{width:100%;padding:.38rem .5rem;border-radius:8px;border:1px solid var(--line);background:#fff;font-size:.82rem}.schedule-apply-btn{flex-shrink:0;min-height:2.05rem}.schedule-versions-block,.class-version-cell{display:none}.schedule-version-sheet{width:min(1180px,100%);max-height:min(94vh,1100px);display:flex;flex-direction:column;overflow:hidden}.schedule-version-head{flex-shrink:0}.schedule-version-tools{display:flex;flex-wrap:wrap;gap:.65rem 1rem;align-items:flex-end;margin-bottom:.65rem;flex-shrink:0}.schedule-version-label-field{display:flex;flex-direction:column;gap:.2rem;min-width:min(220px,100%);font-size:.78rem;color:var(--ink-mute)}.schedule-version-label-field input{padding:.35rem .5rem;border-radius:6px;border:1px solid var(--line)}.schedule-version-shift{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;font-size:.78rem;color:var(--ink-mute)}.schedule-version-shift input[type=number]{width:4.2rem;padding:.28rem .4rem;border-radius:6px;border:1px solid var(--line)}.schedule-version-actions{display:flex;flex-wrap:wrap;gap:.35rem;margin-left:auto}.schedule-version-table-wrap{flex:1;min-height:0;overflow:auto;border:1px solid var(--line);border-radius:8px}.schedule-version-table-head,.schedule-version-table-row{display:grid;grid-template-columns:36px minmax(140px,1.4fr) 36px 36px 36px 108px 72px 72px 72px 96px 96px;gap:.35rem;align-items:center;padding:.35rem .45rem;font-size:.78rem}.schedule-version-table-head{position:sticky;top:0;z-index:1;background:#f5faf8fa;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--ink-mute);border-bottom:1px solid var(--line)}.schedule-version-table-row{border-bottom:1px solid rgba(20,90,82,.08)}.schedule-version-table-row input{width:100%;min-width:0;padding:.22rem .35rem;border-radius:5px;border:1px solid var(--line);font-size:.78rem}.schedule-lesson-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.schedule-print-backdrop{background:#081e1a59}.schedule-print-root{width:min(1100px,100%);max-height:min(94vh,1100px);overflow:auto;background:#fff;border-radius:12px;padding:1rem;box-shadow:0 24px 60px #081e1a47}.schedule-print-toolbar{display:flex;justify-content:flex-end;gap:.5rem;margin-bottom:.75rem}.schedule-print-sheet{color:#111}.schedule-print-head h1{margin:0 0 .35rem;font-size:1.25rem}.schedule-print-subject{margin:0;font-size:1.05rem;font-weight:600}.schedule-print-meta{margin:.15rem 0 0;font-size:.9rem;color:#444}.schedule-print-table{width:100%;border-collapse:collapse;margin-top:.85rem;font-size:.82rem}.schedule-print-table th,.schedule-print-table td{border:1px solid #333;padding:.28rem .35rem;vertical-align:top;text-align:left}.schedule-print-table th{background:#f0f0f0;font-weight:700}@media print{body *{visibility:hidden}.schedule-print-root,.schedule-print-root *{visibility:visible}.schedule-print-root{position:absolute;left:0;top:0;width:100%;max-height:none;overflow:visible;box-shadow:none;border-radius:0;padding:0}.no-print{display:none!important}.schedule-print-table{font-size:9pt}}
