.welcome[data-v-63b79abd]{display:flex;align-items:center;justify-content:center;flex:1;padding:2rem}.welcome-card[data-v-63b79abd]{background:#fff;border-radius:12px;padding:2.5rem 3rem;box-shadow:0 4px 24px #0000001a;max-width:480px;width:100%;text-align:center}h1[data-v-63b79abd]{font-size:1.75rem;color:#4a90d9;margin-bottom:.5rem}.subtitle[data-v-63b79abd]{color:#666;margin-bottom:1.25rem;line-height:1.5}.dev-warning[data-v-63b79abd]{margin-bottom:2rem;padding:.6rem .9rem;font-size:.85rem;font-weight:600;color:#7a4a00;background:#ffd76a;border:1px solid #e0a800;border-radius:6px;line-height:1.4}.lang-selector[data-v-63b79abd]{display:flex;align-items:center;gap:.5rem;justify-content:center;margin-bottom:2rem;font-size:.9rem;color:#555}.flag-icon[data-v-63b79abd]{width:1.1em;height:auto;vertical-align:middle;margin-right:.3em}.lang-selector button[data-v-63b79abd]{display:inline-flex;align-items:center;padding:.25rem .75rem;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer;color:#555;transition:background .15s}.lang-selector button.active[data-v-63b79abd]{background:#4a90d9;color:#fff;border-color:#4a90d9}.actions[data-v-63b79abd]{display:flex;flex-direction:column;gap:.75rem}.btn-primary[data-v-63b79abd],.btn-secondary[data-v-63b79abd],.btn-ghost[data-v-63b79abd]{padding:.75rem 1.5rem;border-radius:6px;font-size:1rem;cursor:pointer;border:none;transition:opacity .15s}.btn-primary[data-v-63b79abd]{background:#4a90d9;color:#fff}.btn-primary[data-v-63b79abd]:disabled{opacity:.45;cursor:not-allowed}.btn-secondary[data-v-63b79abd]{background:#f0f0f0;color:#333}.btn-ghost[data-v-63b79abd]{background:transparent;color:#666;border:1px solid #ccc}.new-ws-form[data-v-63b79abd]{display:flex;flex-direction:column;gap:.75rem;text-align:left}.new-ws-form label[data-v-63b79abd]{font-size:.875rem;font-weight:600;color:#444}.new-ws-form input[data-v-63b79abd]{padding:.6rem .75rem;border:1px solid #ccc;border-radius:6px;font-size:1rem}.new-ws-form input[data-v-63b79abd]:focus{outline:none;border-color:#4a90d9}.form-actions[data-v-63b79abd]{display:flex;gap:.5rem}.error[data-v-63b79abd]{color:#c0392b;font-size:.85rem;margin-top:.5rem;white-space:pre-wrap;text-align:left}.color-swatch[data-v-cc963753]{display:inline-flex;align-items:center;cursor:pointer;vertical-align:middle}.is-readonly[data-v-cc963753]{cursor:default}.swatch-preview[data-v-cc963753]{display:inline-block;width:1.4rem;height:1.4rem;border-radius:4px;border:1px solid rgba(0,0,0,.2)}.color-swatch:not(.is-readonly) .swatch-preview[data-v-cc963753]{box-shadow:0 0 0 2px #00000014;transition:box-shadow .15s}.color-swatch:not(.is-readonly):hover .swatch-preview[data-v-cc963753]{box-shadow:0 0 0 2px #4a90d980}.swatch-input[data-v-cc963753]{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.editable-list[data-v-753c73d4]{width:100%}table[data-v-753c73d4]{width:100%;border-collapse:collapse;font-size:.95rem}th[data-v-753c73d4]{text-align:left;padding:.4rem .6rem;border-bottom:2px solid #dde;color:#555;font-weight:600;white-space:nowrap}td[data-v-753c73d4]{padding:.35rem .6rem;border-bottom:1px solid #eef;vertical-align:middle}tr:last-child td[data-v-753c73d4]{border-bottom:none}tr:hover td[data-v-753c73d4]{background:#f8f8ff}.row-adding td[data-v-753c73d4]{background:#f0f4ff}.col-reorder[data-v-753c73d4]{width:3.2rem;white-space:nowrap}.col-actions[data-v-753c73d4]{width:4.5rem;white-space:nowrap;text-align:right}input[type=text][data-v-753c73d4],select[data-v-753c73d4]{width:100%;padding:.25rem .4rem;border:1px solid #ccd;border-radius:4px;font-size:.9rem;box-sizing:border-box}input[type=text][data-v-753c73d4]:focus,select[data-v-753c73d4]:focus{outline:none;border-color:#4a90d9;box-shadow:0 0 0 2px #4a90d933}.btn-icon[data-v-753c73d4]{background:none;border:none;cursor:pointer;padding:.2rem .3rem;border-radius:3px;font-size:.9rem;color:#666;line-height:1;transition:background .1s,color .1s}.btn-icon[data-v-753c73d4]:hover{background:#eef;color:#333}.btn-icon[data-v-753c73d4]:disabled{color:#ccc;cursor:default;background:none}.btn-confirm[data-v-753c73d4]{color:#2a7a2a}.btn-confirm[data-v-753c73d4]:hover{background:#e8f5e8;color:#1a5a1a}.btn-cancel[data-v-753c73d4]{color:#888}.btn-cancel[data-v-753c73d4]:hover{background:#f0f0f0;color:#444}.btn-danger[data-v-753c73d4]{color:#b94040}.btn-danger[data-v-753c73d4]:not(:disabled):hover{background:#fdeaea;color:#8a1a1a}.btn-add[data-v-753c73d4]{margin-top:.6rem;padding:.35rem .8rem;background:#4a90d9;color:#fff;border:none;border-radius:5px;cursor:pointer;font-size:.9rem;transition:background .15s}.btn-add[data-v-753c73d4]:hover{background:#357abd}.overlay[data-v-5d46e2b9]{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:200}.dialog[data-v-5d46e2b9]{background:#fff;border-radius:10px;padding:1.5rem 2rem;max-width:540px;width:100%;box-shadow:0 8px 32px #0003}.dialog h3[data-v-5d46e2b9]{font-size:1.05rem;margin-bottom:.6rem;color:#333}.intro[data-v-5d46e2b9]{font-size:.9rem;color:#555;line-height:1.5;margin-bottom:1rem}.pick-row[data-v-5d46e2b9]{display:flex;gap:.6rem;align-items:center;margin-bottom:1.25rem;flex-wrap:wrap}.pick-row select[data-v-5d46e2b9]{flex:1;min-width:200px;padding:.4rem .5rem;border:1px solid #ccd;border-radius:6px;font-size:.875rem;background:#fff}.os-tabs[data-v-5d46e2b9]{display:flex;gap:.25rem;border-bottom:1px solid #e5e5ef;margin-bottom:.75rem}.os-tab[data-v-5d46e2b9]{border:none;background:transparent;padding:.4rem .8rem;cursor:pointer;font-size:.85rem;color:#777;border-bottom:2px solid transparent}.os-tab.active[data-v-5d46e2b9]{color:#4a90d9;border-bottom-color:#4a90d9;font-weight:600}.os-tab[data-v-5d46e2b9]:hover{color:#333}.steps[data-v-5d46e2b9]{margin:0 0 1.25rem 1.1rem;padding:0;font-size:.88rem;color:#444;line-height:1.55}.steps li[data-v-5d46e2b9]{margin-bottom:.25rem}.dialog-actions[data-v-5d46e2b9]{display:flex;justify-content:flex-end}.btn-primary[data-v-5d46e2b9]{padding:.4rem .85rem;background:#4a90d9;color:#fff;border:none;border-radius:5px;font-size:.85rem;cursor:pointer;white-space:nowrap}.btn-primary[data-v-5d46e2b9]:disabled{opacity:.55;cursor:not-allowed}.btn-ghost[data-v-5d46e2b9]{padding:.4rem .85rem;background:transparent;border:1px solid #ccc;border-radius:5px;font-size:.85rem;color:#555;cursor:pointer}.btn-ghost[data-v-5d46e2b9]:hover{border-color:#aaa;color:#333}.font-preview[data-v-5fd659fb]{flex:1;min-width:240px;margin:0;display:flex;flex-direction:column}.preview-frame[data-v-5fd659fb]{width:100%;height:6.25rem;border:1px solid #e0e4ee;border-radius:8px;background:#fff}.preview-msg[data-v-5fd659fb]{height:6.25rem;display:flex;align-items:center;justify-content:center;border:1px dashed #d8dce6;border-radius:8px;color:#999;font-size:.85rem;font-style:italic}figcaption[data-v-5fd659fb]{margin-top:.35rem;font-size:.75rem;color:#999;text-align:center}.fonts-settings[data-v-6f55783a]{background:#fff;border-radius:8px;padding:1.25rem 1.5rem;margin-bottom:1rem;box-shadow:0 1px 4px #0000000f}.header[data-v-6f55783a]{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.header h3[data-v-6f55783a]{margin-bottom:0}.install-btn[data-v-6f55783a]{flex-shrink:0;width:2rem;height:2rem;padding:.25rem;border:1px solid #ccd;border-radius:6px;background:#fff;color:#4a90d9;cursor:pointer;line-height:0}.install-btn[data-v-6f55783a]:hover{background:#f3f7fc;border-color:#4a90d9}.install-btn svg[data-v-6f55783a]{width:100%;height:100%}h3[data-v-6f55783a]{font-size:1rem;font-weight:600;color:#444;margin-bottom:.75rem}h4[data-v-6f55783a]{font-size:.9rem;font-weight:600;color:#555;margin-bottom:.6rem}.hint[data-v-6f55783a]{font-size:.88rem;color:#999;font-style:italic}.legal-note[data-v-6f55783a]{display:flex;align-items:center;gap:.5rem;font-size:.8rem;color:#777;background:#fbf6e9;border:1px solid #ecd9a6;border-radius:6px;padding:.5rem .7rem;margin-top:.75rem;margin-bottom:.75rem;line-height:1.4}.legal-text[data-v-6f55783a]{flex:1}.info-btn[data-v-6f55783a]{flex-shrink:0;width:1.25rem;height:1.25rem;border:none;border-radius:50%;background:#4a90d9;color:#fff;font-size:.78rem;font-weight:700;font-style:italic;line-height:1;cursor:pointer;font-family:Georgia,serif}.info-btn[data-v-6f55783a]:hover{background:#357abd}.overlay[data-v-6f55783a]{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:200}.dialog[data-v-6f55783a]{background:#fff;border-radius:10px;padding:1.5rem 2rem;max-width:480px;width:100%;box-shadow:0 8px 32px #0003}.dialog h3[data-v-6f55783a]{font-size:1.05rem;margin-bottom:.6rem;color:#333}.dialog p[data-v-6f55783a]{font-size:.9rem;color:#555;margin-bottom:1.25rem;line-height:1.5}.dialog-actions[data-v-6f55783a]{display:flex;justify-content:flex-end}.warning[data-v-6f55783a]{font-size:.8rem;color:#8a5a00;background:#fff4e0;border:1px solid #f0c977;border-radius:6px;padding:.5rem .7rem;margin-top:.75rem;line-height:1.4}.upload-row[data-v-6f55783a]{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.accepted[data-v-6f55783a]{font-size:.78rem;color:#999}.hidden-input[data-v-6f55783a]{display:none}.block[data-v-6f55783a]{margin-top:1.25rem}.font-list[data-v-6f55783a]{list-style:none;display:flex;flex-direction:column;gap:.35rem}.font-list li[data-v-6f55783a]{display:flex;align-items:center;gap:.6rem;padding:.4rem .6rem;background:#fafafa;border:1px solid #eef;border-radius:6px}.family[data-v-6f55783a]{flex:1;font-weight:600;color:#333}.format[data-v-6f55783a]{font-size:.72rem;text-transform:uppercase;color:#888;background:#ececec;border-radius:4px;padding:.1rem .4rem}.active-layout[data-v-6f55783a]{display:flex;align-items:flex-start;gap:1.5rem;flex-wrap:wrap}.active-main[data-v-6f55783a],.roles[data-v-6f55783a]{flex:0 0 auto}.role-row[data-v-6f55783a]{display:flex;align-items:center;justify-content:flex-start;gap:.75rem;margin-bottom:.5rem}.role-row label[data-v-6f55783a]{font-size:.9rem;color:#555;display:flex;flex-direction:column;width:7.5rem;flex-shrink:0}.role-row label small[data-v-6f55783a]{font-size:.72rem;color:#999;font-weight:400}.role-row select[data-v-6f55783a]{min-width:200px;padding:.4rem .5rem;border:1px solid #ccd;border-radius:6px;font-size:.875rem;background:#fff}.role-row select[data-v-6f55783a]:focus{outline:none;border-color:#4a90d9;box-shadow:0 0 0 2px #4a90d933}.btn-add-small[data-v-6f55783a]{padding:.4rem .85rem;background:#4a90d9;color:#fff;border:none;border-radius:5px;font-size:.85rem;cursor:pointer}.btn-add-small[data-v-6f55783a]:disabled{opacity:.55;cursor:not-allowed}.btn-remove[data-v-6f55783a]{border:none;background:transparent;color:#c0392b;cursor:pointer;font-size:.8rem}.btn-remove[data-v-6f55783a]:hover{text-decoration:underline}.error[data-v-6f55783a]{color:#c0392b;font-size:.85rem;margin-top:.5rem;white-space:pre-wrap}.ws-settings[data-v-ae274910]{max-width:720px}.description[data-v-ae274910]{font-size:.95rem;color:#555;font-style:italic;margin:0 0 1.5rem}section[data-v-ae274910]{background:#fff;border-radius:8px;padding:1.25rem 1.5rem;margin-bottom:1rem;box-shadow:0 1px 4px #0000000f}h3[data-v-ae274910]{font-size:1rem;font-weight:600;color:#444;margin-bottom:.75rem}h4[data-v-ae274910]{font-size:.9rem;font-weight:600;color:#555;margin-bottom:.6rem}.hint[data-v-ae274910]{font-size:.88rem;color:#999;font-style:italic}.scales-grid[data-v-ae274910]{display:flex;flex-wrap:wrap;gap:1rem;align-items:flex-start}.scale-block[data-v-ae274910]{flex:1 1 180px;min-width:180px;max-width:100%;border:1px solid #eef;border-radius:6px;padding:.75rem;background:#fafafa}.notation-block[data-v-ae274910]{margin-bottom:1.25rem;padding-bottom:1.25rem;border-bottom:1px solid #eef}.notation-block[data-v-ae274910]:last-child{margin-bottom:0;padding-bottom:0;border-bottom:none}.num-row[data-v-ae274910]{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:.6rem}.num-row label[data-v-ae274910]{font-size:.88rem;color:#666}.field-row[data-v-ae274910]{display:flex;align-items:center;gap:.6rem}.field-row label[data-v-ae274910]{width:13rem;font-size:.9rem;color:#555}.num-input[data-v-ae274910]{width:5rem;padding:.25rem .4rem;border:1px solid #ccd;border-radius:4px;font-size:.9rem;text-align:right}.num-input[data-v-ae274910]:focus,.precision-select[data-v-ae274910]:focus{outline:none;border-color:#4a90d9;box-shadow:0 0 0 2px #4a90d933}.sep[data-v-ae274910]{color:#bbb;font-size:1rem;padding:0 .1rem}.precision-select[data-v-ae274910]{padding:.25rem .4rem;border:1px solid #ccd;border-radius:4px;font-size:.9rem}.overlay-backdrop[data-v-fec8dece]{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:1000;display:flex;align-items:center;justify-content:center}.overlay-dialog[data-v-fec8dece]{background:#fff;border-radius:10px;box-shadow:0 8px 32px #00000040;display:flex;flex-direction:column;max-height:90vh;overflow:hidden}.overlay-header[data-v-fec8dece]{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid #eee;font-weight:600;font-size:1rem}.btn-close[data-v-fec8dece]{background:none;border:none;font-size:1rem;cursor:pointer;color:#666;padding:.2rem .4rem;border-radius:4px}.btn-close[data-v-fec8dece]:hover{background:#f0f0f0}.overlay-body[data-v-fec8dece]{display:flex;gap:1.5rem;padding:1rem 1.25rem 1.25rem;overflow-y:auto}.left-col[data-v-fec8dece]{display:flex;flex-direction:column;gap:1rem;width:260px;flex-shrink:0}.filters-area[data-v-fec8dece]{display:flex;flex-direction:column;gap:.5rem}.level-selector[data-v-fec8dece]{display:flex;flex-wrap:wrap;gap:.4rem}.level-radio[data-v-fec8dece]{display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .75rem;border:1px solid #ccc;border-radius:6px;background:#f5f5f5;color:#444;cursor:pointer;font-size:.875rem;transition:background .15s,color .15s}.level-radio input[type=radio][data-v-fec8dece]{accent-color:#4a90d9}.level-radio.active[data-v-fec8dece]{background:#e8f0fb;border-color:#4a90d9;color:#2a6ab0;font-weight:600}.class-filters[data-v-fec8dece]{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem}.filter-sep[data-v-fec8dece]{display:inline-block;width:1px;height:1.5rem;background:#ccc;margin:0 .25rem}.filter-btn[data-v-fec8dece]{padding:.3rem .75rem;border:1px solid #ccc;border-radius:6px;background:#f5f5f5;color:#444;cursor:pointer;font-size:.875rem;transition:background .15s,color .15s}.filter-btn[data-v-fec8dece]:hover{background:#e8e8e8}.filter-btn.active[data-v-fec8dece]{background:#4a90d9;color:#fff;border-color:#3a7bc8}.filter-btn.meta-btn[data-v-fec8dece]{background:#eee;font-weight:600}.filter-btn.meta-btn[data-v-fec8dece]:hover{background:#ddd}.print-params[data-v-fec8dece]{display:flex;flex-direction:column;gap:.5rem}.print-params label[data-v-fec8dece]{font-size:.8rem;font-weight:600;color:#555;margin-top:.25rem}.print-params input[type=text][data-v-fec8dece]{padding:.35rem .5rem;border:1px solid #ccc;border-radius:5px;font-size:.875rem;width:100%}.btn-group[data-v-fec8dece]{display:flex;gap:.3rem}.btn-group button[data-v-fec8dece]{flex:1;padding:.3rem 0;border:1px solid #ccc;border-radius:5px;background:#f5f5f5;font-size:.8rem;cursor:pointer}.btn-group button[data-v-fec8dece]:hover{background:#e8e8e8}.btn-group button.active[data-v-fec8dece]{background:#4a90d9;color:#fff;border-color:#3a7bc8}.btn-print[data-v-fec8dece]{margin-top:1rem;padding:.5rem;background:#4a90d9;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:.9rem;font-weight:600}.btn-print[data-v-fec8dece]:hover{background:#3a7bc8}.preview-area[data-v-fec8dece]{display:flex;flex-direction:column;gap:.4rem}.preview-label[data-v-fec8dece]{font-size:.8rem;font-weight:600;color:#777;margin:0}.preview-clip[data-v-fec8dece]{overflow:hidden;border:1px solid #ddd;border-radius:4px;background:#fff}.overlay-backdrop[data-v-7d034f3c]{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:1000;display:flex;align-items:center;justify-content:center}.overlay-dialog[data-v-7d034f3c]{background:#fff;border-radius:10px;box-shadow:0 8px 32px #00000040;display:flex;flex-direction:column;max-height:90vh;width:min(640px,95vw);overflow:hidden}.overlay-header[data-v-7d034f3c]{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid #eee;font-weight:600;font-size:1rem}.btn-close[data-v-7d034f3c]{background:none;border:none;font-size:1rem;cursor:pointer;color:#666;padding:.2rem .4rem;border-radius:4px}.btn-close[data-v-7d034f3c]:hover{background:#f0f0f0}.overlay-body[data-v-7d034f3c]{padding:1rem 1.25rem 1.25rem;overflow-y:auto}.hint[data-v-7d034f3c]{font-size:.88rem;color:#999;font-style:italic}.classes-panel[data-v-f8460009]{max-width:1200px}.panel-header[data-v-f8460009]{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}.panel-header .description[data-v-f8460009]{flex:1;font-size:.95rem;color:#555;font-style:italic;margin:0}.header-actions[data-v-f8460009]{display:flex;gap:.5rem;flex-wrap:wrap}.header-btn[data-v-f8460009]{padding:.45rem .9rem;background:#f0f0f0;border:1px solid #ddd;border-radius:6px;cursor:pointer;font-size:.9rem;color:#333;transition:background .15s,border-color .15s}.header-btn[data-v-f8460009]:hover:not(:disabled){background:#e0e0e0}.header-btn[data-v-f8460009]:disabled{opacity:.5;cursor:not-allowed}.header-btn-primary[data-v-f8460009]{background:#4a90d9;color:#fff;border-color:#3a7bc8}.header-btn-primary[data-v-f8460009]:hover:not(:disabled){background:#3a7bc8}.no-classes-hint[data-v-f8460009]{color:#999;font-style:italic;padding:1rem;background:#fff;border-radius:8px;box-shadow:0 1px 4px #0000000f}.class-tabs[data-v-f8460009]{display:flex;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap}.class-tabs button[data-v-f8460009]{padding:.5rem 1rem;background:#f0f0f0;border:1px solid #ddd;border-radius:6px;cursor:pointer;font-size:.95rem;transition:all .2s}.class-tabs button[data-v-f8460009]:hover{background:#e0e0e0}.class-tabs button.active[data-v-f8460009]{background:#4a90d9;color:#fff;border-color:#4a90d9}.toolbar[data-v-f8460009]{display:flex;gap:.5rem;margin-bottom:1rem;padding:.75rem;background:#fff;border-radius:8px;box-shadow:0 1px 4px #0000000f;flex-wrap:wrap}.toolbar-btn[data-v-f8460009]{padding:.5rem .75rem;background:#f0f0f0;border:1px solid #ddd;border-radius:6px;cursor:pointer;font-size:1rem;transition:all .2s}.toolbar-btn[data-v-f8460009]:hover:not(:disabled){background:#e0e0e0}.toolbar-btn[data-v-f8460009]:disabled{opacity:.5;cursor:not-allowed}.separator[data-v-f8460009]{width:1px;background:#ddd;margin:0 .25rem}.gradebook-wrap[data-v-f8460009]{background:#fff;border-radius:8px;padding:1rem;margin-bottom:1rem;box-shadow:0 1px 4px #0000000f;overflow-x:auto}.empty[data-v-f8460009]{color:#999;font-style:italic}.gradebook[data-v-f8460009]{width:auto;border-collapse:collapse;font-size:.9rem}.gradebook thead[data-v-f8460009]{background:#f8f8f8;position:sticky;top:0;z-index:10}.gradebook th[data-v-f8460009]{padding:.5rem .4rem;border-bottom:2px solid #dde;text-align:left;font-weight:600;color:#555;white-space:nowrap;position:sticky;top:0;background:#f8f8f8}th.col-belt[data-v-f8460009],th.col-initial-belt[data-v-f8460009],th.col-included[data-v-f8460009],th.col-eval[data-v-f8460009],td.col-belt[data-v-f8460009],td.col-initial-belt[data-v-f8460009],td.col-included[data-v-f8460009]{text-align:center}.col-checkbox[data-v-f8460009],.col-name[data-v-f8460009]{position:sticky;left:0;background:inherit;z-index:11}.col-checkbox[data-v-f8460009]{width:2.5rem}.col-name[data-v-f8460009]{width:180px;left:2.5rem}.gradebook td[data-v-f8460009]{padding:.35rem .4rem;border-bottom:1px solid #eef;vertical-align:middle}.gradebook tbody tr:hover td[data-v-f8460009]{background:#f8f8ff}.gradebook tbody tr.excluded td[data-v-f8460009]{opacity:.5}.col-belt[data-v-f8460009]{width:100px}.col-initial-belt[data-v-f8460009],.col-included[data-v-f8460009]{width:120px}.col-eval[data-v-f8460009]{width:80px;padding:0}.eval-header[data-v-f8460009]{display:flex;align-items:center;justify-content:center;gap:.2rem;padding:.5rem .4rem}.eval-del-spacer[data-v-f8460009]{display:inline-block;width:1rem;flex-shrink:0;visibility:hidden}.btn-del-eval[data-v-f8460009]{width:1rem;flex-shrink:0;background:none;border:none;cursor:pointer;color:#b94040;font-size:.8rem;padding:0;line-height:1;text-align:center}.btn-del-eval[data-v-f8460009]:hover{color:#8a1a1a}.name-cell[data-v-f8460009]{cursor:text}.name-cell span[data-v-f8460009]{display:block;min-height:1.5rem;padding:.1rem 0}.name-input[data-v-f8460009]{width:100%;padding:.2rem .3rem;border:1px solid #4a90d9;border-radius:3px;font-size:.9rem;box-sizing:border-box}.grade-cell[data-v-f8460009]{text-align:center;cursor:text}.grade-cell span[data-v-f8460009]{display:block;min-height:1.5rem;padding:.25rem .1rem}.grade-invalid[data-v-f8460009]{font-weight:700;color:#c00}.grade-input[data-v-f8460009]{width:100%;padding:.25rem .2rem;border:1px solid #4a90d9;border-radius:3px;font-size:.9rem;text-align:center;box-sizing:border-box}.belt-badge[data-v-f8460009]{display:inline-block;padding:.2rem .4rem;border-radius:3px;color:#fff;font-size:.75rem;font-weight:700;text-shadow:0 1px 2px rgba(0,0,0,.3);min-width:2.5rem;text-align:center}.col-toggles[data-v-f8460009]{display:flex;gap:1.5rem;padding:.75rem 0}.col-toggles label[data-v-f8460009]{display:flex;align-items:center;gap:.5rem;font-size:.9rem;cursor:pointer}.col-toggles input[type=checkbox][data-v-f8460009]{cursor:pointer}.dialog-overlay[data-v-f8460009]{position:fixed;top:0;left:0;right:0;bottom:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000}.dialog-box[data-v-f8460009]{background:#fff;border-radius:8px;padding:2rem;max-width:500px;width:90%;box-shadow:0 4px 16px #00000026;max-height:90vh;overflow-y:auto}.dialog-content h3[data-v-f8460009]{margin:0 0 1rem;font-size:1.1rem;color:#333}.dialog-hint[data-v-f8460009]{color:#666;font-size:.9rem;margin-bottom:.75rem}.paste-textarea[data-v-f8460009]{width:100%;padding:.75rem;border:1px solid #ccd;border-radius:4px;font-family:monospace;font-size:.9rem;margin-bottom:1rem;box-sizing:border-box}.paste-list[data-v-f8460009]{list-style:none;padding:.75rem;background:#f8f8f8;border-radius:4px;margin:1rem 0;max-height:300px;overflow-y:auto}.paste-list li[data-v-f8460009]{padding:.3rem .5rem;border-bottom:1px solid #eee;font-size:.9rem}.paste-list li[data-v-f8460009]:last-child{border-bottom:none}.paste-grades-table[data-v-f8460009]{width:100%;margin:1rem 0;border-collapse:collapse;font-size:.9rem}.paste-grades-table tr[data-v-f8460009]{border-bottom:1px solid #eee}.paste-grades-table td[data-v-f8460009]{padding:.5rem}.paste-grades-table .grade-preview[data-v-f8460009]{text-align:center;font-weight:700}.form-group[data-v-f8460009]{margin-bottom:1rem}.form-group label[data-v-f8460009]{display:block;margin-bottom:.4rem;font-weight:600;color:#555;font-size:.9rem}.form-group input[type=text][data-v-f8460009],.form-group select[data-v-f8460009]{width:100%;padding:.5rem .75rem;border:1px solid #ccd;border-radius:4px;font-size:.9rem;box-sizing:border-box}.form-group input[type=text][data-v-f8460009]:focus,.form-group select[data-v-f8460009]:focus{outline:none;border-color:#4a90d9;box-shadow:0 0 0 2px #4a90d933}.dialog-actions[data-v-f8460009]{display:flex;gap:.75rem;justify-content:flex-end;margin-top:1.5rem}.btn-cancel[data-v-f8460009],.btn-confirm[data-v-f8460009],.btn-danger[data-v-f8460009]{padding:.5rem 1.25rem;border:none;border-radius:6px;font-size:.9rem;cursor:pointer;transition:all .2s}.btn-cancel[data-v-f8460009]{background:#f0f0f0;color:#333}.btn-cancel[data-v-f8460009]:hover{background:#e0e0e0}.btn-confirm[data-v-f8460009]{background:#4a90d9;color:#fff}.btn-confirm[data-v-f8460009]:hover{background:#357abd}.btn-danger[data-v-f8460009]{background:#c94545;color:#fff}.btn-danger[data-v-f8460009]:hover{background:#a83a3a}.error[data-v-f8460009]{color:#c00;font-weight:700;margin:.75rem 0}.delete-section-label[data-v-f8460009]{font-size:.9rem;margin:.75rem 0 .25rem}.delete-warning[data-v-f8460009]{color:#c94545;font-weight:600}.qspec-assistant[data-v-5b2de117]{display:flex;flex-direction:column;gap:.45rem;min-width:0;overflow:hidden}h4[data-v-5b2de117]{font-size:.8rem;color:#444;font-weight:600;margin:0}.empty[data-v-5b2de117]{font-size:.8rem;color:#999;font-style:italic;margin:0}.list[data-v-5b2de117]{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.25rem;overflow-y:auto;flex:1}.qspec-btn[data-v-5b2de117]{width:100%;text-align:left;background:#f5f5f5;border:1px solid #e0e0e0;border-radius:4px;padding:.3rem .5rem;cursor:pointer;font-size:.78rem;color:#333;transition:background .12s,border-color .12s}.qspec-btn code[data-v-5b2de117]{font-family:ui-monospace,monospace;font-size:.78rem;word-break:break-all}.qspec-btn[data-v-5b2de117]:hover{background:#eaf2ff;border-color:#b0cdf0;color:#2a6ab0}.editor-shell[data-v-b617d618]{display:flex;flex-direction:column;gap:.65rem;height:100%;min-height:400px}.editor-main[data-v-b617d618]{display:grid;grid-template-columns:1fr 260px;gap:.75rem;flex:1;min-height:0}@media(max-width:720px){.editor-main[data-v-b617d618]{grid-template-columns:1fr}}.cm-host[data-v-b617d618]{border:1px solid #4a90d9;border-radius:6px;min-height:280px;background:#fff;overflow:hidden;box-shadow:0 0 0 4px #4a90d929}.cm-host[data-v-b617d618] .cm-editor{height:100%;min-height:280px}.cm-host[data-v-b617d618] .cm-gutters{background:#eef4fb;border-right:1px solid #cfe0f5}.errors[data-v-b617d618]{background:#fdeaea;border:1px solid #f5b7b1;border-radius:6px;padding:.6rem .85rem;font-size:.85rem;color:#6b1f17;max-height:160px;overflow-y:auto}.errors-title[data-v-b617d618]{font-weight:600;margin-bottom:.3rem}.errors ul[data-v-b617d618]{padding-left:1.1rem;margin:0}.errors li[data-v-b617d618]{margin:.15rem 0}.ok-banner[data-v-b617d618]{background:#d4edda;color:#155724;border:1px solid #c3e6cb;border-radius:6px;padding:.45rem .75rem;font-size:.85rem}.warnings[data-v-b617d618]{background:#fdf5e2;border:1px solid #e8d08a;border-radius:6px;padding:.6rem .85rem;font-size:.85rem;color:#6b5314;max-height:160px;overflow-y:auto}.warnings-title[data-v-b617d618]{font-weight:600;margin-bottom:.3rem}.warnings ul[data-v-b617d618]{padding-left:1.1rem;margin:0}.warnings li[data-v-b617d618]{margin:.15rem 0}@keyframes banner-flash-b617d618{0%{filter:brightness(1.25)}to{filter:brightness(1)}}.flash[data-v-b617d618]{animation:banner-flash-b617d618 .28s ease-out}.actions[data-v-b617d618]{display:flex;gap:.5rem;justify-content:flex-end}.btn-primary[data-v-b617d618],.btn-secondary[data-v-b617d618],.btn-ghost[data-v-b617d618]{padding:.45rem 1rem;border-radius:6px;font-size:.85rem;cursor:pointer;border:1px solid transparent}.btn-primary[data-v-b617d618]{background:#4a90d9;color:#fff}.btn-primary[data-v-b617d618]:hover:not(:disabled){background:#357abd}.btn-primary[data-v-b617d618]:disabled{opacity:.55;cursor:not-allowed}.btn-secondary[data-v-b617d618]{background:#eef4fb;color:#2a6ab0;border-color:#b0cdf0}.btn-secondary[data-v-b617d618]:hover:not(:disabled){background:#d6e6f7}.btn-secondary[data-v-b617d618]:disabled{opacity:.55;cursor:not-allowed}.btn-ghost[data-v-b617d618]{background:transparent;border-color:#ccc;color:#555}.btn-ghost[data-v-b617d618]:hover{border-color:#aaa;color:#333}.preview-wrapper[data-v-d2d911e5]{display:flex;flex-direction:column;gap:.4rem;min-height:0}.cm-host[data-v-d2d911e5]{border:none;border-radius:0;background:transparent;overflow:hidden;max-height:60vh}.cm-host[data-v-d2d911e5] .cm-editor{max-height:60vh;background:transparent}.cm-host[data-v-d2d911e5] .cm-scroller{overflow:auto}.cm-host[data-v-d2d911e5] .cm-gutters{background:transparent;border-right:1px solid #e6e6e6;color:#b0b0b0}.cm-host[data-v-d2d911e5] .cm-content{color:#3d4450}.legend[data-v-d2d911e5]{font-size:.75rem;color:#6b1f17;margin:0;display:inline-flex;align-items:center;gap:.4rem}.legend-swatch[data-v-d2d911e5]{display:inline-block;width:.8rem;height:.8rem;background:#ffc0cb8c;border:1px solid rgba(192,57,43,.35);border-radius:2px}.overlay[data-v-812d9e40]{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:200}.dialog[data-v-812d9e40]{background:#fff;border-radius:10px;padding:1.5rem 2rem;max-width:480px;width:100%;box-shadow:0 8px 32px #0003}.dialog h3[data-v-812d9e40]{font-size:1.05rem;margin-bottom:.6rem;color:#333}.dialog p[data-v-812d9e40]{font-size:.9rem;color:#555;margin-bottom:1.25rem;line-height:1.5;white-space:pre-line}.actions[data-v-812d9e40]{display:flex;justify-content:flex-end;gap:.5rem}.btn-primary[data-v-812d9e40],.btn-danger[data-v-812d9e40],.btn-ghost[data-v-812d9e40]{padding:.5rem 1rem;border-radius:6px;font-size:.9rem;cursor:pointer;border:1px solid transparent}.btn-primary[data-v-812d9e40]{background:#4a90d9;color:#fff}.btn-primary[data-v-812d9e40]:hover{background:#357abd}.btn-danger[data-v-812d9e40]{background:#c0392b;color:#fff}.btn-danger[data-v-812d9e40]:hover{background:#a13225}.btn-ghost[data-v-812d9e40]{background:transparent;border-color:#ccc;color:#555}.btn-ghost[data-v-812d9e40]:hover{border-color:#aaa;color:#333}.font-delivery[data-v-744fce3e]{display:inline-flex;align-items:center;gap:.4rem;font-size:.85rem;color:#555}.fd-label[data-v-744fce3e]{font-weight:500;white-space:nowrap}.font-delivery select[data-v-744fce3e]{padding:.3rem .45rem;border:1px solid #ccd;border-radius:6px;font-size:.85rem;background:#fff}.font-delivery select[data-v-744fce3e]:disabled{background:#f3f3f3;color:#999;cursor:not-allowed}.fd-warn[data-v-744fce3e]{color:#cc8a00}.scripts-panel[data-v-f04ea28f]{padding-bottom:2rem}.description[data-v-f04ea28f]{font-size:.95rem;color:#555;margin-bottom:1.25rem;font-style:italic}.empty-msg[data-v-f04ea28f]{color:#888;font-style:italic;padding:.5rem 0;font-size:.9rem}.level-row[data-v-f04ea28f]{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem 1rem;margin-bottom:1rem}.level-row .level-selector[data-v-f04ea28f]{margin-bottom:0}.level-selector[data-v-f04ea28f],.belt-selector[data-v-f04ea28f]{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:1rem}.level-radio[data-v-f04ea28f],.belt-radio[data-v-f04ea28f]{display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .75rem;border:1px solid #ccc;border-radius:6px;background:#f5f5f5;color:#444;cursor:pointer;font-size:.875rem}.level-radio input[data-v-f04ea28f],.belt-radio input[data-v-f04ea28f]{accent-color:#4a90d9}.level-radio.active[data-v-f04ea28f],.belt-radio.active[data-v-f04ea28f]{background:#e8f0fb;border-color:#4a90d9;color:#2a6ab0;font-weight:600}.belt-dot[data-v-f04ea28f]{display:inline-block;width:.8rem;height:.8rem;border-radius:50%;border:1px solid rgba(0,0,0,.15)}.subtab-bar[data-v-f04ea28f]{display:flex;gap:.25rem;border-bottom:1px solid #ddd;margin:1rem 0 .85rem}.subtab-btn[data-v-f04ea28f]{padding:.45rem .9rem;border:none;background:transparent;cursor:pointer;font-size:.875rem;color:#555;border-bottom:2px solid transparent;margin-bottom:-1px}.subtab-btn[data-v-f04ea28f]:hover{color:#4a90d9}.subtab-btn.active[data-v-f04ea28f]{color:#4a90d9;border-bottom-color:#4a90d9;font-weight:600}.subtab-btn.has-session[data-v-f04ea28f]{color:#b06a00}.edit-mark[data-v-f04ea28f]{color:#b06a00;font-size:.85em;margin-left:.3rem;cursor:help}.session-chip[data-v-f04ea28f]{display:inline-flex;align-items:center;gap:.35rem;background:#fff8e6;border:1px solid #f0d79a;border-radius:6px;padding:.3rem .7rem;font-size:.82rem;color:#7a4a00;cursor:pointer;white-space:nowrap}.session-chip[data-v-f04ea28f]:hover{background:#fdf0d0;border-color:#e0c27a}.edit-area[data-v-f04ea28f]{display:flex;flex-direction:column;gap:.6rem}.conflict-banner[data-v-f04ea28f]{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem;background:#fff8e6;border:1px solid #f0d79a;border-radius:6px;padding:.5rem .75rem;font-size:.85rem;color:#7a4a00}.conflict-actions[data-v-f04ea28f]{display:flex;gap:.35rem;margin-left:auto}.editing-pill[data-v-f04ea28f]{padding:.15rem .6rem;border-radius:999px;font-size:.75rem;background:#e8f0fb;color:#2a6ab0;border:1px solid #b0cdf0;font-weight:600}.subtab-content[data-v-f04ea28f]{display:flex;flex-direction:column;gap:.85rem}.toolbar[data-v-f04ea28f]{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.toolbar-spacer[data-v-f04ea28f]{flex:1}.btn-primary[data-v-f04ea28f],.btn-secondary[data-v-f04ea28f],.btn-ghost[data-v-f04ea28f],.btn-danger-outline[data-v-f04ea28f]{padding:.45rem 1rem;border-radius:6px;font-size:.85rem;cursor:pointer;border:1px solid transparent}.btn-small[data-v-f04ea28f]{padding:.3rem .7rem;font-size:.78rem}.btn-primary[data-v-f04ea28f]{background:#4a90d9;color:#fff}.btn-primary[data-v-f04ea28f]:hover:not(:disabled){background:#357abd}.btn-primary[data-v-f04ea28f]:disabled{opacity:.55;cursor:not-allowed}.btn-secondary[data-v-f04ea28f]{background:#eef4fb;color:#2a6ab0;border-color:#b0cdf0}.btn-secondary[data-v-f04ea28f]:hover:not(:disabled){background:#d6e6f7}.btn-secondary[data-v-f04ea28f]:disabled{opacity:.55;cursor:not-allowed}.btn-ghost[data-v-f04ea28f]{background:transparent;border-color:#ccc;color:#555}.btn-ghost[data-v-f04ea28f]:hover{border-color:#aaa;color:#333}.btn-danger-outline[data-v-f04ea28f]{background:transparent;color:#c0392b;border-color:#c0392b}.btn-danger-outline[data-v-f04ea28f]:hover{background:#fdeaea}.status-pill[data-v-f04ea28f]{padding:.15rem .6rem;border-radius:999px;font-size:.75rem;border:1px solid transparent}.status-pill.draft[data-v-f04ea28f]{background:#fff3cd;color:#856404;border-color:#ffeaa7}.status-pill.validated[data-v-f04ea28f]{background:#d4edda;color:#155724;border-color:#c3e6cb}.preview-area[data-v-f04ea28f]{display:flex;flex-direction:column;gap:.6rem;min-height:0}.save-errors[data-v-f04ea28f]{background:#fdeaea;border:1px solid #f5b7b1;border-radius:6px;padding:.6rem .85rem;font-size:.85rem;color:#6b1f17;max-height:200px;overflow-y:auto}.save-errors-title[data-v-f04ea28f]{font-weight:600;margin-bottom:.3rem}.save-errors ul[data-v-f04ea28f]{padding-left:1.1rem;margin:0}.save-errors li[data-v-f04ea28f]{margin:.15rem 0}.preview-grid[data-v-f04ea28f]{display:grid;grid-template-columns:1fr 260px;gap:.75rem;align-items:start;min-height:0}.preview-grid.no-series[data-v-f04ea28f]{grid-template-columns:1fr}@media(max-width:720px){.preview-grid[data-v-f04ea28f]{grid-template-columns:1fr}}.series-pane[data-v-f04ea28f]{display:flex;flex-direction:column;gap:.45rem;max-height:60vh;overflow-y:auto}.series-pane h4[data-v-f04ea28f]{font-size:.85rem;color:#444;font-weight:600;margin:0}.series-font-delivery[data-v-f04ea28f] .font-delivery{flex-direction:column;align-items:flex-start;gap:.25rem}.series-font-delivery[data-v-f04ea28f] .fd-label{font-size:.78rem;font-weight:600;color:#555}.empty-inline[data-v-f04ea28f]{font-size:.8rem;color:#999;font-style:italic;margin:0}.draft-notice[data-v-f04ea28f]{font-size:.78rem;color:#856404;background:#fff3cd;border:1px solid #ffeaa7;border-radius:4px;padding:.4rem .55rem;margin:0}.series-list[data-v-f04ea28f]{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.35rem}.series-row[data-v-f04ea28f]{display:flex;flex-direction:column;gap:.3rem;padding:.4rem .55rem;background:#fff;border:1px solid #e8e8e8;border-radius:6px;font-size:.82rem}.series-name[data-v-f04ea28f]{font-family:ui-monospace,monospace;color:#2a6ab0;background:#eef4fb;padding:.15rem .5rem;border-radius:4px;font-size:.78rem;align-self:flex-start}.series-actions[data-v-f04ea28f]{display:flex;flex-wrap:wrap;gap:.25rem}.series-error[data-v-f04ea28f]{color:#c0392b;font-size:.75rem}.overlay[data-v-f04ea28f]{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:150}.insert-modal[data-v-f04ea28f]{background:#fff;border-radius:10px;padding:1.25rem 1.5rem;width:min(540px,95vw);max-height:80vh;display:flex;flex-direction:column;gap:.75rem;box-shadow:0 8px 32px #0003}.insert-modal h3[data-v-f04ea28f]{margin:0 0 .4rem;font-size:1rem}.insert-list[data-v-f04ea28f]{list-style:none;padding:0;margin:0;overflow-y:auto;display:flex;flex-direction:column;gap:.25rem}.insert-list label[data-v-f04ea28f]{display:inline-flex;align-items:center;gap:.5rem;padding:.35rem .5rem;border:1px solid #eee;border-radius:5px;font-size:.9rem}.insert-list label[data-v-f04ea28f]:hover{border-color:#b0cdf0;background:#f7fbff}.insert-key[data-v-f04ea28f]{font-family:ui-monospace,monospace;color:#2a6ab0}.insert-file[data-v-f04ea28f]{color:#888;font-size:.8rem}.modal-actions[data-v-f04ea28f]{display:flex;justify-content:flex-end;gap:.5rem}.error-toast[data-v-f04ea28f]{position:fixed;top:1rem;right:1rem;background:#c0392b;color:#fff;padding:.6rem 1rem;border-radius:6px;cursor:pointer;z-index:250;box-shadow:0 4px 12px #0003;max-width:360px;font-size:.85rem}.generate-panel[data-v-8d793639]{max-width:520px;padding-bottom:2rem}.description[data-v-8d793639]{font-size:.95rem;color:#555;font-style:italic;margin:0 0 1.25rem}.section-title[data-v-8d793639]{font-size:1rem;font-weight:600;color:#444;margin-bottom:.75rem}.section-divider[data-v-8d793639]{border:none;border-top:1px solid #e0e0e0;margin:1.75rem 0 1.25rem}.generate-form[data-v-8d793639]{background:#fff;border-radius:8px;padding:1.5rem;box-shadow:0 1px 4px #0000000f;display:flex;flex-direction:column;gap:1.25rem}.source-toggle[data-v-8d793639]{display:inline-flex;gap:.4rem;background:#f5f5f5;border:1px solid #e0e0e0;border-radius:8px;padding:.25rem;align-self:flex-start}.source-radio[data-v-8d793639]{display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .75rem;border-radius:6px;cursor:pointer;font-size:.85rem;color:#555}.source-radio input[data-v-8d793639]{display:none}.source-radio.active[data-v-8d793639]{background:#fff;color:#2a6ab0;font-weight:600;box-shadow:0 1px 3px #00000014}.field[data-v-8d793639]{display:flex;flex-direction:column;gap:.4rem}.field>label[data-v-8d793639]{font-size:.875rem;font-weight:600;color:#444}select[data-v-8d793639],input[type=text][data-v-8d793639]{padding:.55rem .75rem;border:1px solid #ccc;border-radius:6px;font-size:.95rem}select[data-v-8d793639]:focus,input[type=text][data-v-8d793639]:focus{outline:none;border-color:#4a90d9}.belts-empty[data-v-8d793639]{font-size:.875rem;color:#999;font-style:italic}.belt-list[data-v-8d793639]{display:flex;flex-direction:column;gap:.35rem}.belt-item[data-v-8d793639]{display:inline-flex;align-items:center;gap:.5rem;font-size:.9rem;cursor:pointer;color:#333;padding:.2rem 0}.belt-item.disabled[data-v-8d793639]{color:#bbb;cursor:default}.belt-item input[type=checkbox][data-v-8d793639]{accent-color:#4a90d9;width:1rem;height:1rem}.belt-dot[data-v-8d793639]{display:inline-block;width:.75rem;height:.75rem;border-radius:50%;flex-shrink:0}.belt-item.disabled .belt-dot[data-v-8d793639]{opacity:.3}.reference-row[data-v-8d793639]{display:flex;gap:.5rem;align-items:stretch}.reference-row input[type=text][data-v-8d793639]{flex:1}.btn-insert[data-v-8d793639],.btn-clear[data-v-8d793639]{padding:0 .75rem;border:1px solid #ccc;border-radius:6px;background:#f5f5f5;cursor:pointer;font-size:.95rem;color:#444;white-space:nowrap;line-height:1}.btn-insert[data-v-8d793639]:hover,.btn-clear[data-v-8d793639]:hover{background:#e8e8e8}.btn-clear[data-v-8d793639]{color:#888;font-size:.85rem}.highlight-controls[data-v-8d793639]{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.no-highlight-label[data-v-8d793639]{display:inline-flex;align-items:center;gap:.35rem;font-size:.875rem;color:#555;cursor:pointer;white-space:nowrap}.no-highlight-label input[type=checkbox][data-v-8d793639]{accent-color:#4a90d9}.highlight-controls.muted .color-picker[data-v-8d793639],.highlight-controls.muted .opacity-wrap[data-v-8d793639]{opacity:.35;pointer-events:none}.color-picker[data-v-8d793639]{width:2.5rem;height:2rem;padding:.1rem;border:1px solid #ccc;border-radius:5px;cursor:pointer;background:none;flex-shrink:0}.opacity-wrap[data-v-8d793639]{display:flex;align-items:center;gap:.4rem;flex:1}.opacity-label[data-v-8d793639]{font-size:.8rem;color:#666;white-space:nowrap}.opacity-slider[data-v-8d793639]{flex:1;accent-color:#4a90d9;min-width:80px}.opacity-value[data-v-8d793639]{font-size:.8rem;color:#555;min-width:2.5rem;text-align:right}.preview-row[data-v-8d793639]{display:flex;align-items:baseline;gap:.5rem;margin-top:.25rem;min-height:1.8rem}.preview-label[data-v-8d793639]{font-size:.8rem;color:#777;white-space:nowrap;flex-shrink:0}.preview-empty[data-v-8d793639]{font-size:.9rem;color:#ccc;font-style:italic}.preview-text[data-v-8d793639]{font-size:.95rem;color:#222;line-height:1.6}.snippet-row[data-v-8d793639]{display:flex;gap:.5rem;align-items:center;margin-top:.4rem}.snippet-label[data-v-8d793639]{font-size:.8rem;color:#777;white-space:nowrap;flex-shrink:0}.snippet-input[data-v-8d793639]{flex:1;padding:.4rem .6rem;border:1px solid #ddd;border-radius:6px;font-size:.875rem}.snippet-input[data-v-8d793639]:focus{outline:none;border-color:#4a90d9}.rotate-label[data-v-8d793639]{display:inline-flex;align-items:center;gap:.4rem;font-size:.875rem;color:#555;cursor:pointer}.rotate-label input[type=checkbox][data-v-8d793639]{accent-color:#4a90d9}.actions[data-v-8d793639]{margin-top:.25rem;display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.btn-generate[data-v-8d793639]{padding:.65rem 1.5rem;background:#4a90d9;color:#fff;border:none;border-radius:6px;font-size:1rem;cursor:pointer;transition:background .15s}.btn-generate[data-v-8d793639]:hover:not(:disabled){background:#357abd}.btn-generate[data-v-8d793639]:disabled{background:silver;cursor:not-allowed}.download-actions[data-v-8d793639]{display:flex;gap:.75rem;flex-wrap:wrap}.btn-download[data-v-8d793639]{padding:.55rem 1.1rem;background:#f0f0f0;color:#333;border:1px solid #ccc;border-radius:6px;font-size:.9rem;cursor:pointer;transition:background .15s}.btn-download[data-v-8d793639]:hover:not(:disabled){background:#e2e2e2}.btn-download[data-v-8d793639]:disabled{opacity:.5;cursor:not-allowed}.locale-unsupported[data-v-8d793639]{font-size:.85rem;color:#856404;font-style:italic}.fallback-warning[data-v-8d793639]{font-size:.8rem;color:#856404;background:#fff3cd;border:1px solid #ffc107;border-radius:5px;padding:.35rem .6rem;margin:0}.error-msg[data-v-8d793639]{font-size:.85rem;color:#c0392b}.upload-row[data-v-8d793639]{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.file-input-hidden[data-v-8d793639]{display:none}.btn-upload[data-v-8d793639]{padding:.55rem 1rem;background:#f0f0f0;color:#444;border:1px solid #ccc;border-radius:6px;font-size:.9rem;cursor:pointer;white-space:nowrap;transition:background .15s}.btn-upload[data-v-8d793639]:hover{background:#e2e2e2}.upload-hint[data-v-8d793639]{font-size:.875rem;color:#666}.publication-panel[data-v-40339817]{max-width:820px;padding-bottom:2rem}.description[data-v-40339817]{font-size:.95rem;color:#555;font-style:italic;margin:0 0 1.25rem}.hint[data-v-40339817]{font-size:.9rem;color:#888;font-style:italic}.section-card[data-v-40339817]{background:#fff;border-radius:8px;padding:1.25rem 1.5rem;margin-bottom:1rem;box-shadow:0 1px 4px #0000000f}.table-hint[data-v-40339817]{font-size:.875rem;color:#555;margin:0 0 1rem}.table-scroll[data-v-40339817]{overflow-x:auto}.grid[data-v-40339817]{border-collapse:collapse;width:100%}.grid th[data-v-40339817],.grid td[data-v-40339817]{border:1px solid #eee;padding:.5rem .75rem;text-align:center}.corner[data-v-40339817]{background:transparent;border:none}.col-head[data-v-40339817]{font-size:.95rem;font-weight:600;color:#333;background:#f7f9fc}.row-head[data-v-40339817]{text-align:left;white-space:nowrap;background:#f7f9fc}.belt-dot[data-v-40339817]{display:inline-block;width:.8rem;height:.8rem;border-radius:50%;vertical-align:middle;margin-right:.4rem;box-shadow:inset 0 0 0 1px #00000026}.belt-name[data-v-40339817]{font-size:.9rem;color:#333}.cell[data-v-40339817]{vertical-align:top}.cell-sheets[data-v-40339817]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem;text-align:left}.cell-sheet[data-v-40339817]{display:flex;align-items:center;justify-content:space-between;gap:.4rem}.sheet-check[data-v-40339817]{display:inline-flex;align-items:center;gap:.35rem;cursor:pointer}.sheet-check input[type=checkbox][data-v-40339817]{width:1rem;height:1rem;cursor:pointer;flex-shrink:0}.sheet-name[data-v-40339817]{font-size:.85rem;color:#444}.sheet-name.is-exam[data-v-40339817]{font-weight:600;color:#333}.sheet-name.is-info[data-v-40339817]{font-style:italic;color:#555}.btn-add-info[data-v-40339817]{margin-top:.35rem;padding:.2rem .5rem;font-size:.75rem;color:#4a90d9;background:transparent;border:1px dashed #b0cdf0;border-radius:5px;cursor:pointer}.btn-add-info[data-v-40339817]:hover{background:#eef4fc}.btn-edit[data-v-40339817]{border:1px solid #d6dbe3;background:#fff;border-radius:5px;width:1.5rem;height:1.5rem;font-size:.8rem;cursor:pointer;color:#4a90d9;line-height:1}.btn-edit[data-v-40339817]:hover{background:#eef4fc}.empty-cell[data-v-40339817]{color:#ccc}.level-warnings[data-v-40339817]{list-style:none;margin:.85rem 0 0;padding:0;display:flex;flex-direction:column;gap:.3rem}.level-warning[data-v-40339817]{font-size:.82rem;color:#856404;background:#fff3cd;border:1px solid #ffeaa7;border-radius:5px;padding:.4rem .6rem}.toolbar[data-v-40339817]{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;margin-bottom:.5rem}.btn-download[data-v-40339817]{padding:.65rem 1.5rem;background:#4a90d9;color:#fff;border:none;border-radius:6px;font-size:1rem;cursor:pointer;transition:background .15s}.btn-download[data-v-40339817]:hover:not(:disabled){background:#357abd}.btn-download[data-v-40339817]:disabled{background:silver;cursor:not-allowed}.publish-group[data-v-40339817]{display:inline-flex;align-items:center;gap:.35rem}.btn-publish[data-v-40339817]{padding:.65rem 1.25rem;background:#2e9e6b;color:#fff;border:none;border-radius:6px;font-size:1rem;cursor:pointer;transition:background .15s}.btn-publish[data-v-40339817]:hover:not(:disabled){background:#268a5c}.btn-publish[data-v-40339817]:disabled{background:silver;color:#eef1f5;cursor:not-allowed}.btn-info[data-v-40339817]{width:1.7rem;height:1.7rem;border-radius:50%;border:1px solid #c4ccd6;background:#fff;color:#4a90d9;font-weight:700;cursor:pointer;line-height:1}.btn-info[data-v-40339817]:hover{background:#eef4fc}.account-group[data-v-40339817]{display:inline-flex;gap:.35rem;margin-left:auto}.btn-account[data-v-40339817]{padding:.55rem 1rem;background:transparent;color:#98a2b0;border:1px solid #dde2e9;border-radius:6px;font-size:.9rem;cursor:not-allowed}.btn-account.is-active[data-v-40339817]{color:#4a90d9;border-color:#b0cdf0;cursor:pointer}.btn-account.is-active[data-v-40339817]:hover{background:#eef4fc}.publish-message[data-v-40339817]{font-size:.9rem;margin:.25rem 0 0;padding:.5rem .75rem;border-radius:6px;background:#fdecea;color:#b3261e;border:1px solid #f7c3bd}.publish-message.ok[data-v-40339817]{background:#e7f6ee;color:#1c7a4a;border-color:#b7e2ca}.publish-link[data-v-40339817]{color:inherit;font-weight:600;text-decoration:underline;word-break:break-all}.publish-link[data-v-40339817]:hover{text-decoration:none}.empty-selection[data-v-40339817]{font-size:.85rem;color:#999;font-style:italic}.overlay[data-v-40339817]{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:100}.info-dialog[data-v-40339817]{background:#fff;border-radius:10px;padding:2rem 2.25rem;max-width:480px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 8px 32px #0003}.info-dialog h3[data-v-40339817]{font-size:1.1rem;margin-bottom:.7rem;color:#333}.info-dialog p[data-v-40339817]{font-size:.92rem;color:#555;line-height:1.55;margin-bottom:1.25rem}.edit-context[data-v-40339817]{font-weight:600;color:#444;font-size:.9rem;margin-bottom:1rem}.field[data-v-40339817]{display:flex;flex-direction:column;gap:.35rem;margin-bottom:1rem}.field label[data-v-40339817]{font-size:.85rem;font-weight:600;color:#444}.field input[type=text][data-v-40339817],.field textarea[data-v-40339817]{padding:.5rem .7rem;border:1px solid #ccc;border-radius:6px;font-size:.95rem;font-family:inherit;resize:vertical}.field input[data-v-40339817]:focus,.field textarea[data-v-40339817]:focus{outline:none;border-color:#4a90d9}.field-label[data-v-40339817]{font-size:.85rem;font-weight:600;color:#444}.field input[type=file][data-v-40339817]{font-size:.85rem}.info-help[data-v-40339817]{font-size:.85rem;color:#666;margin-bottom:1rem}.asset-row[data-v-40339817]{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.4rem .6rem;background:#f5f8fc;border:1px solid #e2e8f2;border-radius:6px}.asset-name[data-v-40339817]{font-size:.85rem;color:#444;word-break:break-all}.info-hint[data-v-40339817]{font-size:.8rem;color:#666;font-style:italic;margin:-.4rem 0 .8rem}.info-warn[data-v-40339817]{font-size:.82rem;color:#856404;background:#fff3cd;border:1px solid #ffeaa7;border-radius:5px;padding:.4rem .6rem;margin-bottom:1rem}.dialog-actions[data-v-40339817]{display:flex;justify-content:flex-end;align-items:center;gap:.5rem}.dialog-spacer[data-v-40339817]{flex:1}.btn-tiny[data-v-40339817]{padding:.25rem .6rem;font-size:.78rem}.btn-danger-outline[data-v-40339817]{padding:.55rem 1.1rem;background:transparent;color:#c0392b;border:1px solid #c0392b;border-radius:6px;font-size:.9rem;cursor:pointer}.btn-danger-outline[data-v-40339817]:hover:not(:disabled){background:#fdeaea}.btn-danger-outline[data-v-40339817]:disabled{opacity:.55;cursor:not-allowed}.btn-primary[data-v-40339817]{padding:.55rem 1.2rem;background:#4a90d9;color:#fff;border:none;border-radius:6px;font-size:.9rem;cursor:pointer}.btn-primary[data-v-40339817]:hover{background:#357abd}.btn-ghost[data-v-40339817]{padding:.55rem 1.1rem;background:transparent;border:1px solid #ccc;border-radius:6px;cursor:pointer;color:#666;font-size:.9rem}.btn-ghost[data-v-40339817]:hover{border-color:#aaa;color:#333}.merge-panel[data-v-03f92461]{max-width:640px;padding-bottom:2rem}h2[data-v-03f92461]{margin-bottom:1rem}.hint[data-v-03f92461]{font-size:.9rem;color:#888;font-style:italic}.description[data-v-03f92461]{font-size:.95rem;color:#555;font-style:italic;margin:0 0 1.25rem}.class-tabs[data-v-03f92461]{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;margin-bottom:1.25rem}.for-class-label[data-v-03f92461]{font-size:.9rem;color:#555;margin-right:.2rem}.class-tabs button[data-v-03f92461]{padding:.35rem .9rem;border:1px solid #ccc;border-radius:20px;background:#f5f5f5;color:#444;font-size:.9rem;cursor:pointer;transition:background .12s,border-color .12s}.class-tabs button[data-v-03f92461]:hover{background:#e8e8e8}.class-tabs button.active[data-v-03f92461]{background:#4a90d9;color:#fff;border-color:#4a90d9}.section-card[data-v-03f92461]{background:#fff;border-radius:8px;padding:1.25rem 1.5rem;margin-bottom:1rem;box-shadow:0 1px 4px #0000000f}.section-title[data-v-03f92461]{font-size:.95rem;font-weight:600;color:#444;margin:0 0 .85rem}.empty-hint[data-v-03f92461]{font-size:.875rem;color:#999;font-style:italic}.distribution-list[data-v-03f92461]{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.3rem}.distribution-list li[data-v-03f92461]{display:flex;align-items:center;gap:.65rem;padding:.45rem .6rem;border-radius:6px;background:#fafafa;border:1px solid #eee;cursor:grab;-webkit-user-select:none;user-select:none;transition:background .1s,border-color .1s}.distribution-list li[data-v-03f92461]:hover{background:#f0f4fb;border-color:#c5d8f0}.distribution-list li.drag-over[data-v-03f92461]{background:#e0ecfa;border-color:#4a90d9;border-style:dashed}.distribution-list li.dragging[data-v-03f92461]{opacity:.4}.drag-handle[data-v-03f92461]{font-size:1rem;color:#bbb;cursor:grab;flex-shrink:0}.belt-dot[data-v-03f92461]{display:inline-block;width:.8rem;height:.8rem;border-radius:50%;flex-shrink:0}.student-name[data-v-03f92461]{flex:1;font-size:.9rem;color:#222}.belt-label[data-v-03f92461]{font-size:.8rem;color:#777;white-space:nowrap}.field[data-v-03f92461]{display:flex;flex-direction:column;gap:.4rem}label[data-v-03f92461]{font-size:.875rem;font-weight:600;color:#444}input[type=text][data-v-03f92461]{padding:.55rem .75rem;border:1px solid #ccc;border-radius:6px;font-size:.95rem}input[type=text][data-v-03f92461]:focus{outline:none;border-color:#4a90d9}.file-input-hidden[data-v-03f92461]{display:none}.upload-row[data-v-03f92461]{display:flex;align-items:center;gap:.75rem}.btn-upload[data-v-03f92461]{padding:.5rem 1rem;background:#f0f0f0;color:#444;border:1px solid #ccc;border-radius:6px;font-size:.9rem;cursor:pointer;white-space:nowrap;transition:background .12s}.btn-upload[data-v-03f92461]:hover{background:#e2e2e2}.upload-hint[data-v-03f92461]{font-size:.875rem;color:#999;font-style:italic}.file-list[data-v-03f92461]{list-style:none;padding:0;margin:.75rem 0 0;display:flex;flex-direction:column;gap:.3rem}.file-list li[data-v-03f92461]{display:flex;align-items:baseline;gap:.5rem;font-size:.875rem;padding:.3rem .5rem;border-radius:5px}.file-ok[data-v-03f92461]{background:#f0faf4}.file-error[data-v-03f92461]{background:#fff0f0}.file-dupe[data-v-03f92461]{background:#fff8e1}.file-icon[data-v-03f92461]{font-size:.75rem;flex-shrink:0}.file-ok .file-icon[data-v-03f92461]{color:#27ae60}.file-error .file-icon[data-v-03f92461]{color:#c0392b}.file-dupe .file-icon[data-v-03f92461]{color:#e67e22}.file-name[data-v-03f92461]{font-weight:500;color:#333;flex-shrink:0}.file-detail[data-v-03f92461]{color:#666;font-style:italic}.file-error .file-detail[data-v-03f92461]{color:#c0392b;font-style:normal}.file-dupe .file-detail[data-v-03f92461]{color:#e67e22}.toolbar[data-v-03f92461]{display:flex;gap:.75rem;align-items:center;margin-bottom:.75rem}.btn-merge[data-v-03f92461]{padding:.65rem 1.5rem;background:#4a90d9;color:#fff;border:none;border-radius:6px;font-size:1rem;cursor:pointer;transition:background .15s}.btn-merge[data-v-03f92461]:hover:not(:disabled){background:#357abd}.btn-merge[data-v-03f92461]:disabled{background:silver;cursor:not-allowed}.btn-view[data-v-03f92461]{padding:.65rem 1.25rem;background:#27ae60;color:#fff;border:none;border-radius:6px;font-size:1rem;cursor:pointer;transition:background .15s}.btn-view[data-v-03f92461]:hover{background:#219a52}.progress-wrap[data-v-03f92461]{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem}.progress-bar[data-v-03f92461]{flex:1;height:8px;background:#e0e0e0;border-radius:4px;overflow:hidden}.progress-fill[data-v-03f92461]{height:100%;background:#4a90d9;border-radius:4px;transition:width .2s ease}.progress-label[data-v-03f92461]{font-size:.8rem;color:#666;white-space:nowrap}.error-msg[data-v-03f92461]{font-size:.875rem;color:#c0392b;background:#fff0f0;border-radius:6px;padding:.6rem .85rem;margin-top:.25rem}.progressions-panel[data-v-5356096c]{padding-bottom:2rem;--theme-col-w: 13.5rem;--sub-name-col-w: 18rem;--cell-w: 1.6rem;--x-col-w: 1.5rem;--add-col-w: 1.5rem;--row-h: 1.2rem;--grid-line: #d8d8d8;--selected-ring: #2a6ab0}.measure-stack[data-v-5356096c]{position:absolute;left:-9999px;top:-9999px;visibility:hidden;pointer-events:none}.measure-row[data-v-5356096c]{display:inline-flex;align-items:center;gap:.25rem;padding-right:.4rem;white-space:nowrap;box-sizing:border-box}.measure-row .measure-name[data-v-5356096c]{flex:0 0 auto!important;min-width:0!important;max-width:none!important;overflow:visible!important;text-overflow:clip!important;white-space:nowrap!important}.measure-row .measure-icon[data-v-5356096c]{flex:0 0 auto}.panel-header[data-v-5356096c]{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:1rem}.description[data-v-5356096c]{flex:1;font-size:.95rem;color:#555;font-style:italic;margin:0}.floating-tools[data-v-5356096c]{position:sticky;top:0;height:0;z-index:30;display:flex;justify-content:flex-end;align-items:flex-start;pointer-events:none}.floating-tools-inner[data-v-5356096c]{position:relative;pointer-events:auto;display:flex;align-items:center;gap:.4rem;padding:.25rem .45rem;border-radius:999px;background:#fffffff5;box-shadow:0 1px 6px #0000002e}.merge-count[data-v-5356096c]{font-size:.75rem;font-weight:700;color:#2a6ab0;background:#eaf2ff;border:1px solid #b0cdf0;border-radius:999px;padding:0 .4rem;line-height:1.3;-webkit-user-select:none;user-select:none}.help-btn[data-v-5356096c],.merge-btn[data-v-5356096c]{flex-shrink:0;width:1.75rem;height:1.75rem;border-radius:50%;border:1px solid #b0cdf0;background:#eaf2ff;color:#2a6ab0;font-weight:700;cursor:pointer;font-size:.9rem;padding:0;display:inline-flex;align-items:center;justify-content:center}.help-btn[data-v-5356096c]:hover,.merge-btn[data-v-5356096c]:hover{background:#d0e6ff}.merge-btn.active[data-v-5356096c]{background:#2a6ab0;color:#fff;border-color:#2a6ab0;box-shadow:0 0 0 2px #2a6ab059}.merge-cancel-btn[data-v-5356096c]{flex-shrink:0;width:1.75rem;height:1.75rem;border-radius:50%;border:1px solid #d9b0b0;background:#fff0f0;color:#c0392b;font-weight:700;font-size:1rem;cursor:pointer;padding:0;display:inline-flex;align-items:center;justify-content:center}.merge-cancel-btn[data-v-5356096c]:hover{background:#ffe0e0}.help-box[data-v-5356096c]{background:#fffceb;border:1px solid #ffc107;border-radius:6px;padding:.6rem .9rem;margin-bottom:1rem;font-size:.85rem;color:#6b5500}.help-box ul[data-v-5356096c]{margin:.3rem 0 0;padding-left:1.2rem}.help-box li[data-v-5356096c]{margin:.15rem 0}.floating-help[data-v-5356096c]{position:absolute;top:calc(100% + .35rem);right:0;width:min(34rem,85vw);margin-bottom:0;z-index:31;box-shadow:0 4px 14px #0000002e;text-align:left}.empty-msg[data-v-5356096c]{color:#888;font-style:italic;padding:.5rem 0;font-size:.9rem}.level-selector[data-v-5356096c]{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:1rem}.level-radio[data-v-5356096c]{display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .75rem;border:1px solid #ccc;border-radius:6px;background:#f5f5f5;color:#444;cursor:pointer;font-size:.875rem}.level-radio input[type=radio][data-v-5356096c]{accent-color:#4a90d9}.level-radio.active[data-v-5356096c]{background:#e8f0fb;border-color:#4a90d9;color:#2a6ab0;font-weight:600}.counts-bar[data-v-5356096c]{display:grid;align-items:end;background:#fff;position:sticky;top:0;z-index:10;box-shadow:0 1px 4px #0000000f;padding-bottom:2px}.counts-cell[data-v-5356096c]{display:flex;flex-direction:column;align-items:center;font-size:.7rem;color:#444;line-height:1}.belt-square[data-v-5356096c]{width:var(--cell-w);height:var(--row-h);border:1px solid rgba(0,0,0,.15);box-sizing:border-box;display:block;cursor:pointer}.belt-square[data-v-5356096c]:hover{filter:brightness(.9)}.belt-square.selected[data-v-5356096c]{outline:2px solid var(--selected-ring);outline-offset:1px}.overflow-mark[data-v-5356096c]{width:var(--cell-w);height:var(--row-h);display:flex;align-items:center;justify-content:center;font-size:.85rem;color:#b58900;background:#fff7e0;border:1px dashed #d9b87a;box-sizing:border-box;cursor:pointer}.overflow-mark[data-v-5356096c]:hover{background:#ffeec0}.overflow-mark.selected[data-v-5356096c]{outline:2px solid var(--selected-ring);outline-offset:1px}.counts-value[data-v-5356096c]{font-weight:600;padding-top:1px}.counts-cell.near_max .counts-value[data-v-5356096c]{color:#c87b00}.counts-cell.overflow_max .counts-value[data-v-5356096c]{color:#c0392b}.theme-block[data-v-5356096c]{position:relative}.theme-overlay[data-v-5356096c]{position:absolute;top:0;left:0;width:var(--theme-col-w);height:var(--row-h);display:flex;align-items:center;gap:.25rem;padding-right:.4rem;z-index:5;min-width:0;overflow:hidden}.sub-row[data-v-5356096c]{display:grid;align-items:center;min-height:var(--row-h)}.sub-row[data-v-5356096c]:hover{background:#fafbfc}.theme-col[data-v-5356096c]{display:flex;align-items:center;gap:.25rem;padding-right:.4rem;min-width:0;overflow:hidden}.theme-drag-handle[data-v-5356096c],.sub-drag-handle[data-v-5356096c]{cursor:grab;color:#aaa;font-size:.75rem;-webkit-user-select:none;user-select:none;letter-spacing:-2px;flex-shrink:0}.theme-drag-handle[data-v-5356096c]{color:#888}.theme-drag-handle[data-v-5356096c]:active,.sub-drag-handle[data-v-5356096c]:active{cursor:grabbing}.theme-name[data-v-5356096c]{font-weight:600;color:#2a4a70;font-size:.85rem;cursor:text;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.theme-delete-btn[data-v-5356096c]{color:#ccc;font-size:.85rem}.theme-col:hover .theme-delete-btn[data-v-5356096c]{color:#999}.theme-name-edit[data-v-5356096c],.subtheme-name-edit[data-v-5356096c]{flex:1;font-size:.85rem;padding:0 .2rem;border:1px solid #4a90d9;border-radius:2px;min-width:0}.sub-name-col[data-v-5356096c]{display:flex;align-items:center;gap:.25rem;padding-right:.4rem;min-width:0;overflow:hidden}.sub-name[data-v-5356096c]{font-size:.825rem;color:#333;cursor:text;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.cell[data-v-5356096c]{position:relative;height:var(--row-h);width:var(--cell-w);box-sizing:border-box;border-top:1px solid var(--grid-line);border-left:1px solid var(--grid-line);cursor:pointer;transition:filter .08s}.cell[data-v-5356096c]:hover{filter:brightness(.92)}.cell[data-v-5356096c]:last-of-type{border-right:1px solid var(--grid-line)}.cell.overflow[data-v-5356096c]{border-top-style:dashed;border-left-style:dashed}.cell.overflow[data-v-5356096c]:last-of-type{border-right-style:dashed}.cell.highlighted[data-v-5356096c]:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--highlight-color, transparent);opacity:.4;pointer-events:none}.cell-absent[data-v-5356096c]{background:#fff}.cell-solo[data-v-5356096c],.cell-merged[data-v-5356096c]{background:#94bd5e}.cell-removed[data-v-5356096c]{background:repeating-linear-gradient(45deg,#d0d0d0,#d0d0d0 3px,#bbb 3px,#bbb 6px)}.cell.merged-joined-above[data-v-5356096c]{border-top-color:transparent}.cell.merged-tinted[data-v-5356096c]{background:var(--merge-color, #cfe2f3)}.cell.merge-draft[data-v-5356096c]{background:#c8d9ec;outline:2px solid #2a6ab0;outline-offset:-2px}.cell.merge-ineligible[data-v-5356096c]{opacity:.45;cursor:not-allowed}.cell.merge-ineligible[data-v-5356096c]:hover{filter:none}.grid-closer[data-v-5356096c]{display:grid;height:1px;margin-bottom:.5rem}.closer-cell[data-v-5356096c]{background:var(--grid-line)}.closer-cell.overflow[data-v-5356096c]{background:repeating-linear-gradient(90deg,var(--grid-line),var(--grid-line) 2px,transparent 2px,transparent 4px)}.phantom-row .phantom-cell[data-v-5356096c]{background:#fafafa;cursor:default;pointer-events:none}.phantom-row .phantom-sub-name[data-v-5356096c]{color:#bbb;font-style:italic;font-size:.8rem}.phantom-row[data-v-5356096c]:hover{background:transparent}.x-col[data-v-5356096c],.add-col[data-v-5356096c]{display:flex;justify-content:center;align-items:center}.icon-btn[data-v-5356096c]{width:1.2rem;height:1.2rem;border-radius:3px;border:none;background:transparent;color:#999;cursor:pointer;font-size:.95rem;line-height:1;padding:0}.icon-btn[data-v-5356096c]:hover{background:#f0e0e0;color:#c0392b}.icon-btn.add-btn[data-v-5356096c]{color:#2a6ab0}.icon-btn.add-btn[data-v-5356096c]:hover{background:#d0e6ff;color:#2a6ab0}.qspec-col[data-v-5356096c]{position:relative;display:flex;align-items:center;gap:.25rem;min-width:0;padding:0 .4rem}.qspec-text[data-v-5356096c]{flex:1;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.78rem;color:#2a4a70;overflow-x:auto;white-space:nowrap;cursor:text}.qspec-text[data-v-5356096c]::-webkit-scrollbar{height:3px}.qspec-text[data-v-5356096c]::-webkit-scrollbar-thumb{background:#ccc;border-radius:2px}.qspec-empty[data-v-5356096c]{flex:1;color:#ccc;font-size:.85rem;-webkit-user-select:none;user-select:none}.qspec-edit[data-v-5356096c]{flex:1;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.78rem;padding:.15rem .3rem;border:1px solid #4a90d9;border-radius:2px}.qspec-edit.has-error[data-v-5356096c]{border-color:#c0392b;background:#fff5f4}.qspec-edit[data-v-5356096c]:disabled{opacity:.6;cursor:wait}.qspec-error[data-v-5356096c]{position:absolute;top:calc(100% + 2px);left:.4rem;right:.4rem;background:#fff5f4;border:1px solid #c0392b;color:#a02418;font-size:.72rem;line-height:1.3;padding:.25rem .45rem;border-radius:3px;z-index:20;box-shadow:0 2px 4px #0000001f;white-space:normal;word-break:break-word;pointer-events:none}.qspec-warning[data-v-5356096c]{color:#a1741a;cursor:help;margin-left:.25rem}.icon-btn.pencil-btn[data-v-5356096c]{color:#4a90d9}.icon-btn.pencil-btn[data-v-5356096c]:hover{background:#d0e6ff;color:#2a6ab0}.icon-btn.clear-btn[data-v-5356096c],.icon-btn.check-btn[data-v-5356096c]{font-weight:700}.icon-btn.check-btn[data-v-5356096c]{color:#1e7c3f}.icon-btn.check-btn[data-v-5356096c]:hover{background:#d5f5e3;color:#1e7c3f}.generate-bar[data-v-5356096c]{display:grid;align-items:start;padding-top:.4rem;gap:0}.generate-cell[data-v-5356096c]{display:flex;flex-direction:column;align-items:center;gap:3px}.generate-btn[data-v-5356096c]{width:var(--cell-w);height:var(--cell-w);display:flex;align-items:center;justify-content:center;border:1px solid #b0cdf0;border-radius:3px;background:#eaf2ff;color:#2a6ab0;cursor:pointer;padding:0;box-sizing:border-box;transition:background .1s,color .1s}.generate-btn[data-v-5356096c]:hover:not(:disabled){background:#d0e6ff}.generate-btn[data-v-5356096c]:disabled{background:#f3f3f3;border-color:#ddd;color:#bbb;cursor:not-allowed}.generate-btn.has-missing[data-v-5356096c]{background:#f3f3f3;border-color:#e8c9a0;color:#e67e22;cursor:pointer}.generate-btn.has-missing[data-v-5356096c]:hover{background:#fff3cd}.generate-btn.has-missing.panel-open[data-v-5356096c]{background:#fff3cd;border-color:#e67e22}.sub-row.row-missing[data-v-5356096c]{background:#fff3cd;box-shadow:inset 3px 0 #e67e22}.missing-panel[data-v-5356096c]{position:fixed;right:1.25rem;bottom:1.25rem;z-index:60;width:min(22rem,90vw);max-height:min(60vh,34rem);display:flex;flex-direction:column;background:#fff;border:1px solid #e8c9a0;border-top:3px solid #e67e22;border-radius:8px;box-shadow:0 6px 24px #0000002e}.missing-header[data-v-5356096c]{display:flex;align-items:center;gap:.4rem;padding:.5rem .6rem .35rem}.missing-header h4[data-v-5356096c]{flex:1;margin:0;font-size:.82rem;font-weight:600;color:#333}.missing-belt-square[data-v-5356096c]{flex:none;cursor:default;border-radius:2px}.missing-belt-square[data-v-5356096c]:hover{filter:none}.missing-close[data-v-5356096c]{flex:none;font-size:1rem;line-height:1}.missing-close[data-v-5356096c]:hover{background:#f0e0e0;color:#c0392b}.missing-hint[data-v-5356096c]{margin:0;padding:0 .6rem .45rem;font-size:.7rem;color:#777}.missing-list[data-v-5356096c]{margin:0;padding:0 .4rem .5rem;list-style:none;overflow-y:auto}.missing-theme[data-v-5356096c]{padding:.4rem .25rem .15rem;font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:#999}.missing-sub[data-v-5356096c]{display:block;width:100%;padding:.22rem .4rem;border:none;border-radius:4px;background:none;font:inherit;font-size:.78rem;text-align:left;color:#2a6ab0;cursor:pointer}.missing-sub[data-v-5356096c]:hover{background:#fff3cd}.preview-dialog[data-v-5356096c]{background:#fff;border-radius:10px;width:min(820px,95vw);max-height:88vh;display:flex;flex-direction:column;box-shadow:0 8px 32px #0003}.preview-body[data-v-5356096c]{display:grid;grid-template-columns:1fr 1fr;gap:0;flex:1;overflow:hidden}@media(max-width:720px){.preview-body[data-v-5356096c]{grid-template-columns:1fr}}.slots-section[data-v-5356096c],.yaml-section[data-v-5356096c]{padding:.85rem 1.1rem;overflow:auto;display:flex;flex-direction:column;gap:.5rem;min-height:0}.slots-section[data-v-5356096c]{border-right:1px solid #eaeaea}.slots-section h4[data-v-5356096c],.yaml-section h4[data-v-5356096c]{font-size:.85rem;color:#444;margin:0;font-weight:600}.slots-list[data-v-5356096c]{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.25rem}.slot-row[data-v-5356096c]{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:.45rem;padding:.3rem .45rem;background:#f8f8f8;border:1px solid #eaeaea;border-radius:5px;font-size:.85rem}.slot-kind[data-v-5356096c]{color:#888;font-size:.9rem}.slot-kind.merge[data-v-5356096c]{color:#2a6ab0}.slot-label[data-v-5356096c]{color:#333}.preview-header[data-v-5356096c]{display:flex;align-items:center;gap:.75rem;padding:.85rem 1.25rem;border-bottom:1px solid #eaeaea}.preview-header h3[data-v-5356096c]{flex:1;margin:0;font-size:1rem;color:#333;font-weight:600}.preview-close[data-v-5356096c]{font-size:1.1rem;color:#888}.preview-close[data-v-5356096c]:hover{background:#f0e0e0;color:#c0392b}.preview-content[data-v-5356096c]{flex:1;overflow:auto;margin:0;padding:.6rem .75rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.78rem;line-height:1.45;color:#333;background:#fafbfc;border:1px solid #eaeaea;border-radius:5px;white-space:pre;-webkit-user-select:text;user-select:text}.preview-actions[data-v-5356096c]{display:flex;gap:.6rem;padding:.85rem 1.25rem;border-top:1px solid #eaeaea;justify-content:flex-end}.add-theme-row[data-v-5356096c]{margin-top:.5rem}.btn-add-theme[data-v-5356096c]{font-size:.875rem;background:#eaf2ff;color:#2a6ab0;border:1px dashed #4a90d9;padding:.4rem 1rem;border-radius:6px;cursor:pointer}.btn-add-theme[data-v-5356096c]:hover{background:#d0e6ff}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:system-ui,-apple-system,sans-serif;background:#f5f5f5;color:#222}#app{min-height:100vh;display:flex;flex-direction:column}.app-header{background:#4a90d9;color:#fff;padding:.75rem 1.25rem;display:flex;align-items:center;gap:1rem;box-shadow:0 2px 4px #00000026}.app-title{font-size:1.25rem;font-weight:700}.ws-name{font-size:.9rem;opacity:.8}.dev-warning{flex:1;min-width:0;font-size:.8rem;font-weight:600;color:#7a4a00;background:#ffd76a;border:1px solid #e0a800;border-radius:4px;padding:.2rem .6rem}.ws-locale{display:inline-flex;align-items:center;gap:.3rem;font-size:.8rem;opacity:.85}.flag-icon{width:1.1em;height:auto;vertical-align:middle}.btn-save-ws,.btn-close-ws{background:#ffffff26;color:#fff;border:1px solid rgba(255,255,255,.4);border-radius:5px;padding:.35rem .85rem;font-size:.85rem;cursor:pointer;transition:background .15s}.save-btn-wrapper{margin-left:auto;display:inline-flex}.btn-save-ws.dirty{background:#e74c3c;border-color:#e74c3c}.btn-save-ws:hover:not(:disabled),.btn-close-ws:hover{background:#ffffff47}.btn-save-ws.dirty:hover:not(:disabled){background:#c0392b;border-color:#c0392b}.btn-save-ws:disabled{opacity:.55;cursor:not-allowed}.tab-bar{display:flex;background:#fff;border-bottom:2px solid #e0e0e0;padding:0 1rem;gap:.25rem;overflow-x:auto}.tab-btn{display:inline-flex;align-items:center;gap:.4rem;padding:.65rem 1rem;border:none;background:transparent;cursor:pointer;font-size:.9rem;color:#555;border-bottom:3px solid transparent;margin-bottom:-2px;white-space:nowrap;transition:color .15s,border-color .15s}.tab-icon{flex-shrink:0}.tab-btn:hover{color:#4a90d9}.tab-btn.active{color:#4a90d9;border-bottom-color:#4a90d9;font-weight:600}.tab-edit-mark{color:#b06a00;font-size:.9em;cursor:help}.close-edit-warning{font-size:.85rem;color:#7a4a00;background:#fff8e6;border:1px solid #f0d79a;border-radius:6px;padding:.5rem .7rem;margin-top:-.9rem;margin-bottom:1.5rem;line-height:1.4}.save-toast{position:fixed;top:1rem;right:1rem;padding:.6rem 1rem;border-radius:6px;cursor:pointer;z-index:250;box-shadow:0 4px 12px #0003;max-width:380px;font-size:.85rem;color:#fff}.save-toast.draft{background:#b06a00}.save-toast.blocked{background:#c0392b}.tab-content{flex:1;padding:1.5rem;max-width:1200px;width:100%;margin:0 auto}.tab-content.wide{max-width:none}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:100}.close-dialog{background:#fff;border-radius:10px;padding:2rem 2.5rem;max-width:420px;width:100%;box-shadow:0 8px 32px #0003}.close-dialog h3{font-size:1.1rem;margin-bottom:.6rem;color:#333}.close-dialog p{font-size:.9rem;color:#666;margin-bottom:1.5rem;line-height:1.5}.close-actions{display:flex;flex-direction:column;gap:.5rem}.btn-primary{padding:.65rem 1.25rem;background:#4a90d9;color:#fff;border:none;border-radius:6px;font-size:.95rem;cursor:pointer;transition:background .15s}.btn-primary:hover{background:#357abd}.btn-primary:disabled{opacity:.55;cursor:not-allowed}.btn-danger-outline{padding:.65rem 1.25rem;background:transparent;color:#c0392b;border:1px solid #c0392b;border-radius:6px;font-size:.95rem;cursor:pointer;transition:background .15s,color .15s}.btn-danger-outline:hover{background:#fdeaea}.btn-ghost{padding:.65rem 1.25rem;background:transparent;border:1px solid #ccc;border-radius:6px;cursor:pointer;color:#666;font-size:.95rem;transition:border-color .15s,color .15s}.btn-ghost:hover{border-color:#aaa;color:#333}
