.hand[data-v-128fc7ed]{background:#f5f5f5;border-radius:8px;padding:12px;min-width:220px}.seat-label[data-v-128fc7ed]{font-weight:700;font-size:21px;color:#333;margin-bottom:8px;text-align:center}.suits[data-v-128fc7ed]{display:flex;flex-direction:column;gap:4px}.suit-row[data-v-128fc7ed]{display:flex;align-items:center;gap:8px;font-family:Segoe UI,system-ui,sans-serif;font-size:24px}.suit-symbol[data-v-128fc7ed]{font-size:27px;width:28px;text-align:center}.suit-red[data-v-128fc7ed]{color:#d32f2f}.suit-black[data-v-128fc7ed]{color:#1a1a1a}.cards[data-v-128fc7ed]{font-weight:500;letter-spacing:1px}.card-played[data-v-128fc7ed]{opacity:.4;text-decoration:line-through;cursor:default;padding:2px 6px;-webkit-user-select:none;user-select:none}.hand.clickable[data-v-128fc7ed]{background:#e3f2fd;border:2px solid #2196f3}.clickable-cards[data-v-128fc7ed]{display:flex;gap:2px}.card-clickable[data-v-128fc7ed]{cursor:pointer;padding:2px 6px;border-radius:4px;transition:background .15s,transform .1s;-webkit-user-select:none;user-select:none}.card-clickable[data-v-128fc7ed]:hover{background:#bbdefb;transform:scale(1.1)}.card-clickable[data-v-128fc7ed]:active{background:#90caf9;transform:scale(.95)}.hidden-hand[data-v-128fc7ed]{display:flex;justify-content:center;align-items:center;min-height:80px}.card-back[data-v-128fc7ed]{width:50px;height:70px;background:linear-gradient(135deg,#1565c0,#0d47a1);border-radius:4px;border:2px solid #fff;box-shadow:0 2px 4px #0003}.hcp[data-v-128fc7ed]{margin-top:8px;text-align:center;font-size:12px;color:#666}.hand.hidden[data-v-128fc7ed]{opacity:.7}.hand.compact[data-v-128fc7ed]{padding:8px;min-width:180px}.hand.compact .seat-label[data-v-128fc7ed]{font-size:18px;margin-bottom:4px}.hand.compact .suit-row[data-v-128fc7ed]{font-size:21px;gap:6px}.hand.compact .suit-symbol[data-v-128fc7ed]{font-size:24px;width:24px}.hand.minimal[data-v-128fc7ed]{background:transparent;padding:4px 8px;min-width:auto}.minimal-hand[data-v-128fc7ed]{display:flex;align-items:center;gap:4px;font-size:24px}.seat-label-inline[data-v-128fc7ed]{font-weight:700;color:#666;margin-right:4px}.suit-symbol-inline[data-v-128fc7ed]{font-size:27px}.bridge-table[data-v-ec6230a9]{display:grid;grid-template-columns:1fr auto 1fr;grid-template-rows:auto auto auto;gap:8px;padding:16px;min-width:320px}.ns-column[data-v-ec6230a9]{grid-column:1 / -1;display:flex;justify-content:center}.position.west[data-v-ec6230a9]{grid-column:1;grid-row:2;justify-self:end}.center[data-v-ec6230a9]{grid-column:2;grid-row:2;min-width:20px;display:flex;align-items:center;justify-content:center}.position.east[data-v-ec6230a9]{grid-column:3;grid-row:2;justify-self:start}.north-row[data-v-ec6230a9]{grid-row:1}.south-row[data-v-ec6230a9]{grid-row:3}.bridge-table.compact[data-v-ec6230a9]{gap:4px;padding:8px;min-width:280px}@media (max-width: 600px){.bridge-table[data-v-ec6230a9]{gap:8px;padding:8px;min-width:260px}}.bidding-box[data-v-38ccb98f]{background:#e8e8e8;border-radius:8px;padding:16px;display:flex;flex-direction:column;gap:12px}.bid-section[data-v-38ccb98f]{display:flex;flex-direction:column;gap:8px}.levels[data-v-38ccb98f]{display:flex;gap:4px;justify-content:center}.level-btn[data-v-38ccb98f]{width:36px;height:36px;border:2px solid #ccc;border-radius:4px;background:#fff;font-size:18px;font-weight:700;cursor:pointer;transition:all .15s}.level-btn[data-v-38ccb98f]:hover{border-color:#007bff}.level-btn.active[data-v-38ccb98f]{background:#007bff;color:#fff;border-color:#007bff}.strains[data-v-38ccb98f]{display:flex;gap:4px;justify-content:center}.strain-btn[data-v-38ccb98f]{width:48px;height:42px;border:2px solid #ccc;border-radius:4px;background:#fff;font-size:20px;cursor:pointer;transition:all .15s}.strain-btn[data-v-38ccb98f]:hover:not(:disabled){border-color:#007bff;transform:translateY(-2px)}.strain-btn[data-v-38ccb98f]:disabled,.strain-btn.disabled[data-v-38ccb98f]{opacity:.4;cursor:not-allowed}.strain-btn.suit-red[data-v-38ccb98f]{color:#d32f2f}.strain-btn.suit-black[data-v-38ccb98f]{color:#1a1a1a}.strain-btn.suit-nt[data-v-38ccb98f]{font-size:14px;font-weight:700;color:#1a1a1a}.special-bids[data-v-38ccb98f]{display:flex;gap:8px;justify-content:center}.special-btn[data-v-38ccb98f]{padding:10px 16px;border:none;border-radius:4px;font-size:14px;font-weight:700;cursor:pointer;transition:all .15s}.special-btn[data-v-38ccb98f]:disabled{opacity:.4;cursor:not-allowed}.special-btn.pass[data-v-38ccb98f]{background:#4caf50;color:#fff}.special-btn.pass[data-v-38ccb98f]:hover{background:#388e3c}.special-btn.double[data-v-38ccb98f]{background:#ff5722;color:#fff}.special-btn.double[data-v-38ccb98f]:hover:not(:disabled){background:#e64a19}.special-btn.redouble[data-v-38ccb98f]{background:#2196f3;color:#fff}.special-btn.redouble[data-v-38ccb98f]:hover:not(:disabled){background:#1976d2}.auction-table[data-v-ac265db8]{background:#fff;border:2px solid #333;border-radius:4px;overflow:hidden;min-width:200px}.header[data-v-ac265db8]{display:flex;background:#333;color:#fff}.header-cell[data-v-ac265db8]{flex:1;text-align:center;padding:8px 4px;font-weight:700;font-size:14px}.rounds[data-v-ac265db8]{display:flex;flex-direction:column}.round[data-v-ac265db8]{display:flex;border-bottom:1px solid #ddd}.round[data-v-ac265db8]:last-child{border-bottom:none}.bid-cell[data-v-ac265db8]{flex:1;text-align:center;padding:8px 4px;font-size:16px;min-height:36px;display:flex;align-items:center;justify-content:center;border-right:1px solid #eee}.bid-cell[data-v-ac265db8]:last-child{border-right:none}.bid-cell[data-v-ac265db8] .red{color:#d32f2f}.bid-cell[data-v-ac265db8] .double{color:#ff5722;font-weight:700}.bid-cell[data-v-ac265db8] .redouble{color:#2196f3;font-weight:700}.turn-indicator[data-v-ac265db8]{color:#007bff;font-weight:700;font-size:20px;animation:pulse-ac265db8 1s ease-in-out infinite}@keyframes pulse-ac265db8{0%,to{opacity:1}50%{opacity:.5}}.current-turn[data-v-ac265db8]{background:#e3f2fd}.wrong-bid[data-v-ac265db8]{background:#ffcdd2;box-shadow:inset 0 0 0 2px #ef5350}.correct-bid[data-v-ac265db8]{background:#c8e6c9}.deal-info[data-v-5a844c49]{background:#f0f0f0;border-radius:8px;padding:12px 16px;text-align:center;overflow:visible;position:relative}.board-selector[data-v-5a844c49]{position:relative;display:inline-block}.board-number[data-v-5a844c49]{font-size:18px;font-weight:700;color:#333;margin-bottom:8px;cursor:pointer}.board-number[data-v-5a844c49]:hover{color:#1976d2}.board-popup[data-v-5a844c49]{position:absolute;top:100%;left:50%;transform:translate(-50%);background:#fff;border-radius:8px;box-shadow:0 4px 20px #0003;z-index:100;min-width:150px;max-height:300px;overflow:hidden}.popup-header[data-v-5a844c49]{padding:10px 16px;font-size:12px;font-weight:600;color:#666;text-transform:uppercase;border-bottom:1px solid #eee;background:#fafafa}.popup-list[data-v-5a844c49]{max-height:250px;overflow-y:auto}.popup-item[data-v-5a844c49]{display:block;width:100%;padding:10px 16px;border:none;background:none;font-size:14px;text-align:left;cursor:pointer;transition:background .15s}.popup-item[data-v-5a844c49]:hover{background:#e3f2fd}.popup-item.active[data-v-5a844c49]{background:#1976d2;color:#fff}.info-row[data-v-5a844c49],.contract-row[data-v-5a844c49]{display:flex;justify-content:center;gap:20px;margin-bottom:4px}.info-item[data-v-5a844c49]{display:flex;gap:4px;align-items:center}.label[data-v-5a844c49]{font-size:12px;color:#666}.value[data-v-5a844c49]{font-size:14px;font-weight:500}.vul-both[data-v-5a844c49]{color:#d32f2f;font-weight:700}.vul-partial[data-v-5a844c49]{color:#f57c00}.vul-none[data-v-5a844c49]{color:#4caf50}.contract[data-v-5a844c49]{font-size:16px;font-weight:700}.contract[data-v-5a844c49] .red{color:#d32f2f}.lead-card[data-v-5a844c49]{font-size:16px;font-weight:700}.lead-card[data-v-5a844c49] .red{color:#d32f2f}.lead-card[data-v-5a844c49] .black{color:#000}.title[data-v-5a844c49]{margin-top:8px;font-style:italic;color:#555;font-size:13px}.deal-navigator[data-v-b00558d5]{display:flex;align-items:center;justify-content:center;gap:16px;padding:12px;background:#f5f5f5;border-radius:8px}.nav-btn[data-v-b00558d5]{padding:10px 20px;border:none;background:#007bff;color:#fff;font-size:14px;font-weight:500;cursor:pointer;border-radius:4px;transition:all .15s}.nav-btn[data-v-b00558d5]:hover:not(:disabled){background:#0056b3}.nav-btn[data-v-b00558d5]:disabled{background:#ccc;cursor:not-allowed}.deal-counter[data-v-b00558d5]{display:flex;align-items:center;justify-content:center;padding:8px 16px;background:#fff;border-radius:4px;border:1px solid #ddd}.deal-number[data-v-b00558d5]{font-size:15px;font-weight:500;color:#333}.deal-selector[data-v-b00558d5]{display:flex;align-items:center;gap:8px}.deal-selector select[data-v-b00558d5]{padding:8px 12px;font-size:14px;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer;min-width:150px}.deal-count[data-v-b00558d5]{font-size:14px;color:#666;white-space:nowrap}@media (max-width: 500px){.deal-navigator[data-v-b00558d5]{flex-wrap:wrap;gap:8px}.nav-btn[data-v-b00558d5]{padding:8px 16px;font-size:13px}.deal-selector[data-v-b00558d5]{order:-1;width:100%;justify-content:center}}.feedback-panel[data-v-04368462]{background:#fff;border-radius:8px;padding:16px;box-shadow:0 2px 8px #00000026;max-width:400px}.feedback-panel.wrong[data-v-04368462]{border-left:4px solid #d32f2f}.feedback-panel.correct[data-v-04368462]{border-left:4px solid #4caf50}.feedback-panel.info[data-v-04368462]{border-left:4px solid #2196f3}.feedback-header[data-v-04368462]{display:flex;align-items:center;gap:8px;margin-bottom:12px}.icon[data-v-04368462]{font-size:20px;font-weight:700}.wrong .icon[data-v-04368462]{color:#d32f2f}.correct .icon[data-v-04368462]{color:#4caf50}.title[data-v-04368462]{font-size:18px;font-weight:700}.feedback-content[data-v-04368462]{margin-bottom:12px}.bid-comparison[data-v-04368462]{display:flex;gap:20px}.bid-item[data-v-04368462]{display:flex;flex-direction:column;gap:4px}.bid-item .label[data-v-04368462]{font-size:12px;color:#666}.bid-item .bid[data-v-04368462]{font-size:24px;font-weight:700}.bid-item .bid[data-v-04368462] .red,.bid-item .bid[data-v-04368462] .suit-red{color:#d32f2f}.bid-item .bid[data-v-04368462] .suit-black{color:#1a1a1a}.your-bid .bid[data-v-04368462]{color:#d32f2f;text-decoration:line-through}.correct-bid .bid[data-v-04368462]{color:#4caf50}.commentary[data-v-04368462]{font-size:14px;line-height:1.5;color:#333;background:#f5f5f5;padding:12px;border-radius:4px;margin-bottom:12px;white-space:pre-wrap}.actions[data-v-04368462]{display:flex;justify-content:flex-end}.btn[data-v-04368462]{padding:10px 20px;border:none;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:all .15s}.btn.continue[data-v-04368462]{background:#007bff;color:#fff}.btn.continue[data-v-04368462]:hover{background:#0056b3}.commentary[data-v-04368462] .suit-red{color:#d32f2f}.commentary[data-v-04368462] .suit-black{color:#000}.welcome-screen[data-v-5574f6fd]{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:linear-gradient(135deg,#667eea,#764ba2)}.welcome-card[data-v-5574f6fd]{background:#fff;border-radius:16px;box-shadow:0 10px 40px #0003;max-width:450px;width:100%;overflow:hidden}.welcome-header[data-v-5574f6fd]{background:#1a237e;color:#fff;padding:24px;text-align:center}.welcome-header h1[data-v-5574f6fd]{font-size:22px;font-weight:600;margin:0}.welcome-body[data-v-5574f6fd]{padding:32px}.welcome-body h2[data-v-5574f6fd]{font-size:24px;color:#333;margin:0 0 8px}.subtitle[data-v-5574f6fd]{color:#666;margin:0 0 24px;font-size:15px}.user-form[data-v-5574f6fd]{display:flex;flex-direction:column;gap:20px}.form-group[data-v-5574f6fd]{display:flex;flex-direction:column;gap:6px}.form-group label[data-v-5574f6fd]{font-size:14px;font-weight:500;color:#444}.form-group input[type=text][data-v-5574f6fd]{padding:12px 14px;border:2px solid #e0e0e0;border-radius:8px;font-size:16px;transition:border-color .2s}.form-group input[type=text][data-v-5574f6fd]:focus,.form-group input[type=email][data-v-5574f6fd]:focus{outline:none;border-color:#667eea}.form-group input[type=email][data-v-5574f6fd]{padding:12px 14px;border:2px solid #e0e0e0;border-radius:8px;font-size:16px;transition:border-color .2s}.field-hint[data-v-5574f6fd]{font-size:12px;color:#888;font-style:italic}.form-group input.has-error[data-v-5574f6fd]{border-color:#d32f2f}.error-message[data-v-5574f6fd]{color:#d32f2f;font-size:13px}.checkbox-group[data-v-5574f6fd]{display:flex;flex-direction:column;gap:10px;padding:8px 0}.checkbox-label[data-v-5574f6fd]{display:flex;align-items:center;gap:10px;cursor:pointer;font-size:15px}.checkbox-label input[type=checkbox][data-v-5574f6fd]{width:18px;height:18px;cursor:pointer}.single-classroom[data-v-5574f6fd]{padding:12px 14px;background:#f5f5f5;border-radius:8px;font-size:15px;color:#333}.consent-group[data-v-5574f6fd]{padding-top:8px;border-top:1px solid #eee}.consent-label[data-v-5574f6fd]{font-weight:400}.consent-label span[data-v-5574f6fd]{font-size:14px;color:#555}.details-toggle[data-v-5574f6fd]{background:none;border:none;color:#667eea;font-size:13px;cursor:pointer;padding:4px 0;text-align:left}.details-toggle[data-v-5574f6fd]:hover{text-decoration:underline}.consent-details[data-v-5574f6fd]{margin-top:12px;padding:16px;background:#f8f9fa;border-radius:8px;font-size:13px;color:#555;line-height:1.5}.consent-details p[data-v-5574f6fd]{margin:0 0 8px}.consent-details ul[data-v-5574f6fd]{margin:0 0 12px;padding-left:20px}.consent-details li[data-v-5574f6fd]{margin-bottom:4px}.consent-note[data-v-5574f6fd]{font-style:italic;color:#777}.submit-btn[data-v-5574f6fd]{padding:14px 24px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:transform .2s,box-shadow .2s}.submit-btn[data-v-5574f6fd]:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px #667eea66}.submit-btn[data-v-5574f6fd]:disabled{opacity:.6;cursor:not-allowed}.switch-link[data-v-5574f6fd],.back-link[data-v-5574f6fd]{display:block;width:100%;margin-top:16px;padding:10px;background:none;border:none;color:#667eea;font-size:14px;cursor:pointer;text-align:center}.switch-link[data-v-5574f6fd]:hover,.back-link[data-v-5574f6fd]:hover{text-decoration:underline}.returning[data-v-5574f6fd]{text-align:center}.returning .submit-btn[data-v-5574f6fd]{width:100%}.switcher[data-v-5574f6fd]{text-align:center}.user-list[data-v-5574f6fd]{display:flex;flex-direction:column;gap:10px;margin-bottom:20px}.user-item[data-v-5574f6fd]{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:14px 16px;background:#f8f9fa;border:2px solid #e0e0e0;border-radius:8px;cursor:pointer;transition:all .2s}.user-item[data-v-5574f6fd]:hover{border-color:#667eea;background:#f0f4ff}.user-item.is-current[data-v-5574f6fd]{border-color:#667eea;background:#e8efff}.user-name[data-v-5574f6fd]{font-weight:500;color:#333}.user-email[data-v-5574f6fd],.user-class[data-v-5574f6fd]{font-size:13px;color:#777}.add-user-btn[data-v-5574f6fd]{width:100%;padding:14px;background:#fff;border:2px dashed #ccc;border-radius:8px;color:#666;font-size:15px;cursor:pointer;transition:all .2s}.add-user-btn[data-v-5574f6fd]:hover{border-color:#667eea;color:#667eea}.recovery-sent[data-v-5574f6fd],.recovery-claiming[data-v-5574f6fd]{text-align:center}.recovery-info[data-v-5574f6fd]{margin:24px 0;padding:20px;background:#e8f5e9;border-radius:8px;color:#2e7d32}.recovery-info p[data-v-5574f6fd]{margin:0 0 12px;font-size:15px}.recovery-info p[data-v-5574f6fd]:last-child{margin-bottom:0}.recovery-note[data-v-5574f6fd]{font-size:14px;color:#558b2f;font-style:italic}.code-entry[data-v-5574f6fd]{display:flex;flex-direction:column;gap:12px;margin:20px 0}.code-entry label[data-v-5574f6fd]{font-size:14px;font-weight:500;color:#444}.code-input[data-v-5574f6fd]{padding:14px;border:2px solid #e0e0e0;border-radius:8px;font-size:28px;font-family:Courier New,Courier,monospace;text-align:center;letter-spacing:8px;transition:border-color .2s}.code-input[data-v-5574f6fd]:focus{outline:none;border-color:#667eea}.code-input[data-v-5574f6fd]::placeholder{color:#ccc;letter-spacing:8px}.recovery-error-panel[data-v-5574f6fd]{margin:24px 0;padding:20px;background:#ffebee;border-radius:8px}.recovery-error-panel .error-message[data-v-5574f6fd]{margin-bottom:16px}.loading-spinner[data-v-5574f6fd]{display:flex;justify-content:center;padding:32px}.spinner[data-v-5574f6fd]{width:40px;height:40px;border:4px solid #e0e0e0;border-top-color:#667eea;border-radius:50%;animation:spin-5574f6fd 1s linear infinite}@keyframes spin-5574f6fd{to{transform:rotate(360deg)}}@media (max-width: 480px){.welcome-body[data-v-5574f6fd]{padding:24px}.welcome-header h1[data-v-5574f6fd]{font-size:18px}.welcome-body h2[data-v-5574f6fd]{font-size:20px}}.settings-overlay[data-v-4e1a2ea5]{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.settings-panel[data-v-4e1a2ea5]{background:#fff;border-radius:12px;max-width:500px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 10px 40px #0003}.settings-header[data-v-4e1a2ea5]{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #eee}.settings-header h2[data-v-4e1a2ea5]{margin:0;font-size:20px;color:#333}.close-btn[data-v-4e1a2ea5]{background:none;border:none;font-size:28px;color:#666;cursor:pointer;padding:0;line-height:1}.close-btn[data-v-4e1a2ea5]:hover{color:#333}.settings-body[data-v-4e1a2ea5]{padding:24px}.settings-section[data-v-4e1a2ea5]{margin-bottom:28px}.settings-section[data-v-4e1a2ea5]:last-child{margin-bottom:0}.settings-section h3[data-v-4e1a2ea5]{font-size:16px;color:#333;margin:0 0 16px;padding-bottom:8px;border-bottom:2px solid #667eea}.settings-section h4[data-v-4e1a2ea5]{font-size:13px;color:#666;text-transform:uppercase;letter-spacing:.5px;margin:16px 0 8px}.info-row[data-v-4e1a2ea5]{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid #f0f0f0}.info-label[data-v-4e1a2ea5]{color:#666;font-size:14px}.info-value[data-v-4e1a2ea5]{color:#333;font-size:14px;font-weight:500}.info-value.enabled[data-v-4e1a2ea5]{color:#4caf50}.info-value.disabled[data-v-4e1a2ea5]{color:#999}.button-row[data-v-4e1a2ea5]{display:flex;gap:10px;margin-top:16px}.primary-btn[data-v-4e1a2ea5],.secondary-btn[data-v-4e1a2ea5]{flex:1;padding:10px 16px;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}.primary-btn[data-v-4e1a2ea5]{background:#667eea;color:#fff;border:none}.primary-btn[data-v-4e1a2ea5]:hover{background:#5a6fd6}.secondary-btn[data-v-4e1a2ea5]{background:#fff;color:#667eea;border:1px solid #667eea}.secondary-btn[data-v-4e1a2ea5]:hover{background:#f0f4ff}.edit-form[data-v-4e1a2ea5]{display:flex;flex-direction:column;gap:16px}.form-group[data-v-4e1a2ea5]{display:flex;flex-direction:column;gap:6px}.form-group label[data-v-4e1a2ea5]{font-size:14px;color:#444}.form-group input[type=text][data-v-4e1a2ea5]{padding:10px 12px;border:1px solid #ddd;border-radius:6px;font-size:15px}.form-group input[type=text][data-v-4e1a2ea5]:focus{outline:none;border-color:#667eea}.checkbox-label[data-v-4e1a2ea5]{display:flex;align-items:center;gap:10px;cursor:pointer;font-size:14px}.checkbox-label input[data-v-4e1a2ea5]{width:16px;height:16px}.assignment-list[data-v-4e1a2ea5]{display:flex;flex-direction:column;gap:12px}.assignment-item[data-v-4e1a2ea5]{padding:12px;background:#f8f9fa;border-radius:8px}.assignment-item.completed[data-v-4e1a2ea5]{background:#e8f5e9}.assignment-header[data-v-4e1a2ea5]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.assignment-name[data-v-4e1a2ea5]{font-weight:500;color:#333}.assignment-progress[data-v-4e1a2ea5]{font-size:14px;color:#667eea;font-weight:600}.assignment-check[data-v-4e1a2ea5]{color:#4caf50;font-weight:700}.progress-bar[data-v-4e1a2ea5]{height:6px;background:#e0e0e0;border-radius:3px;overflow:hidden;margin-bottom:8px}.progress-fill[data-v-4e1a2ea5]{height:100%;background:linear-gradient(90deg,#667eea,#764ba2);border-radius:3px;transition:width .3s ease}.assignment-meta[data-v-4e1a2ea5]{display:flex;justify-content:space-between;font-size:12px;color:#666}.section-note[data-v-4e1a2ea5]{font-size:14px;color:#666;font-style:italic}.toggle-row[data-v-4e1a2ea5]{padding:10px 0}.toggle-label[data-v-4e1a2ea5]{display:flex;align-items:center;gap:10px;cursor:pointer;font-size:14px;color:#444}.toggle-label input[data-v-4e1a2ea5]{width:16px;height:16px}@media (max-width: 480px){.settings-panel[data-v-4e1a2ea5]{max-height:100vh;border-radius:0}.button-row[data-v-4e1a2ea5]{flex-direction:column}}.classroom-row[data-v-4e1a2ea5]{display:flex;align-items:center;justify-content:space-between;padding:8px 0;border-bottom:1px solid #f0f0f0}.classroom-name-text[data-v-4e1a2ea5]{font-size:14px;color:#333;font-weight:500}.leave-btn[data-v-4e1a2ea5]{background:none;border:1px solid #ddd;border-radius:4px;padding:4px 12px;font-size:13px;color:#666;cursor:pointer;transition:all .2s}.leave-btn[data-v-4e1a2ea5]:hover:not(:disabled){color:#ef4444;border-color:#ef4444;background:#fee2e2}.leave-btn[data-v-4e1a2ea5]:disabled{opacity:.5;cursor:not-allowed}.become-teacher-btn[data-v-4e1a2ea5]{margin-top:12px;width:100%;padding:10px 16px;background:linear-gradient(135deg,var(--green-dark, #2d6a4f),#1d4e89);color:#fff;border:none;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:opacity .2s}.become-teacher-btn[data-v-4e1a2ea5]:hover{opacity:.9}.remove-device-btn[data-v-4e1a2ea5]{margin-top:12px;padding:8px 16px;background:#fff;color:#666;border:1px solid #ddd;border-radius:6px;font-size:14px;cursor:pointer;transition:all .2s}.remove-device-btn[data-v-4e1a2ea5]:hover{color:#ef4444;border-color:#ef4444;background:#fee2e2}.remove-note[data-v-4e1a2ea5]{font-size:12px;color:#999;margin-top:6px}.assignment-banner[data-v-ee6492bc]{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:12px 16px;border-radius:8px;margin-bottom:16px;position:relative;overflow:hidden}.assignment-banner.complete[data-v-ee6492bc]{background:linear-gradient(135deg,#4caf50,#2e7d32)}.banner-content[data-v-ee6492bc]{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.assignment-info[data-v-ee6492bc]{flex:1;min-width:200px}.assignment-title[data-v-ee6492bc]{display:flex;align-items:center;gap:8px;margin-bottom:4px}.assignment-label[data-v-ee6492bc]{font-size:12px;opacity:.9;text-transform:uppercase;letter-spacing:.5px}.assignment-name[data-v-ee6492bc]{font-weight:600;font-size:15px}.assignment-meta[data-v-ee6492bc]{display:flex;align-items:center;gap:12px;font-size:13px;opacity:.9}.due-text[data-v-ee6492bc]{padding:2px 8px;background:#fff3;border-radius:4px;font-size:12px}.due-text.urgent[data-v-ee6492bc]{background:#ffc10766}.due-text.overdue[data-v-ee6492bc]{background:#f4433666}.progress-bar[data-v-ee6492bc]{flex:0 0 120px;height:8px;background:#ffffff4d;border-radius:4px;overflow:hidden}.progress-fill[data-v-ee6492bc]{height:100%;background:#fff;border-radius:4px;transition:width .3s ease}.progress-fill.complete[data-v-ee6492bc]{background:#c8e6c9}.exit-btn[data-v-ee6492bc]{padding:6px 12px;background:#fff3;border:1px solid rgba(255,255,255,.4);border-radius:4px;color:#fff;font-size:13px;cursor:pointer;transition:background .2s;white-space:nowrap}.exit-btn[data-v-ee6492bc]:hover{background:#ffffff4d}.complete-badge[data-v-ee6492bc]{position:absolute;top:8px;right:12px;background:#fff;color:#2e7d32;padding:4px 10px;border-radius:12px;font-size:12px;font-weight:600}.return-banner[data-v-ee6492bc]{background:#f5f5f5;border:1px solid #e0e0e0;border-left:4px solid #667eea;padding:10px 14px;border-radius:4px;margin-bottom:16px;cursor:pointer;display:flex;align-items:center;gap:10px;transition:background .2s}.return-banner[data-v-ee6492bc]:hover{background:#eee}.return-icon[data-v-ee6492bc]{font-size:18px;color:#667eea}.return-text[data-v-ee6492bc]{font-size:14px;color:#555}@media (max-width: 500px){.banner-content[data-v-ee6492bc]{flex-direction:column;align-items:stretch;gap:10px}.progress-bar[data-v-ee6492bc]{flex:0 0 8px;width:100%}.exit-btn[data-v-ee6492bc]{align-self:flex-start}.complete-badge[data-v-ee6492bc]{position:static;align-self:flex-start;margin-top:8px}}.announcement-banner[data-v-4b12409b]{display:flex;align-items:center;justify-content:center;gap:12px;padding:10px 40px 10px 16px;font-size:14px;font-family:var(--font-body, "DM Sans", sans-serif);position:relative}.announcement-banner.info[data-v-4b12409b]{background:#e3f2fd;color:#1565c0;border-bottom:1px solid #bbdefb}.announcement-banner.warning[data-v-4b12409b]{background:#fff8e1;color:#e65100;border-bottom:1px solid #ffe082}.announcement-banner.urgent[data-v-4b12409b]{background:#ffebee;color:#c62828;border-bottom:1px solid #ef9a9a}.announcement-text[data-v-4b12409b]{text-align:center;line-height:1.4}.announcement-text[data-v-4b12409b] .ann-circle{display:inline-block;width:16px;height:16px;border-radius:50%;vertical-align:middle;margin:0 1px}.dismiss-btn[data-v-4b12409b]{position:absolute;right:12px;top:50%;transform:translateY(-50%);background:none;border:none;font-size:20px;cursor:pointer;opacity:.6;padding:0 4px;line-height:1;color:inherit}.dismiss-btn[data-v-4b12409b]:hover{opacity:1}.sync-status[data-v-8457149a]{display:inline-flex;align-items:center;padding:4px 10px;border-radius:16px;font-size:12px;cursor:pointer;transition:all .2s ease;-webkit-user-select:none;user-select:none}.sync-status[data-v-8457149a]:hover{transform:scale(1.02)}.status-content[data-v-8457149a]{display:flex;align-items:center;gap:6px}.icon[data-v-8457149a]{font-size:14px}.status-text[data-v-8457149a]{white-space:nowrap}.badge[data-v-8457149a]{background:#ffffff4d;padding:2px 6px;border-radius:10px;font-size:11px;font-weight:600}.sync-status.syncing[data-v-8457149a]{background:#e3f2fd;color:#1976d2}.spinner[data-v-8457149a]{width:12px;height:12px;border:2px solid #90caf9;border-top-color:#1976d2;border-radius:50%;animation:spin-8457149a .8s linear infinite}@keyframes spin-8457149a{to{transform:rotate(360deg)}}.sync-status.offline[data-v-8457149a]{background:#fff3e0;color:#e65100}.sync-status.error[data-v-8457149a]{background:#ffebee;color:#c62828}.retry-btn[data-v-8457149a]{background:#c62828;color:#fff;border:none;padding:2px 8px;border-radius:10px;font-size:11px;cursor:pointer;margin-left:4px}.retry-btn[data-v-8457149a]:hover{background:#b71c1c}.sync-status.pending[data-v-8457149a]{background:#fff8e1;color:#f57f17}.sync-status.synced[data-v-8457149a]{background:#e8f5e9;color:#2e7d32}.sync-status.synced[data-v-8457149a]{opacity:.7}.sync-status.synced[data-v-8457149a]:hover{opacity:1}.sparkline-empty[data-v-a14e2bb7]{display:flex;align-items:center;justify-content:center;color:var(--text-muted, #9ca3af);font-size:11px;height:70px}.details-overlay[data-v-2176fcbb]{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1100;padding:20px}.details-panel[data-v-2176fcbb]{background:#fff;border:1px solid var(--card-border, #e0ddd7);border-radius:16px;padding:24px 24px 20px;max-width:740px;width:95vw;max-height:90vh;overflow:auto;box-shadow:0 8px 32px #00000026}.details-header[data-v-2176fcbb]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px}.details-title[data-v-2176fcbb]{margin:0;font-size:20px;font-weight:600;color:var(--text-primary, #1a1a1a)}.details-subtitle[data-v-2176fcbb]{margin:4px 0 0;font-size:12px;color:var(--text-secondary, #6b7280)}.details-close-btn[data-v-2176fcbb]{background:none;border:1px solid var(--card-border, #e0ddd7);color:var(--text-secondary, #6b7280);border-radius:8px;padding:4px 12px;cursor:pointer;font-size:12px;font-family:inherit}.details-close-btn[data-v-2176fcbb]:hover{border-color:#999;color:var(--text-primary, #1a1a1a)}.details-chart[data-v-2176fcbb]{display:block}.obs-dot[data-v-2176fcbb]{cursor:pointer;transition:opacity .15s}.obs-dot[data-v-2176fcbb]:hover{opacity:1!important;filter:brightness(1.1)}.details-activity[data-v-2176fcbb]{margin-top:16px;margin-bottom:8px}.stats-row[data-v-2176fcbb]{display:flex;gap:24px;margin-bottom:10px}.stat-item[data-v-2176fcbb]{text-align:center}.stat-value[data-v-2176fcbb]{font-size:18px;font-weight:600;color:var(--text-primary, #1a1a1a)}.stat-label[data-v-2176fcbb]{font-size:10px;color:var(--text-secondary, #6b7280);text-transform:uppercase;letter-spacing:.05em}.activity-chart[data-v-2176fcbb]{display:block}.activity-dates[data-v-2176fcbb]{display:flex;justify-content:space-between;font-size:10px;color:var(--text-secondary, #6b7280);margin-top:2px}.details-legend[data-v-2176fcbb]{display:flex;gap:14px;margin-top:12px;flex-wrap:wrap}.legend-item[data-v-2176fcbb]{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--text-secondary, #6b7280)}.legend-dot[data-v-2176fcbb]{width:10px;height:10px;border-radius:50%;display:inline-block}.obs-viewer[data-v-274941c4]{--felt: #1a2e1a;--felt-mid: #223322;--card-bg: #f8f5ee;--card-border: #d4c9a8;--text-primary: #1c1810;--text-secondary: #5a5240;--text-label: #8a7d60;--gold: #c9a227;--red: #c0392b;--green: #27ae60;--correct-bg: #eaf7ee;--incorrect-bg: #fdf0ee;--correct-border: #a8d5b5;--incorrect-border:#f5bbb4;position:fixed;font-family:"DM Sans",var(--font-body, sans-serif);background:var(--felt);border-radius:12px;overflow:hidden;box-shadow:0 8px 40px #00000073;max-width:960px;width:680px;-webkit-user-select:none;user-select:none;touch-action:none;cursor:grab}.obs-viewer[data-v-274941c4]:active{cursor:grabbing}.obs-viewer--mobile[data-v-274941c4]{left:0!important;top:0!important;width:100%!important;height:100%!important;max-width:100%;border-radius:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}[data-v-274941c4],[data-v-274941c4]:before,[data-v-274941c4]:after{box-sizing:border-box}.obs-header[data-v-274941c4]{background:var(--felt-mid);border-bottom:2px solid var(--gold);padding:10px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.obs-header-left[data-v-274941c4],.obs-header-right[data-v-274941c4]{display:flex;align-items:center;gap:8px}.suit-icon[data-v-274941c4]{font-size:1.1rem;color:var(--gold);line-height:1}.suit-icon-sm[data-v-274941c4]{font-size:.9rem;color:var(--gold);line-height:1}.obs-title[data-v-274941c4]{font-family:var(--font-heading, "Crimson Pro", Georgia, serif);font-size:1.1rem;font-weight:600;color:var(--gold);letter-spacing:.03em}.obs-id[data-v-274941c4]{font-family:monospace;font-size:.68rem;color:#7a9a7a;background:#ffffff0f;padding:2px 6px;border-radius:4px}.timestamp[data-v-274941c4]{font-family:monospace;font-size:.75rem;color:#8aaa8a}.result-badge[data-v-274941c4]{font-size:.72rem;font-weight:600;padding:3px 10px;border-radius:20px;letter-spacing:.04em}.result-badge.correct[data-v-274941c4]{background:var(--correct-bg);color:var(--green);border:1px solid var(--correct-border)}.result-badge.incorrect[data-v-274941c4]{background:var(--incorrect-bg);color:var(--red);border:1px solid var(--incorrect-border)}.result-badge.corrected[data-v-274941c4]{background:#fef3e0;color:#b45309;border:1px solid #f5c882}.close-btn[data-v-274941c4]{background:none;border:none;color:#8aaa8a;font-size:1.2rem;cursor:pointer;padding:0 4px;line-height:1}.close-btn[data-v-274941c4]:hover{color:#fff}.obs-body[data-v-274941c4]{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:12px}@media (max-width: 680px){.obs-body[data-v-274941c4]{grid-template-columns:1fr}.obs-header[data-v-274941c4],.obs-header[data-v-274941c4]:active{cursor:default}}.obs-col[data-v-274941c4]{display:flex;flex-direction:column;gap:10px}.card[data-v-274941c4]{background:var(--card-bg);border:1px solid var(--card-border);border-radius:8px;padding:12px 14px;box-shadow:0 2px 8px #0000001f}.card-title[data-v-274941c4]{font-family:var(--font-heading, "Crimson Pro", Georgia, serif);font-size:.85rem;font-weight:600;color:var(--text-secondary);margin-bottom:10px;padding-bottom:6px;border-bottom:1px solid var(--card-border);display:flex;align-items:center;gap:6px;letter-spacing:.04em;text-transform:uppercase}.hands-grid[data-v-274941c4]{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto auto auto;gap:4px;align-items:center;justify-items:center}.compass-north[data-v-274941c4],.compass-south[data-v-274941c4]{display:flex;justify-content:center}.compass-center[data-v-274941c4]{display:flex;align-items:center;justify-content:center;min-height:70px;width:100%}.compass-rose[data-v-274941c4]{position:relative;width:48px;height:48px}.cr-n[data-v-274941c4],.cr-s[data-v-274941c4],.cr-w[data-v-274941c4],.cr-e[data-v-274941c4]{position:absolute;font-size:.6rem;font-weight:600;color:var(--text-label)}.cr-n[data-v-274941c4]{top:0;left:50%;transform:translate(-50%)}.cr-s[data-v-274941c4]{bottom:0;left:50%;transform:translate(-50%)}.cr-w[data-v-274941c4]{left:0;top:50%;transform:translateY(-50%)}.cr-e[data-v-274941c4]{right:0;top:50%;transform:translateY(-50%)}.deal-meta-top[data-v-274941c4]{display:flex;flex-direction:column;gap:3px;align-self:end;justify-self:start;padding-right:6px}.deal-meta-bottom[data-v-274941c4]{display:flex;flex-direction:column;gap:3px;align-self:start;justify-self:start;padding-right:6px;padding-top:4px;border-top:1px dashed var(--card-border)}.meta-row[data-v-274941c4]{display:flex;flex-direction:column;line-height:1.2}.meta-label[data-v-274941c4]{font-size:.55rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-label)}.meta-value[data-v-274941c4]{font-size:.75rem;font-weight:600;color:var(--text-primary)}.meta-contract[data-v-274941c4]{font-family:var(--font-heading, "Crimson Pro", Georgia, serif);font-size:.8rem;font-weight:700;color:var(--text-primary);letter-spacing:.02em}.hand-cell[data-v-274941c4]{background:#fff;border:1px solid var(--card-border);border-radius:6px;padding:6px 8px;font-size:.75rem;min-width:80px}.hand-cell.student[data-v-274941c4]{border-color:var(--gold);box-shadow:0 0 0 2px #c9a22740;background:#fffdf5}.seat-label[data-v-274941c4]{font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--text-label);margin-bottom:4px;display:flex;align-items:center;gap:5px}.you-tag[data-v-274941c4]{font-size:.55rem;background:var(--gold);color:#fff;padding:1px 4px;border-radius:3px;letter-spacing:.06em}.holding-row[data-v-274941c4]{display:flex;align-items:baseline;gap:3px;line-height:1.4}.suit-pip[data-v-274941c4]{font-size:.8rem;line-height:1}.suit-pip.red[data-v-274941c4]{color:var(--red)}.suit-pip.black[data-v-274941c4]{color:var(--text-primary)}.cards[data-v-274941c4]{font-family:monospace;font-size:.72rem;color:var(--text-primary);letter-spacing:.04em}.hidden-hand[data-v-274941c4]{font-size:.7rem;color:var(--text-label);font-style:italic}.prompt-meta[data-v-274941c4]{display:flex;align-items:center;gap:6px;margin-bottom:8px;padding-bottom:6px;border-bottom:1px dashed var(--card-border);flex-wrap:wrap}.prompt-meta-label[data-v-274941c4]{font-size:.68rem;font-weight:600;color:var(--gold);letter-spacing:.04em}.prompt-meta-sep[data-v-274941c4]{color:var(--text-label);font-size:.7rem}.prompt-meta-auction[data-v-274941c4]{font-size:.68rem;color:var(--text-label)}.prompt-meta-bids[data-v-274941c4]{font-family:monospace;color:var(--text-secondary);font-weight:500}.auction-header[data-v-274941c4]{display:grid;grid-template-columns:repeat(4,1fr);margin-bottom:3px}.auction-dir[data-v-274941c4]{font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--text-label);text-align:center}.auction-row[data-v-274941c4]{display:grid;grid-template-columns:repeat(4,1fr);gap:2px;margin-bottom:2px}.auction-bid[data-v-274941c4]{font-family:monospace;font-size:.75rem;text-align:center;padding:2px;border-radius:4px;color:var(--text-primary);min-height:1.5em}.auction-bid.future[data-v-274941c4]{color:#b8ad96;opacity:.45}.split-cell[data-v-274941c4]{display:flex;align-items:center;justify-content:center;gap:3px;padding:1px 0}.pill-expected[data-v-274941c4]{font-family:monospace;font-size:.68rem;font-weight:700;color:#1e7a3e;background:#d4f0dd;border:1px solid #a8d5b5;border-radius:4px;padding:1px 4px;line-height:1.5;white-space:nowrap}.pill-student[data-v-274941c4]{font-family:monospace;font-size:.68rem;font-weight:700;color:#a52a1e;background:#fde8e6;border:1px solid #f5bbb4;border-radius:4px;padding:1px 4px;line-height:1.5;white-space:nowrap}.pill-corrected[data-v-274941c4]{font-family:monospace;font-size:.68rem;font-weight:700;color:#7c4d00;background:#fef3e0;border:1px solid #f5c882;border-radius:4px;padding:1px 4px;line-height:1.5;white-space:nowrap}.auction-legend[data-v-274941c4]{display:flex;gap:12px;margin-top:8px;padding-top:6px;border-top:1px dashed var(--card-border)}.legend-item[data-v-274941c4]{display:flex;align-items:center;gap:4px;font-size:.62rem;color:var(--text-label);letter-spacing:.03em}.legend-dot[data-v-274941c4]{width:7px;height:7px;border-radius:2px;display:inline-block}.legend-dot.green[data-v-274941c4]{background:#a8d5b5}.legend-dot.red[data-v-274941c4]{background:#f5bbb4}.legend-dot.gray[data-v-274941c4]{background:#c8bfa6;opacity:.5}.prompts-list[data-v-274941c4]{margin-top:8px;display:flex;flex-direction:column;gap:4px}.prompt-row[data-v-274941c4]{display:flex;align-items:center;gap:8px;font-size:.72rem;padding:3px 6px;border-radius:4px}.prompt-correct[data-v-274941c4]{background:var(--correct-bg)}.prompt-wrong[data-v-274941c4]{background:var(--incorrect-bg)}.prompt-num[data-v-274941c4]{font-weight:700;font-family:monospace;color:var(--text-label);min-width:20px}.prompt-detail[data-v-274941c4]{display:flex;align-items:center;gap:4px;color:var(--text-secondary)}.prompt-ok[data-v-274941c4]{color:var(--green);font-weight:700}.prompt-time[data-v-274941c4]{font-family:monospace;font-size:.62rem;color:var(--text-label);margin-left:auto}.pill-expected-sm[data-v-274941c4],.pill-student-sm[data-v-274941c4]{font-family:monospace;font-size:.65rem;font-weight:700;border-radius:3px;padding:0 3px;line-height:1.5}.pill-expected-sm[data-v-274941c4]{color:#1e6b3e;background:#e3f4ea;border:1px solid #a8d5b5}.pill-student-sm[data-v-274941c4]{color:#a52a1e;background:#fde8e6;border:1px solid #f5bbb4}.info-grid[data-v-274941c4]{display:grid;grid-template-columns:1fr 1fr;gap:6px 14px}.info-item[data-v-274941c4]{display:flex;flex-direction:column;gap:1px}.info-item.full-width[data-v-274941c4]{grid-column:1 / -1}.info-label[data-v-274941c4]{font-size:.62rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-label)}.info-value[data-v-274941c4]{font-size:.82rem;color:var(--text-primary);font-weight:500}.info-value.mono[data-v-274941c4]{font-family:monospace;font-size:.68rem;color:var(--text-secondary);word-break:break-all}.student-progress-panel[data-v-81e679f8]{padding:4px 0}.sp-empty[data-v-81e679f8]{text-align:center;color:var(--text-muted, #9ca3af);padding:40px 20px}.sp-header[data-v-81e679f8]{margin-bottom:16px}.sp-header-row[data-v-81e679f8]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.sp-name-badge[data-v-81e679f8]{font-size:11px;background:var(--bg-warm, #f5f3ef);color:var(--text-secondary, #6b7280);padding:2px 8px;border-radius:20px;border:1px solid var(--card-border, #e0ddd7)}.sp-meta[data-v-81e679f8]{font-size:12px;color:var(--text-secondary, #6b7280)}.sp-legend[data-v-81e679f8]{display:flex;gap:14px;margin-bottom:16px;flex-wrap:wrap;align-items:center}.sp-legend-item[data-v-81e679f8]{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--text-secondary, #6b7280)}.sp-legend-dot[data-v-81e679f8]{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}.sp-legend-hint[data-v-81e679f8]{margin-left:auto;font-size:11px;color:var(--text-muted, #9ca3af)}.sp-activity-chart[data-v-81e679f8]{margin-bottom:20px;background:#fafafa;border-radius:10px;padding:14px 16px;border:1px solid var(--card-border, #e0ddd7)}.sp-activity-header[data-v-81e679f8]{font-size:12px;color:var(--text-secondary, #6b7280);font-weight:500;margin-bottom:10px}.sp-activity-meta[data-v-81e679f8]{font-weight:400;color:var(--text-muted, #9ca3af);margin-left:10px}.sp-activity-body[data-v-81e679f8]{display:flex;gap:16px;align-items:flex-start}.sp-activity-svg-wrap[data-v-81e679f8]{flex:1;min-width:0}.sp-activity-legend[data-v-81e679f8]{display:flex;flex-direction:column;gap:4px;flex-shrink:0}.sp-activity-legend-item[data-v-81e679f8]{display:flex;align-items:center;gap:5px;font-size:10px;color:var(--text-secondary, #6b7280);white-space:nowrap}.sp-grid[data-v-81e679f8]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}.sp-lesson-card[data-v-81e679f8]{background:#fafafa;border:1px solid var(--card-border, #e0ddd7);border-radius:10px;padding:14px 16px;cursor:pointer;transition:border-color .2s,transform .15s,box-shadow .2s;position:relative;overflow:hidden}.sp-lesson-card[data-v-81e679f8]:hover{border-color:var(--blue, #3b82f6);transform:translateY(-2px);box-shadow:0 8px 24px #3b82f61a}.sp-card-header[data-v-81e679f8]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:10px}.sp-card-info[data-v-81e679f8]{flex:1;min-width:0}.sp-card-name[data-v-81e679f8]{font-size:14px;font-weight:600;color:var(--text-primary, #1a1a1a);line-height:1.3}.sp-card-meta[data-v-81e679f8]{font-size:10px;color:var(--text-muted, #9ca3af);margin-top:2px}.sp-card-rate[data-v-81e679f8]{text-align:right;flex-shrink:0;margin-left:12px}.sp-rate-value[data-v-81e679f8]{font-size:18px;font-weight:700;font-family:monospace}.sp-rate-label[data-v-81e679f8]{font-size:9px;color:var(--text-muted, #9ca3af);text-transform:uppercase;letter-spacing:.05em}.sp-card-sparkline[data-v-81e679f8]{margin-bottom:10px}.sp-mastery-track[data-v-81e679f8]{display:flex;height:8px;border-radius:4px;overflow:hidden;gap:1px}.sp-mastery-segment[data-v-81e679f8]{transition:width .5s ease}.sp-mastery-legend[data-v-81e679f8]{display:flex;gap:10px;margin-top:5px;flex-wrap:wrap}.sp-mastery-item[data-v-81e679f8]{display:flex;align-items:center;gap:3px;font-size:10px;color:var(--text-muted, #9ca3af)}.sp-card-hint[data-v-81e679f8]{position:absolute;bottom:6px;right:10px;font-size:9px;color:var(--text-muted, #9ca3af);letter-spacing:.1em;text-transform:uppercase}@media (max-width: 700px){.sp-grid[data-v-81e679f8]{grid-template-columns:1fr}.sp-activity-body[data-v-81e679f8]{flex-direction:column}.sp-legend-hint[data-v-81e679f8]{margin-left:0;width:100%}}.progress-dashboard[data-v-286a38c8]{background:#fff;border-radius:12px;max-width:900px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 4px 20px #00000026}.dashboard-header[data-v-286a38c8]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #eee;position:sticky;top:0;background:#fff;z-index:10;border-radius:12px 12px 0 0}.dashboard-header h2[data-v-286a38c8]{margin:0;font-size:20px;color:#333}.close-btn[data-v-286a38c8]{background:none;border:none;font-size:28px;color:#999;cursor:pointer;padding:0;line-height:1}.close-btn[data-v-286a38c8]:hover{color:#333}.dashboard-content[data-v-286a38c8]{padding:16px 20px}.loading[data-v-286a38c8],.error-state[data-v-286a38c8],.empty-state[data-v-286a38c8]{padding:40px 20px;text-align:center}.spinner[data-v-286a38c8]{width:40px;height:40px;border:3px solid #e0e0e0;border-top-color:#667eea;border-radius:50%;animation:spin-286a38c8 .8s linear infinite;margin:0 auto 16px}@keyframes spin-286a38c8{to{transform:rotate(360deg)}}.error-state[data-v-286a38c8]{color:#d32f2f}.error-state button[data-v-286a38c8]{margin-top:16px;padding:8px 16px;background:#d32f2f;color:#fff;border:none;border-radius:4px;cursor:pointer}.empty-state h3[data-v-286a38c8]{color:#666;margin-bottom:8px}.empty-state p[data-v-286a38c8]{color:#999;margin-bottom:8px}.dashboard-actions[data-v-286a38c8]{display:flex;gap:12px;margin-top:16px;padding-top:16px;border-top:1px solid #eee}.primary-btn[data-v-286a38c8],.secondary-btn[data-v-286a38c8]{flex:1;padding:12px 16px;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}.primary-btn[data-v-286a38c8]{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none}.primary-btn[data-v-286a38c8]:hover{transform:translateY(-1px);box-shadow:0 4px 12px #667eea66}.secondary-btn[data-v-286a38c8]{background:#fff;color:#667eea;border:1px solid #667eea}.secondary-btn[data-v-286a38c8]:hover{background:#f5f7ff}.board-mastery-strip[data-v-51665704]{display:flex;gap:6px;padding:8px 12px;background:#f8f8f8;border-radius:8px;flex-wrap:wrap;justify-content:center}.board-mastery-strip.justify-start[data-v-51665704]{justify-content:flex-start}.intro-btn[data-v-51665704]{height:32px;padding:0 14px;border-radius:16px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap;transition:transform .15s,box-shadow .15s;-webkit-user-select:none;user-select:none;letter-spacing:.3px}.intro-btn[data-v-51665704]:hover{transform:scale(1.05);box-shadow:0 2px 8px #667eea66}.board-indicator[data-v-51665704]{position:relative;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:13px;font-weight:600;transition:transform .15s,box-shadow .15s;-webkit-user-select:none;user-select:none}.board-indicator[data-v-51665704]:hover{transform:scale(1.15);box-shadow:0 2px 8px #0003}.status-grey[data-v-51665704]{background:#ccc;color:#666}.status-red[data-v-51665704]{background:#ef5350;color:#fff}.status-yellow[data-v-51665704]{background:#ffeb3b;color:#333}.status-orange[data-v-51665704]{background:#ff9800;color:#fff}.status-blue[data-v-51665704]{background:#42a5f5;color:#fff}.status-green[data-v-51665704]{background:#4caf50;color:#fff}.board-indicator.active[data-v-51665704]:before{content:"";position:absolute;top:-5px;right:-5px;bottom:-5px;left:-5px;border-radius:50%;border:3px solid #1976d2;pointer-events:none}.medal[data-v-51665704]{position:absolute;top:-6px;right:-6px;font-size:14px;z-index:1;line-height:1}.gold-medal[data-v-51665704]{color:gold;filter:drop-shadow(0 1px 1px rgba(0,0,0,.3))}.silver-medal[data-v-51665704]{color:#e8e8e8;filter:drop-shadow(0 1px 2px rgba(0,0,0,.5))}.has-medal.status-red[data-v-51665704]{box-shadow:0 0 0 2px #fff,0 0 0 4px #ef5350}.has-medal.status-yellow[data-v-51665704]{box-shadow:0 0 0 2px #fff,0 0 0 4px #ffc107}.has-medal.status-orange[data-v-51665704]{box-shadow:0 0 0 2px #fff,0 0 0 4px #ff9800}.has-medal.status-blue[data-v-51665704]{box-shadow:0 0 0 2px #fff,0 0 0 4px #42a5f5}.board-num[data-v-51665704]{position:relative;z-index:0}@media (max-width: 600px){.board-mastery-strip[data-v-51665704]{gap:4px;padding:6px 8px}.board-indicator[data-v-51665704]{width:28px;height:28px;font-size:11px}.intro-btn[data-v-51665704]{height:28px;padding:0 10px;border-radius:14px;font-size:11px}.board-indicator.active[data-v-51665704]:before{top:-4px;right:-4px;bottom:-4px;left:-4px;border-width:2px}.medal[data-v-51665704]{font-size:12px;top:-5px;right:-5px}}.accomplishments-view[data-v-b2e1ca98]{background:#fff;border-radius:12px;max-width:700px;width:100%;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 4px 20px #00000026;position:relative}.view-header[data-v-b2e1ca98]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #eee;flex-shrink:0}.view-header h2[data-v-b2e1ca98]{margin:0;font-size:20px;color:#333}.close-btn[data-v-b2e1ca98]{background:none;border:none;font-size:28px;color:#999;cursor:pointer;padding:0;line-height:1}.close-btn[data-v-b2e1ca98]:hover{color:#333}.user-selector[data-v-b2e1ca98]{display:flex;align-items:center;gap:12px;padding:12px 20px;background:#f8f8f8;border-bottom:1px solid #eee}.user-selector label[data-v-b2e1ca98]{font-size:14px;color:#666}.user-selector select[data-v-b2e1ca98]{flex:1;max-width:300px;padding:8px 12px;border:1px solid #ddd;border-radius:6px;font-size:14px;background:#fff}.loading-state[data-v-b2e1ca98],.error-state[data-v-b2e1ca98],.empty-state[data-v-b2e1ca98]{padding:60px 20px;text-align:center}.spinner[data-v-b2e1ca98]{width:40px;height:40px;border:3px solid #e0e0e0;border-top-color:#667eea;border-radius:50%;animation:spin-b2e1ca98 .8s linear infinite;margin:0 auto 16px}@keyframes spin-b2e1ca98{to{transform:rotate(360deg)}}.error-state[data-v-b2e1ca98]{color:#d32f2f}.error-state button[data-v-b2e1ca98]{margin-top:16px;padding:8px 16px;background:#d32f2f;color:#fff;border:none;border-radius:4px;cursor:pointer}.empty-state h3[data-v-b2e1ca98]{color:#666;margin-bottom:8px}.empty-state p[data-v-b2e1ca98]{color:#999;margin-bottom:20px}.view-content[data-v-b2e1ca98]{display:flex;flex-direction:column;flex:1;overflow:hidden}.controls-row[data-v-b2e1ca98]{display:flex;justify-content:center;align-items:center;padding:12px 20px;border-bottom:1px solid #eee;background:#fafafa;flex-shrink:0}.tabs[data-v-b2e1ca98]{display:flex;gap:4px}.tab-btn[data-v-b2e1ca98]{padding:8px 16px;border:none;background:transparent;color:#666;font-size:14px;font-weight:500;cursor:pointer;border-radius:6px;transition:all .2s}.tab-btn[data-v-b2e1ca98]:hover{background:#e8e8e8}.tab-btn.active[data-v-b2e1ca98]{background:#667eea;color:#fff}.tab-content[data-v-b2e1ca98]{flex:1;overflow-y:auto;padding:16px 20px}.no-data[data-v-b2e1ca98]{text-align:center;color:#999;padding:40px 20px}.lesson-list[data-v-b2e1ca98]{display:flex;flex-direction:column;gap:12px}.lesson-row[data-v-b2e1ca98]{background:#fafafa;border-radius:8px;padding:10px 12px}.lesson-header[data-v-b2e1ca98]{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.lesson-name[data-v-b2e1ca98]{font-weight:600;font-size:14px;color:#333}.achievement-badge[data-v-b2e1ca98]{font-size:12px;font-weight:600;padding:2px 8px;border-radius:12px}.achievement-badge.gold[data-v-b2e1ca98]{background:linear-gradient(135deg,gold,#ffb300);color:#5d4037}.achievement-badge.silver[data-v-b2e1ca98]{background:linear-gradient(135deg,#e0e0e0,#bdbdbd);color:#424242}.taxon-list[data-v-b2e1ca98]{display:flex;flex-direction:column;gap:8px}.taxon-card[data-v-b2e1ca98]{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;background:#fafafa;border-radius:8px}.taxon-header[data-v-b2e1ca98]{display:flex;flex-direction:column;gap:2px}.taxon-category[data-v-b2e1ca98]{font-size:11px;text-transform:uppercase;color:#999;letter-spacing:.3px}.taxon-name[data-v-b2e1ca98]{font-weight:500;font-size:14px;color:#333}.taxon-counts[data-v-b2e1ca98]{display:flex;gap:10px;align-items:center}.taxon-stat[data-v-b2e1ca98]{font-size:14px;font-weight:600}.taxon-stat.correct[data-v-b2e1ca98]{color:#4caf50}.taxon-stat.incorrect[data-v-b2e1ca98]{color:#ef5350}.taxon-stat.total[data-v-b2e1ca98]{color:#999;font-weight:400;font-size:13px}.view-actions[data-v-b2e1ca98]{display:flex;gap:12px;padding:16px 20px;border-top:1px solid #eee;flex-shrink:0}.primary-btn[data-v-b2e1ca98],.secondary-btn[data-v-b2e1ca98]{flex:1;padding:12px 16px;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}.primary-btn[data-v-b2e1ca98]{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none}.primary-btn[data-v-b2e1ca98]:hover{transform:translateY(-1px);box-shadow:0 4px 12px #667eea66}.secondary-btn[data-v-b2e1ca98]{background:#fff;color:#667eea;border:1px solid #667eea}.secondary-btn[data-v-b2e1ca98]:hover{background:#f5f7ff}.test-mode-banner[data-v-b2e1ca98]{position:absolute;top:50px;left:0;right:0;background:#ff9800;color:#fff;text-align:center;padding:4px 8px;font-size:12px;font-weight:500}@media (max-width: 600px){.accomplishments-view[data-v-b2e1ca98]{max-height:100vh;border-radius:0}.controls-row[data-v-b2e1ca98]{padding:8px 12px}}.teacher-student-list[data-v-dd6d8e66]{max-width:900px;margin:0 auto;padding:0 20px}.teacher-header[data-v-dd6d8e66]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.teacher-header h2[data-v-dd6d8e66]{margin:0;font-size:20px;color:#333}.header-actions[data-v-dd6d8e66]{display:flex;gap:8px}.loading-state[data-v-dd6d8e66],.error-state[data-v-dd6d8e66],.empty-state[data-v-dd6d8e66]{padding:60px 20px;text-align:center}.spinner[data-v-dd6d8e66]{width:40px;height:40px;border:3px solid #e0e0e0;border-top-color:#667eea;border-radius:50%;animation:spin-dd6d8e66 .8s linear infinite;margin:0 auto 16px}@keyframes spin-dd6d8e66{to{transform:rotate(360deg)}}.error-state[data-v-dd6d8e66]{color:#d32f2f}.error-state button[data-v-dd6d8e66]{margin-top:16px;padding:8px 16px;background:#d32f2f;color:#fff;border:none;border-radius:4px;cursor:pointer}.empty-state h3[data-v-dd6d8e66]{color:#666;margin-bottom:8px}.empty-state p[data-v-dd6d8e66]{color:#999}.student-table-wrap[data-v-dd6d8e66]{overflow-x:auto}.student-table[data-v-dd6d8e66]{width:100%;border-collapse:collapse;font-size:14px}.student-table thead th[data-v-dd6d8e66]{text-align:left;padding:10px 12px;border-bottom:2px solid #eee;font-size:12px;text-transform:uppercase;color:#999;letter-spacing:.3px;font-weight:600}.student-row[data-v-dd6d8e66]{cursor:pointer;transition:background .15s}.student-row[data-v-dd6d8e66]:hover{background:#f5f7ff}.student-row td[data-v-dd6d8e66]{padding:12px;border-bottom:1px solid #f0f0f0;vertical-align:middle}.col-name[data-v-dd6d8e66]{min-width:160px}.col-mastery[data-v-dd6d8e66]{min-width:140px}.col-active[data-v-dd6d8e66]{min-width:100px;white-space:nowrap;color:#666;font-size:13px}.col-lessons[data-v-dd6d8e66]{min-width:180px}.student-name-cell[data-v-dd6d8e66]{display:flex;align-items:center;gap:10px}.avatar[data-v-dd6d8e66]{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex-shrink:0}.mastery-pills[data-v-dd6d8e66]{display:flex;gap:4px;flex-wrap:wrap}.pill[data-v-dd6d8e66]{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:22px;padding:0 6px;border-radius:11px;font-size:12px;font-weight:600;color:#fff}.pill-green[data-v-dd6d8e66]{background:#4caf50}.pill-orange[data-v-dd6d8e66]{background:#ff9800}.pill-yellow[data-v-dd6d8e66]{background:#ffeb3b;color:#333}.pill-red[data-v-dd6d8e66]{background:#ef5350}.no-data-label[data-v-dd6d8e66]{font-size:12px;color:#ccc}.recent-lessons[data-v-dd6d8e66]{display:flex;gap:4px;flex-wrap:wrap}.lesson-tag[data-v-dd6d8e66]{display:inline-block;padding:2px 8px;background:#f0f0f0;border-radius:10px;font-size:12px;color:#555;white-space:nowrap}.filter-select[data-v-dd6d8e66]{padding:7px 12px;border-radius:6px;font-size:13px;font-weight:500;border:1px solid #ddd;background:#fff;color:#333;cursor:pointer;font-family:inherit}.filter-select[data-v-dd6d8e66]:focus{outline:none;border-color:#667eea}.anon-btn[data-v-dd6d8e66]{padding:8px 16px;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;background:#fff;color:#666;border:1px solid #ddd;transition:all .2s}.anon-btn.active[data-v-dd6d8e66]{background:#fff3e0;color:#e65100;border-color:#ffcc80}.anon-btn[data-v-dd6d8e66]:hover{background:#f5f5f5;color:#333}.anon-btn.active[data-v-dd6d8e66]:hover{background:#ffe0b2}.secondary-btn[data-v-dd6d8e66]{padding:8px 16px;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;background:#fff;color:#667eea;border:1px solid #667eea;transition:all .2s}.secondary-btn[data-v-dd6d8e66]:hover{background:#f5f7ff}@media (max-width: 600px){.teacher-student-list[data-v-dd6d8e66]{padding:0 12px}.teacher-header[data-v-dd6d8e66]{flex-direction:column;gap:12px;align-items:flex-start}.col-lessons[data-v-dd6d8e66]{display:none}}.teacher-student-detail[data-v-62d6827c]{max-width:800px;margin:0 auto;padding:0 20px}.detail-header[data-v-62d6827c]{margin-bottom:24px}.back-btn[data-v-62d6827c]{background:none;border:none;color:#667eea;font-size:14px;cursor:pointer;padding:4px 0;margin-bottom:12px;display:inline-block}.back-btn[data-v-62d6827c]:hover{color:#5a6fd6}.student-info[data-v-62d6827c]{display:flex;align-items:center;gap:14px}.avatar[data-v-62d6827c]{width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:600;flex-shrink:0}.student-info h2[data-v-62d6827c]{margin:0;font-size:20px;color:#333}.last-active[data-v-62d6827c]{font-size:13px;color:#999}.loading-state[data-v-62d6827c]{padding:60px 20px;text-align:center}.spinner[data-v-62d6827c]{width:40px;height:40px;border:3px solid #e0e0e0;border-top-color:#667eea;border-radius:50%;animation:spin-62d6827c .8s linear infinite;margin:0 auto 16px}@keyframes spin-62d6827c{to{transform:rotate(360deg)}}.stats-row[data-v-62d6827c]{display:flex;gap:12px;margin-bottom:24px;flex-wrap:wrap}.stat[data-v-62d6827c]{padding:8px 14px;border-radius:8px;font-size:14px;font-weight:600}.stat-green[data-v-62d6827c]{background:#e8f5e9;color:#2e7d32}.stat-blue[data-v-62d6827c]{background:#e3f2fd;color:#1565c0}.stat-orange[data-v-62d6827c]{background:#fff3e0;color:#e65100}.stat-yellow[data-v-62d6827c]{background:#fffde7;color:#f57f17}.stat-red[data-v-62d6827c]{background:#ffebee;color:#c62828}.stat-grey[data-v-62d6827c]{background:#f5f5f5;color:#757575}.tab-bar[data-v-62d6827c]{display:flex;gap:0;border-bottom:2px solid #eee;margin-bottom:20px}.tab-btn[data-v-62d6827c]{background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;padding:10px 18px;font-size:14px;font-weight:500;color:#999;cursor:pointer;transition:color .15s,border-color .15s}.tab-btn[data-v-62d6827c]:hover{color:#555}.tab-btn.active[data-v-62d6827c]{color:#667eea;border-bottom-color:#667eea;font-weight:600}.tab-content[data-v-62d6827c]{min-height:200px}.no-data[data-v-62d6827c]{text-align:center;color:#999;padding:20px}.lesson-list[data-v-62d6827c]{display:flex;flex-direction:column;gap:12px}.lesson-row[data-v-62d6827c]{background:#fafafa;border-radius:8px;padding:10px 12px}.lesson-header[data-v-62d6827c]{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.lesson-link[data-v-62d6827c]{background:none;border:none;padding:0;cursor:pointer;text-decoration:none}.lesson-link[data-v-62d6827c]:hover{text-decoration:underline;color:#667eea}.lesson-name[data-v-62d6827c]{font-weight:600;font-size:14px;color:#333}.achievement-badge[data-v-62d6827c]{font-size:12px;font-weight:600;padding:2px 8px;border-radius:12px}.achievement-badge.gold[data-v-62d6827c]{background:linear-gradient(135deg,gold,#ffb300);color:#5d4037}.achievement-badge.silver[data-v-62d6827c]{background:linear-gradient(135deg,#e0e0e0,#bdbdbd);color:#424242}.mastery-strip[data-v-62d6827c]{display:flex;gap:6px;flex-wrap:wrap}.board-circle[data-v-62d6827c]{position:relative;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;-webkit-user-select:none;user-select:none}.board-clickable[data-v-62d6827c]{cursor:pointer;transition:transform .15s,box-shadow .15s}.board-clickable[data-v-62d6827c]:hover{transform:scale(1.15);box-shadow:0 2px 6px #00000040}.status-grey[data-v-62d6827c]{background:#ccc;color:#666}.status-red[data-v-62d6827c]{background:#ef5350;color:#fff}.status-yellow[data-v-62d6827c]{background:#ffeb3b;color:#333}.status-orange[data-v-62d6827c]{background:#ff9800;color:#fff}.status-blue[data-v-62d6827c]{background:#42a5f5;color:#fff}.status-green[data-v-62d6827c]{background:#4caf50;color:#fff}.medal[data-v-62d6827c]{position:absolute;top:-6px;right:-6px;font-size:14px;z-index:1;line-height:1}.gold-medal[data-v-62d6827c]{color:gold;filter:drop-shadow(0 1px 1px rgba(0,0,0,.3))}.silver-medal[data-v-62d6827c]{color:#e8e8e8;filter:drop-shadow(0 1px 2px rgba(0,0,0,.5))}.board-num[data-v-62d6827c]{position:relative;z-index:0}.observation-total[data-v-62d6827c]{text-align:center;font-size:12px;color:#999;margin-top:12px}@media (max-width: 600px){.teacher-student-detail[data-v-62d6827c]{padding:0 12px}.board-circle[data-v-62d6827c]{width:28px;height:28px;font-size:11px}.medal[data-v-62d6827c]{font-size:12px;top:-5px;right:-5px}}.lesson-browser-loading[data-v-384a9c63],.lesson-browser-error[data-v-384a9c63]{text-align:center;padding:40px;background:#fff;border-radius:8px;max-width:400px;margin:0 auto}.loading-spinner[data-v-384a9c63]{width:32px;height:32px;border:3px solid #f0f0f0;border-top-color:#667eea;border-radius:50%;animation:spin-384a9c63 1s linear infinite;margin:0 auto 16px}@keyframes spin-384a9c63{to{transform:rotate(360deg)}}.retry-btn[data-v-384a9c63]{margin-top:16px;padding:8px 16px;background:#667eea;color:#fff;border:none;border-radius:4px;cursor:pointer}.retry-btn[data-v-384a9c63]:hover{background:#5a6fd6}.modal-overlay[data-v-384a9c63]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.lesson-browser[data-v-384a9c63]{background:#fff;border-radius:12px;width:100%;max-width:600px;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 8px 32px #0003}.browser-header[data-v-384a9c63]{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #eee}.browser-header h2[data-v-384a9c63]{margin:0;font-size:20px;color:#333}.close-btn[data-v-384a9c63]{background:none;border:none;font-size:28px;color:#999;cursor:pointer;line-height:1;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px}.close-btn[data-v-384a9c63]:hover{background:#f0f0f0;color:#333}.browser-content[data-v-384a9c63]{flex:1;overflow-y:auto;padding:8px 0}.lesson-browser-inline[data-v-384a9c63]{background:#fff;border-radius:8px;width:100%;max-width:700px;margin:0 auto}.browser-content-inline[data-v-384a9c63]{padding:8px 0}.category-section[data-v-384a9c63]{border-bottom:1px solid #f0f0f0}.category-section[data-v-384a9c63]:last-child{border-bottom:none}.category-header[data-v-384a9c63]{width:100%;display:flex;align-items:center;gap:12px;padding:14px 20px;background:none;border:none;cursor:pointer;text-align:left;font-size:15px;transition:background .15s}.category-header[data-v-384a9c63]:hover{background:#f8f8f8}.category-header.expanded[data-v-384a9c63]{background:#f5f5f5}.expand-icon[data-v-384a9c63]{font-size:10px;color:#666;width:12px}.category-name[data-v-384a9c63]{flex:1;font-weight:600;color:#333}.category-count[data-v-384a9c63]{font-size:13px;color:#888}.lesson-list[data-v-384a9c63]{background:#fafafa;padding:8px 20px 8px 44px;display:grid;grid-template-columns:repeat(2,1fr);gap:4px 16px}.lesson-item[data-v-384a9c63]{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 12px;background:none;border:none;border-radius:6px;cursor:pointer;text-align:left;transition:background .15s}.lesson-item[data-v-384a9c63]:hover{background:#e8f4fd}.lesson-item.loading[data-v-384a9c63]{opacity:.6;cursor:wait}.lesson-name[data-v-384a9c63]{font-size:14px;font-weight:500;color:#1976d2}.lesson-description[data-v-384a9c63]{font-size:12px;color:#666;line-height:1.3}.error-message[data-v-384a9c63],.error-message-inline[data-v-384a9c63]{padding:12px 20px;background:#fff3f3;color:#d32f2f;font-size:13px;border-top:1px solid #ffcdd2}.error-message-inline[data-v-384a9c63]{border-radius:0 0 8px 8px}@media (max-width: 600px){.lesson-browser[data-v-384a9c63]{max-height:90vh}.browser-header[data-v-384a9c63]{padding:12px 16px}.browser-header h2[data-v-384a9c63]{font-size:18px}.category-header[data-v-384a9c63]{padding:12px 16px;font-size:14px}.lesson-list[data-v-384a9c63]{grid-template-columns:1fr;padding:4px 16px 4px 36px}.lesson-item[data-v-384a9c63]{padding:8px}}.intro-pdf-viewer[data-v-a97df645]{position:fixed;z-index:900;background:#fff;border-radius:8px;box-shadow:0 8px 32px #00000040;display:flex;flex-direction:column;overflow:hidden;min-width:320px;min-height:300px}.viewer-titlebar[data-v-a97df645]{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;cursor:grab;-webkit-user-select:none;user-select:none;flex-shrink:0}.viewer-titlebar[data-v-a97df645]:active{cursor:grabbing}.viewer-title[data-v-a97df645]{font-size:14px;font-weight:600}.viewer-controls[data-v-a97df645]{display:flex;gap:8px;align-items:center}.viewer-btn[data-v-a97df645]{background:none;border:none;color:#fff;font-size:18px;cursor:pointer;padding:0 4px;line-height:1;text-decoration:none;opacity:.8}.viewer-btn[data-v-a97df645]:hover{opacity:1}.viewer-btn.close[data-v-a97df645]{font-size:22px}.viewer-body[data-v-a97df645]{flex:1;position:relative;overflow:hidden}.interaction-overlay[data-v-a97df645]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;cursor:grabbing}.viewer-iframe[data-v-a97df645]{width:100%;height:100%;border:none}.viewer-loading[data-v-a97df645],.viewer-error[data-v-a97df645]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:14px;color:#666;padding:20px}.viewer-error[data-v-a97df645]{color:#d32f2f}.resize-handle[data-v-a97df645]{position:absolute;bottom:0;right:0;width:20px;height:20px;cursor:nwse-resize;display:flex;align-items:center;justify-content:center;font-size:12px;color:#999;background:#fffc;border-radius:4px 0 8px;-webkit-user-select:none;user-select:none}.resize-handle[data-v-a97df645]:hover{color:#666;background:#f0f0f0e6}.collection-card[data-v-747be5b1]{display:flex;flex-direction:column;align-items:center;gap:8px;padding:24px 32px;background:linear-gradient(135deg,var(--green-mid, #40916c) 0%,var(--green-dark, #2d6a4f) 100%);color:#fff;border:none;border-radius:var(--radius-card, 12px);cursor:pointer;transition:transform .2s,box-shadow .2s;min-width:200px}.collection-card[data-v-747be5b1]:hover{transform:translateY(-4px);box-shadow:0 8px 24px #2d6a4f66}.collection-icon[data-v-747be5b1]{font-size:48px;line-height:1}.collection-name[data-v-747be5b1]{font-size:20px;font-weight:600}.collection-desc[data-v-747be5b1]{font-size:13px;opacity:.9;max-width:180px}.collection-grid[data-v-35b62d22]{text-align:center;padding:32px 0}.grid-title[data-v-35b62d22]{font-family:var(--font-heading, "Source Serif 4", serif);font-size:24px;color:var(--text-primary, #333);margin-bottom:8px}.grid-subtitle[data-v-35b62d22]{color:var(--text-secondary, #666);margin-bottom:24px}.collection-cards[data-v-35b62d22]{display:flex;flex-wrap:wrap;gap:16px;justify-content:center}.load-file-section[data-v-35b62d22]{margin-top:20px;padding-top:20px;border-top:1px solid #eee}.load-file-section p[data-v-35b62d22]{margin-bottom:8px;font-size:13px;color:#888}.recent-lessons[data-v-8d01d400]{margin-bottom:32px}.section-header[data-v-8d01d400]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.section-title[data-v-8d01d400]{font-family:var(--font-heading, "Source Serif 4", serif);font-size:20px;color:var(--green-dark, #2d6a4f);margin:0}.view-all-link[data-v-8d01d400]{background:none;border:none;color:var(--green-dark, #2d6a4f);font-size:14px;font-weight:500;cursor:pointer;padding:4px 0}.view-all-link[data-v-8d01d400]:hover{text-decoration:underline}.lesson-cards[data-v-8d01d400]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.lesson-card[data-v-8d01d400]{background:#fff;border-radius:var(--radius-card, 10px);border:1px solid var(--card-border, #e0ddd7);padding:16px 20px}.card-top[data-v-8d01d400]{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px}.card-titles[data-v-8d01d400]{display:flex;flex-direction:column;gap:2px;min-width:0}.collection-label[data-v-8d01d400]{font-size:11px;font-weight:600;letter-spacing:.5px;color:var(--text-secondary, #6b7280)}.lesson-name[data-v-8d01d400]{font-family:var(--font-heading, "Source Serif 4", serif);font-size:18px;font-weight:600;color:var(--text-primary, #1a1a1a);line-height:1.2}.board-count[data-v-8d01d400]{font-size:13px;color:var(--text-secondary, #6b7280);margin-top:2px}.card-right[data-v-8d01d400]{display:flex;flex-direction:column;align-items:flex-end;gap:8px;flex-shrink:0}.relative-time[data-v-8d01d400]{font-size:12px;color:var(--text-secondary, #6b7280);white-space:nowrap}.resume-btn[data-v-8d01d400]{padding:6px 16px;font-size:13px;font-weight:600;color:#fff;background:var(--green-dark, #2d6a4f);border:none;border-radius:6px;cursor:pointer;transition:background .2s;white-space:nowrap}.resume-btn[data-v-8d01d400]:hover{background:var(--green-mid, #40916c)}.untried-badge[data-v-8d01d400]{display:inline-block;font-size:12px;font-weight:500;color:#b45309;background:#fef3c7;padding:2px 10px;border-radius:10px;margin-bottom:8px}.mastery-bar[data-v-8d01d400]{display:flex;height:8px;background:#ddd;border-radius:4px;overflow:hidden;margin-bottom:8px}.segment[data-v-8d01d400]{height:100%;transition:width .3s ease}.segment.mastered[data-v-8d01d400]{background:#4caf50}.segment.progressing[data-v-8d01d400]{background:#42a5f5}.mastery-counts[data-v-8d01d400]{display:flex;gap:16px;font-size:12px;color:var(--text-secondary, #6b7280)}.count[data-v-8d01d400]:before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px;vertical-align:middle}.mastered-dot[data-v-8d01d400]:before{background:#4caf50}.progressing-dot[data-v-8d01d400]:before{background:#42a5f5}.untried-dot[data-v-8d01d400]:before{background:#ccc}@media (max-width: 600px){.lesson-cards[data-v-8d01d400]{grid-template-columns:1fr}.card-top[data-v-8d01d400]{flex-direction:column;gap:8px}.card-right[data-v-8d01d400]{flex-direction:row;align-items:center;width:100%;justify-content:space-between}}.casual-lobby[data-v-a28d0bea]{padding:20px 0}.assignment-panel[data-v-44c95b21]{margin-bottom:32px}.section-header[data-v-44c95b21]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.section-title[data-v-44c95b21]{font-family:var(--font-heading, "Source Serif 4", serif);font-size:20px;color:var(--green-dark, #2d6a4f);margin:0}.view-all-link[data-v-44c95b21]{background:none;border:none;color:var(--green-dark, #2d6a4f);font-size:14px;font-weight:500;cursor:pointer;padding:4px 0}.view-all-link[data-v-44c95b21]:hover{text-decoration:underline}.loading-state[data-v-44c95b21],.empty-state[data-v-44c95b21]{padding:32px 20px;text-align:center;background:#fff;border-radius:var(--radius-card, 10px);border:1px solid var(--card-border, #e0ddd7)}.spinner[data-v-44c95b21]{width:32px;height:32px;border:3px solid #e0e0e0;border-top-color:#667eea;border-radius:50%;animation:spin-44c95b21 .8s linear infinite;margin:0 auto 12px}@keyframes spin-44c95b21{to{transform:rotate(360deg)}}.empty-title[data-v-44c95b21]{font-weight:500;color:var(--text-primary, #1a1a1a);margin-bottom:4px}.empty-desc[data-v-44c95b21]{color:var(--text-secondary, #6b7280);font-size:14px}.assignment-cards[data-v-44c95b21]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.assignment-card[data-v-44c95b21]{background:#fff;border-radius:var(--radius-card, 10px);border:1px solid var(--card-border, #e0ddd7);border-left:4px solid #90caf9;padding:16px 20px;cursor:pointer;transition:all .2s}.assignment-card[data-v-44c95b21]:hover{box-shadow:0 2px 8px #0000001a}.assignment-card.in-progress[data-v-44c95b21]{border-left-color:#ff9800}.assignment-card.complete[data-v-44c95b21]{border-left-color:#4caf50}.assignment-card.overdue[data-v-44c95b21]{border-left-color:#ef5350}.card-top[data-v-44c95b21]{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px}.card-titles[data-v-44c95b21]{display:flex;flex-direction:column;gap:4px;min-width:0}.exercise-name[data-v-44c95b21]{font-family:var(--font-heading, "Source Serif 4", serif);font-weight:600;font-size:17px;color:var(--text-primary, #1a1a1a);line-height:1.2}.card-meta[data-v-44c95b21]{display:flex;gap:12px;font-size:13px;color:var(--text-secondary, #6b7280)}.classroom-name[data-v-44c95b21]{color:var(--green-dark, #2d6a4f);font-weight:500}.meta-item.overdue[data-v-44c95b21]{color:#c62828;font-weight:500}.meta-item.urgent[data-v-44c95b21]{color:#e65100;font-weight:500}.meta-item.soon[data-v-44c95b21]{color:#f57f17}.card-right[data-v-44c95b21]{display:flex;flex-direction:column;align-items:flex-end;gap:8px;flex-shrink:0}.due-badge[data-v-44c95b21]{font-size:10px;font-weight:700;letter-spacing:.5px;padding:3px 10px;border-radius:10px;background:#fef3c7;color:#92400e;white-space:nowrap}.due-badge.overdue[data-v-44c95b21],.due-badge.urgent[data-v-44c95b21]{background:#fee2e2;color:#991b1b}.due-badge.soon[data-v-44c95b21]{background:#fef3c7;color:#92400e}.action-btn[data-v-44c95b21]{padding:6px 16px;font-size:13px;font-weight:600;color:#fff;background:var(--green-dark, #2d6a4f);border:none;border-radius:6px;cursor:pointer;transition:background .2s;white-space:nowrap}.action-btn[data-v-44c95b21]:hover{background:var(--green-mid, #40916c)}.mastery-section[data-v-44c95b21]{display:flex;flex-direction:column;gap:6px}.mastery-bar[data-v-44c95b21]{display:flex;height:8px;background:#ddd;border-radius:4px;overflow:hidden}.segment[data-v-44c95b21]{height:100%;transition:width .3s ease}.segment.mastered[data-v-44c95b21]{background:#4caf50}.segment.progressing[data-v-44c95b21]{background:#42a5f5}.segment.fallback[data-v-44c95b21]{background:#4caf50}.board-label[data-v-44c95b21]{font-size:12px;color:var(--text-secondary, #6b7280)}.modal-overlay[data-v-44c95b21]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.modal-content[data-v-44c95b21]{background:var(--bg-warm, #f5f5f5);border-radius:var(--radius-card, 12px);max-width:800px;width:100%;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 8px 32px #0003}.modal-header[data-v-44c95b21]{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid var(--card-border, #e0ddd7)}.modal-header h3[data-v-44c95b21]{font-family:var(--font-heading, "Source Serif 4", serif);font-size:20px;color:var(--green-dark, #2d6a4f);margin:0}.modal-close[data-v-44c95b21]{background:none;border:none;font-size:24px;color:var(--text-secondary, #6b7280);cursor:pointer;padding:4px 8px;line-height:1}.modal-close[data-v-44c95b21]:hover{color:var(--text-primary, #1a1a1a)}.modal-body[data-v-44c95b21]{padding:20px 24px;overflow-y:auto}@media (max-width: 600px){.assignment-cards[data-v-44c95b21]{grid-template-columns:1fr}.modal-content[data-v-44c95b21]{max-height:90vh}}.student-lobby[data-v-80f11dbf]{padding:20px 0}.roster[data-v-ee901be3]{margin-top:16px;border-top:1px solid var(--card-border, #e0ddd7);padding-top:16px}.roster-header[data-v-ee901be3]{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.roster-header h4[data-v-ee901be3]{font-size:15px;color:var(--text-primary, #1a1a1a);margin:0}.member-count[data-v-ee901be3]{font-size:13px;color:var(--text-secondary, #6b7280)}.roster-empty[data-v-ee901be3]{text-align:center;padding:20px;color:var(--text-muted, #9ca3af);font-size:14px}.roster-table[data-v-ee901be3]{width:100%;border-collapse:collapse;font-size:14px}.roster-table th[data-v-ee901be3]{text-align:left;font-weight:500;color:var(--text-secondary, #6b7280);font-size:12px;text-transform:uppercase;letter-spacing:.05em;padding:6px 8px;border-bottom:1px solid var(--card-border, #e0ddd7)}.roster-table td[data-v-ee901be3]{padding:8px;border-bottom:1px solid #f3f4f6;color:var(--text-primary, #1a1a1a)}.member-name[data-v-ee901be3]{font-weight:500}.member-email[data-v-ee901be3]{color:var(--text-secondary, #6b7280)}.member-date[data-v-ee901be3]{color:var(--text-secondary, #6b7280);white-space:nowrap}.member-action[data-v-ee901be3]{text-align:right}.remove-btn[data-v-ee901be3]{background:none;border:none;color:var(--text-muted, #9ca3af);font-size:13px;cursor:pointer;padding:4px 8px;border-radius:var(--radius-button, 6px);transition:all .2s;font-family:var(--font-body, "DM Sans", sans-serif)}.remove-btn[data-v-ee901be3]:hover:not(:disabled){color:var(--red, #ef4444);background:var(--red-light, #fee2e2)}.remove-btn[data-v-ee901be3]:disabled{opacity:.5;cursor:not-allowed}.classroom-card[data-v-3dc8e5a5]{background:#fff;border-radius:var(--radius-card, 10px);border:1px solid var(--card-border, #e0ddd7);overflow:hidden;transition:box-shadow .2s}.classroom-card[data-v-3dc8e5a5]:hover{box-shadow:0 4px 12px var(--card-shadow, rgba(0, 0, 0, .06))}.card-header[data-v-3dc8e5a5]{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;cursor:pointer;background:linear-gradient(135deg,var(--green-dark, #2d6a4f),#1d4e89);color:#fff}.classroom-name[data-v-3dc8e5a5]{font-family:var(--font-heading, "Source Serif 4", serif);font-size:18px;margin:0 0 6px;font-weight:600}.header-meta[data-v-3dc8e5a5]{display:flex;align-items:center;gap:12px;font-size:13px}.join-badge[data-v-3dc8e5a5]{background:#fff3;padding:2px 8px;border-radius:12px;font-family:monospace;font-size:12px;letter-spacing:.03em}.member-count[data-v-3dc8e5a5]{opacity:.85}.stat-badge[data-v-3dc8e5a5]{background:#fff3;padding:2px 8px;border-radius:12px;font-size:12px}.stat-badge.completion[data-v-3dc8e5a5]{background:#52b7884d}.mini-bars[data-v-3dc8e5a5]{margin-top:8px;display:flex;flex-direction:column;gap:4px}.mini-bar[data-v-3dc8e5a5]{display:flex;align-items:center;gap:8px;font-size:11px;opacity:.9}.bar-label[data-v-3dc8e5a5]{min-width:100px;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-track[data-v-3dc8e5a5]{flex:1;height:6px;background:#fff3;border-radius:3px;overflow:hidden;min-width:60px}.bar-fill[data-v-3dc8e5a5]{height:100%;background:#ffffffb3;border-radius:3px;transition:width .3s ease}.bar-count[data-v-3dc8e5a5]{white-space:nowrap;opacity:.8}.expand-btn[data-v-3dc8e5a5]{background:none;border:none;color:#fff;cursor:pointer;padding:4px;font-size:14px}.chevron[data-v-3dc8e5a5]{display:inline-block;transition:transform .2s}.chevron.rotated[data-v-3dc8e5a5]{transform:rotate(180deg)}.card-body[data-v-3dc8e5a5]{padding:20px}.classroom-desc[data-v-3dc8e5a5]{color:var(--text-secondary, #6b7280);font-size:14px;margin:0 0 16px}.invite-section[data-v-3dc8e5a5]{margin-bottom:20px}.invite-section h4[data-v-3dc8e5a5],.email-section h4[data-v-3dc8e5a5]{font-size:15px;color:var(--text-primary, #1a1a1a);margin:0 0 4px}.invite-desc[data-v-3dc8e5a5]{font-size:13px;color:var(--text-secondary, #6b7280);margin:0 0 8px}.invite-field[data-v-3dc8e5a5]{display:flex;gap:8px}.invite-input[data-v-3dc8e5a5]{flex:1;padding:8px 12px;background:#e8f5ee;border:1px solid var(--green-light, #b7e4c7);border-radius:var(--radius-button, 6px);font-size:14px;color:var(--green-dark, #2d6a4f);font-family:monospace}.invite-input[data-v-3dc8e5a5]:focus{outline:none}.copy-btn[data-v-3dc8e5a5]{padding:8px 16px;background:var(--green-mid, #40916c);color:#fff;border:none;border-radius:var(--radius-button, 6px);font-size:14px;font-weight:500;cursor:pointer;transition:background .2s;white-space:nowrap;font-family:var(--font-body, "DM Sans", sans-serif)}.copy-btn[data-v-3dc8e5a5]:hover{background:var(--green-dark, #2d6a4f)}.email-section[data-v-3dc8e5a5]{margin-bottom:16px}.email-header[data-v-3dc8e5a5]{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.copy-btn-small[data-v-3dc8e5a5]{padding:4px 12px;font-size:12px}.email-template[data-v-3dc8e5a5]{border:1px solid var(--card-border, #e0ddd7);border-radius:var(--radius-button, 6px);padding:12px 16px;font-size:13px;line-height:1.5;color:var(--text-primary, #1a1a1a);background:#fafafa}.email-template strong[data-v-3dc8e5a5]{color:var(--green-dark, #2d6a4f)}.email-body[data-v-3dc8e5a5]{white-space:pre-wrap;margin-top:8px;font-size:13px;color:var(--text-secondary, #6b7280)}.assignments-section[data-v-3dc8e5a5]{margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid var(--card-border, #e0ddd7)}.assignments-section h4[data-v-3dc8e5a5]{font-size:15px;color:var(--text-primary, #1a1a1a);margin:0 0 8px}.assignment-list[data-v-3dc8e5a5]{display:flex;flex-direction:column;gap:6px}.assignment-row[data-v-3dc8e5a5]{display:flex;align-items:center;gap:12px;padding:8px 12px;background:#f8f9fa;border-radius:var(--radius-button, 6px);font-size:13px}.assignment-row.clickable[data-v-3dc8e5a5]{cursor:pointer;transition:background .15s}.assignment-row.clickable[data-v-3dc8e5a5]:hover{background:#e8f5ee}.view-arrow[data-v-3dc8e5a5]{color:var(--text-muted, #9ca3af);font-size:18px;line-height:1;transition:color .15s}.assignment-row.clickable:hover .view-arrow[data-v-3dc8e5a5]{color:var(--green-mid, #40916c)}.assignment-name[data-v-3dc8e5a5]{flex:1;font-weight:500;color:var(--text-primary, #1a1a1a)}.assignment-due[data-v-3dc8e5a5]{color:var(--text-secondary, #6b7280)}.assignment-boards[data-v-3dc8e5a5]{color:var(--text-muted, #9ca3af);white-space:nowrap}.loading-roster[data-v-3dc8e5a5]{text-align:center;padding:20px;color:var(--text-muted, #9ca3af);font-size:14px}.modal-overlay[data-v-c26a1ae6]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000;padding:20px}.modal-content[data-v-c26a1ae6]{background:#fff;border-radius:var(--radius-card, 10px);max-width:500px;width:100%;box-shadow:0 16px 48px #0003}.step[data-v-c26a1ae6]{padding:32px}.step h2[data-v-c26a1ae6]{font-family:var(--font-heading, "Source Serif 4", serif);font-size:24px;color:var(--green-dark, #2d6a4f);margin-bottom:8px}.step-desc[data-v-c26a1ae6]{color:var(--text-secondary, #6b7280);margin-bottom:24px}.form-group[data-v-c26a1ae6]{margin-bottom:20px}.form-group label[data-v-c26a1ae6]{display:block;font-weight:500;color:var(--text-primary, #1a1a1a);margin-bottom:6px;font-size:14px}.optional[data-v-c26a1ae6]{font-weight:400;color:var(--text-muted, #9ca3af)}.form-input[data-v-c26a1ae6],.form-textarea[data-v-c26a1ae6]{width:100%;padding:10px 12px;border:1px solid var(--card-border, #e0ddd7);border-radius:var(--radius-button, 6px);font-size:15px;font-family:var(--font-body, "DM Sans", sans-serif);color:var(--text-primary, #1a1a1a);transition:border-color .2s;box-sizing:border-box}.form-input[data-v-c26a1ae6]:focus,.form-textarea[data-v-c26a1ae6]:focus{outline:none;border-color:var(--green-mid, #40916c)}.form-textarea[data-v-c26a1ae6]{resize:vertical}.form-hint[data-v-c26a1ae6]{font-size:13px;color:var(--text-muted, #9ca3af);margin-top:4px}.step-actions[data-v-c26a1ae6]{display:flex;gap:12px;justify-content:flex-end;margin-top:24px}.btn[data-v-c26a1ae6]{padding:10px 20px;border-radius:var(--radius-button, 6px);font-size:15px;font-weight:500;cursor:pointer;border:none;transition:all .2s;font-family:var(--font-body, "DM Sans", sans-serif)}.btn[data-v-c26a1ae6]:disabled{opacity:.5;cursor:not-allowed}.btn-primary[data-v-c26a1ae6]{background:var(--green-mid, #40916c);color:#fff}.btn-primary[data-v-c26a1ae6]:hover:not(:disabled){background:var(--green-dark, #2d6a4f)}.btn-secondary[data-v-c26a1ae6]{background:#f3f4f6;color:var(--text-primary, #1a1a1a)}.btn-secondary[data-v-c26a1ae6]:hover{background:#e5e7eb}.error-text[data-v-c26a1ae6]{color:var(--red, #ef4444);font-size:14px;margin-top:12px;text-align:center}.modal-overlay[data-v-5e97b847]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000;padding:20px}.modal-content[data-v-5e97b847]{background:#fff;border-radius:var(--radius-card, 10px);max-width:500px;width:100%;box-shadow:0 16px 48px #0003}.step[data-v-5e97b847]{padding:32px}.step h2[data-v-5e97b847]{font-family:var(--font-heading, "Source Serif 4", serif);font-size:24px;color:var(--green-dark, #2d6a4f);margin-bottom:8px}.step-desc[data-v-5e97b847]{color:var(--text-secondary, #6b7280);margin-bottom:24px}.form-group[data-v-5e97b847]{margin-bottom:20px}.form-group label[data-v-5e97b847]{display:block;font-weight:500;color:var(--text-primary, #1a1a1a);margin-bottom:6px;font-size:14px}.optional[data-v-5e97b847]{font-weight:400;color:var(--text-muted, #9ca3af)}.form-input[data-v-5e97b847],.form-select[data-v-5e97b847]{width:100%;padding:10px 12px;border:1px solid var(--card-border, #e0ddd7);border-radius:var(--radius-button, 6px);font-size:15px;font-family:var(--font-body, "DM Sans", sans-serif);color:var(--text-primary, #1a1a1a);transition:border-color .2s;box-sizing:border-box;background:#fff}.form-input[data-v-5e97b847]:focus,.form-select[data-v-5e97b847]:focus{outline:none;border-color:var(--green-mid, #40916c)}.form-hint[data-v-5e97b847]{font-size:13px;color:var(--text-muted, #9ca3af);margin-top:4px}.target-options[data-v-5e97b847]{display:flex;gap:20px;margin-top:4px}.radio-option[data-v-5e97b847]{display:flex;align-items:center;gap:6px;cursor:pointer;font-weight:400;font-size:14px}.radio-option input[type=radio][data-v-5e97b847]{accent-color:var(--green-mid, #40916c)}.step-actions[data-v-5e97b847]{display:flex;gap:12px;justify-content:flex-end;margin-top:24px}.btn[data-v-5e97b847]{padding:10px 20px;border-radius:var(--radius-button, 6px);font-size:15px;font-weight:500;cursor:pointer;border:none;transition:all .2s;font-family:var(--font-body, "DM Sans", sans-serif)}.btn[data-v-5e97b847]:disabled{opacity:.5;cursor:not-allowed}.btn-primary[data-v-5e97b847]{background:var(--green-mid, #40916c);color:#fff}.btn-primary[data-v-5e97b847]:hover:not(:disabled){background:var(--green-dark, #2d6a4f)}.btn-secondary[data-v-5e97b847]{background:#f3f4f6;color:var(--text-primary, #1a1a1a)}.btn-secondary[data-v-5e97b847]:hover{background:#e5e7eb}.error-text[data-v-5e97b847]{color:var(--red, #ef4444);font-size:14px;margin-top:12px;text-align:center}.modal-overlay[data-v-d654f00a]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000;padding:20px}.modal-content[data-v-d654f00a]{background:#fff;border-radius:var(--radius-card, 10px);max-width:600px;width:100%;box-shadow:0 16px 48px #0003}.modal-body[data-v-d654f00a]{padding:32px}.modal-header[data-v-d654f00a]{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:8px}.modal-header h2[data-v-d654f00a]{font-family:var(--font-heading, "Source Serif 4", serif);font-size:22px;color:var(--green-dark, #2d6a4f);margin:0}.close-btn[data-v-d654f00a]{background:none;border:none;font-size:24px;color:var(--text-muted, #9ca3af);cursor:pointer;padding:0 4px;line-height:1}.close-btn[data-v-d654f00a]:hover{color:var(--text-primary, #1a1a1a)}.assignment-meta[data-v-d654f00a]{display:flex;gap:16px;margin-bottom:24px;font-size:14px;color:var(--text-secondary, #6b7280)}.meta-item[data-v-d654f00a]{white-space:nowrap}.progress-table-wrapper[data-v-d654f00a]{overflow-x:auto}.progress-table[data-v-d654f00a]{width:100%;border-collapse:collapse;font-size:14px}.progress-table th[data-v-d654f00a]{text-align:left;font-weight:500;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted, #9ca3af);padding:0 12px 8px 0;border-bottom:1px solid var(--card-border, #e0ddd7)}.progress-table td[data-v-d654f00a]{padding:10px 12px 10px 0;border-bottom:1px solid #f3f4f6;color:var(--text-primary, #1a1a1a)}.col-name[data-v-d654f00a]{min-width:140px}.col-progress[data-v-d654f00a]{min-width:150px}.col-correct[data-v-d654f00a],.col-accuracy[data-v-d654f00a]{white-space:nowrap;text-align:center}.progress-table th.col-correct[data-v-d654f00a],.progress-table th.col-accuracy[data-v-d654f00a]{text-align:center}.progress-cell[data-v-d654f00a]{display:flex;align-items:center;gap:8px}.progress-bar-track[data-v-d654f00a]{flex:1;height:8px;background:#f3f4f6;border-radius:4px;overflow:hidden}.progress-bar-fill[data-v-d654f00a]{height:100%;border-radius:4px;background:#d1d5db;transition:width .3s ease}.progress-bar-fill.partial[data-v-d654f00a]{background:#fbbf24}.progress-bar-fill.complete[data-v-d654f00a]{background:var(--green-mid, #40916c)}.progress-label[data-v-d654f00a]{font-size:12px;color:var(--text-muted, #9ca3af);white-space:nowrap;min-width:30px}.accuracy-high[data-v-d654f00a]{color:var(--green-mid, #40916c);font-weight:500}.accuracy-mid[data-v-d654f00a]{color:#d97706;font-weight:500}.accuracy-low[data-v-d654f00a]{color:var(--red, #ef4444);font-weight:500}.summary-row[data-v-d654f00a]{display:flex;justify-content:space-between;margin-top:16px;padding-top:12px;border-top:1px solid var(--card-border, #e0ddd7);font-size:13px;color:var(--text-secondary, #6b7280)}.loading-state[data-v-d654f00a]{text-align:center;padding:40px 20px}.spinner[data-v-d654f00a]{width:32px;height:32px;border:3px solid #e0e0e0;border-top-color:#2d6a4f;border-radius:50%;animation:spin-d654f00a .8s linear infinite;margin:0 auto 12px}@keyframes spin-d654f00a{to{transform:rotate(360deg)}}.empty-state[data-v-d654f00a]{text-align:center;padding:24px;color:var(--text-muted, #9ca3af)}.error-state[data-v-d654f00a]{text-align:center;padding:24px}.error-text[data-v-d654f00a]{color:var(--red, #ef4444);margin-bottom:16px}.btn[data-v-d654f00a]{padding:10px 20px;border-radius:var(--radius-button, 6px);font-size:15px;font-weight:500;cursor:pointer;border:none;transition:all .2s;font-family:var(--font-body, "DM Sans", sans-serif)}.btn-secondary[data-v-d654f00a]{background:#f3f4f6;color:var(--text-primary, #1a1a1a)}.btn-secondary[data-v-d654f00a]:hover{background:#e5e7eb}.needs-attention[data-v-0ab84807]{background:#fff;border-radius:var(--radius-card, 10px);border:1px solid var(--card-border, #e0ddd7);padding:20px;margin-bottom:16px}.panel-header[data-v-0ab84807]{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.panel-title[data-v-0ab84807]{font-family:var(--font-heading, "Source Serif 4", serif);font-size:18px;color:var(--green-dark, #2d6a4f);margin:0}.clear-btn[data-v-0ab84807]{padding:4px 12px;background:none;border:1px solid var(--card-border, #e0ddd7);border-radius:var(--radius-button, 6px);font-size:12px;color:var(--text-secondary, #6b7280);cursor:pointer;font-family:var(--font-body, "DM Sans", sans-serif);transition:all .2s}.clear-btn[data-v-0ab84807]:hover{background:#f3f4f6;color:var(--text-primary, #1a1a1a)}.empty-state[data-v-0ab84807]{color:var(--text-muted, #9ca3af);font-size:14px;text-align:center;padding:16px}.attention-list[data-v-0ab84807]{display:flex;flex-direction:column;gap:8px}.attention-item[data-v-0ab84807]{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border-radius:var(--radius-button, 6px);font-size:13px;line-height:1.4}.attention-item.due_soon[data-v-0ab84807]{background:#fff8e1;border-left:3px solid #ff9800}.attention-item.low_score[data-v-0ab84807]{background:#fff3f3;border-left:3px solid #ef5350}.item-icon[data-v-0ab84807]{flex-shrink:0;font-size:14px}.item-text[data-v-0ab84807]{color:var(--text-primary, #1a1a1a)}.recent-activity[data-v-39e672f5]{background:#fff;border-radius:var(--radius-card, 10px);border:1px solid var(--card-border, #e0ddd7);padding:20px}.panel-header[data-v-39e672f5]{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.panel-title[data-v-39e672f5]{font-family:var(--font-heading, "Source Serif 4", serif);font-size:18px;color:var(--green-dark, #2d6a4f);margin:0}.clear-btn[data-v-39e672f5]{padding:4px 12px;background:none;border:1px solid var(--card-border, #e0ddd7);border-radius:var(--radius-button, 6px);font-size:12px;color:var(--text-secondary, #6b7280);cursor:pointer;font-family:var(--font-body, "DM Sans", sans-serif);transition:all .2s}.clear-btn[data-v-39e672f5]:hover{background:#f3f4f6;color:var(--text-primary, #1a1a1a)}.empty-state[data-v-39e672f5]{color:var(--text-muted, #9ca3af);font-size:14px;text-align:center;padding:16px}.activity-list[data-v-39e672f5]{display:flex;flex-direction:column;gap:6px}.activity-item[data-v-39e672f5]{display:flex;align-items:flex-start;gap:10px;padding:8px 10px;border-radius:var(--radius-button, 6px);font-size:13px}.activity-item[data-v-39e672f5]:hover{background:#f8f9fa}.event-icon[data-v-39e672f5]{flex-shrink:0;width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;color:#fff}.event-icon.assignment_completed[data-v-39e672f5]{background:#4caf50}.event-icon.student_joined[data-v-39e672f5]{background:#1565c0}.event-content[data-v-39e672f5]{flex:1;display:flex;justify-content:space-between;align-items:baseline;gap:8px}.event-text[data-v-39e672f5]{color:var(--text-primary, #1a1a1a);line-height:1.3}.event-time[data-v-39e672f5]{color:var(--text-muted, #9ca3af);font-size:12px;white-space:nowrap;flex-shrink:0}.teacher-lobby[data-v-364209cc]{padding:20px 0}.welcome-section[data-v-364209cc]{text-align:center;padding:32px;background:#fff;border-radius:var(--radius-card, 10px);border:1px solid var(--card-border, #e0ddd7);margin-bottom:24px}.welcome-title[data-v-364209cc]{font-family:var(--font-heading, "Source Serif 4", serif);font-size:28px;color:var(--green-dark, #2d6a4f);margin-bottom:8px}.welcome-subtitle[data-v-364209cc]{color:var(--text-secondary, #6b7280);max-width:500px;margin:0 auto}.quick-actions[data-v-364209cc]{display:flex;gap:12px;justify-content:center;margin-bottom:24px}.action-btn[data-v-364209cc]{display:inline-flex;align-items:center;gap:6px;padding:10px 20px;border-radius:var(--radius-button, 6px);font-size:14px;font-weight:500;text-decoration:none;cursor:pointer;transition:all .2s;border:none;font-family:var(--font-body, "DM Sans", sans-serif)}.action-btn.create[data-v-364209cc]{background:var(--green-mid, #40916c);color:#fff}.action-btn.create[data-v-364209cc]:hover{background:var(--green-dark, #2d6a4f)}.action-btn.assign[data-v-364209cc]{background:#e3f2fd;color:#1565c0}.action-btn.assign[data-v-364209cc]:hover{background:#bbdefb}.action-btn.admin[data-v-364209cc]{background:#f3e8ff;color:#7c3aed}.action-btn.admin[data-v-364209cc]:hover{background:#e9d5ff}.dashboard-grid[data-v-364209cc]{display:grid;grid-template-columns:3fr 2fr;gap:24px;margin-bottom:32px}.section-title[data-v-364209cc]{font-family:var(--font-heading, "Source Serif 4", serif);font-size:20px;color:var(--green-dark, #2d6a4f);margin:0 0 16px}.classrooms-section[data-v-364209cc]{margin-bottom:0}.classroom-cards[data-v-364209cc],.right-column[data-v-364209cc]{display:flex;flex-direction:column;gap:16px}.collections-section[data-v-364209cc]{margin-top:8px}.loading-state[data-v-364209cc]{text-align:center;padding:60px 20px;grid-column:1 / -1}.spinner[data-v-364209cc]{width:40px;height:40px;border:3px solid #e0e0e0;border-top-color:#2d6a4f;border-radius:50%;animation:spin-364209cc .8s linear infinite;margin:0 auto 16px}@keyframes spin-364209cc{to{transform:rotate(360deg)}}.empty-state[data-v-364209cc]{text-align:center;padding:32px;background:#fff;border-radius:var(--radius-card, 10px);border:1px dashed var(--card-border, #e0ddd7)}.empty-title[data-v-364209cc]{font-weight:500;color:var(--text-primary, #1a1a1a);margin-bottom:4px}.empty-desc[data-v-364209cc]{color:var(--text-secondary, #6b7280);font-size:14px}@media (max-width: 768px){.dashboard-grid[data-v-364209cc]{grid-template-columns:1fr}}.stats-row[data-v-a14a2199]{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}.stat-card[data-v-a14a2199]{background:#fff;border-radius:var(--radius-card, 10px);border:1px solid var(--card-border, #e0ddd7);border-top:3px solid;padding:20px;text-align:center}.stat-number[data-v-a14a2199]{font-family:var(--font-heading, "Source Serif 4", serif);font-size:32px;font-weight:700;color:var(--text-primary, #1a1a1a);margin-bottom:4px}.stat-label[data-v-a14a2199]{font-size:13px;color:var(--text-secondary, #6b7280);font-weight:500}@media (max-width: 600px){.stats-row[data-v-a14a2199]{grid-template-columns:repeat(2,1fr)}}.popular-lessons[data-v-079bd4f8]{background:#fff;border-radius:var(--radius-card, 10px);border:1px solid var(--card-border, #e0ddd7);padding:20px}.panel-title[data-v-079bd4f8]{font-family:var(--font-heading, "Source Serif 4", serif);font-size:18px;color:var(--green-dark, #2d6a4f);margin:0 0 16px}.empty-state[data-v-079bd4f8]{color:var(--text-muted, #9ca3af);font-size:14px;text-align:center;padding:24px}.table-wrap[data-v-079bd4f8]{overflow-x:auto}.lessons-table[data-v-079bd4f8]{width:100%;border-collapse:collapse;font-size:13px}.lessons-table thead th[data-v-079bd4f8]{text-align:left;padding:8px 10px;border-bottom:2px solid #eee;font-size:11px;text-transform:uppercase;color:#999;font-weight:600;letter-spacing:.3px}.lessons-table tbody td[data-v-079bd4f8]{padding:8px 10px;border-bottom:1px solid #f0f0f0}.num-col[data-v-079bd4f8]{text-align:right;white-space:nowrap}.lesson-name[data-v-079bd4f8]{font-weight:500;color:var(--text-primary, #1a1a1a)}.accuracy-badge[data-v-079bd4f8]{display:inline-block;padding:2px 8px;border-radius:10px;font-size:12px;font-weight:600}.accuracy-badge.high[data-v-079bd4f8]{background:#e8f5e9;color:#2e7d32}.accuracy-badge.mid[data-v-079bd4f8]{background:#fff3e0;color:#e65100}.accuracy-badge.low[data-v-079bd4f8]{background:#ffebee;color:#c62828}.database-panel[data-v-d5945aff]{background:#fff;border-radius:var(--radius-card, 10px);border:1px solid var(--card-border, #e0ddd7);padding:20px}.panel-title[data-v-d5945aff]{font-family:var(--font-heading, "Source Serif 4", serif);font-size:18px;color:var(--green-dark, #2d6a4f);margin:0 0 16px}.empty-state[data-v-d5945aff]{color:var(--text-muted, #9ca3af);font-size:14px;text-align:center;padding:24px}.db-size[data-v-d5945aff]{font-size:14px;color:var(--text-secondary, #6b7280);margin-bottom:12px;padding:8px 12px;background:#f8f9fa;border-radius:var(--radius-button, 6px)}.db-size strong[data-v-d5945aff]{color:var(--text-primary, #1a1a1a)}.tables-table[data-v-d5945aff]{width:100%;border-collapse:collapse;font-size:13px}.tables-table thead th[data-v-d5945aff]{text-align:left;padding:6px 10px;border-bottom:2px solid #eee;font-size:11px;text-transform:uppercase;color:#999;font-weight:600}.tables-table tbody td[data-v-d5945aff]{padding:6px 10px;border-bottom:1px solid #f0f0f0}.num-col[data-v-d5945aff]{text-align:right}.table-name[data-v-d5945aff]{font-family:monospace;font-size:12px;color:var(--text-primary, #1a1a1a)}.system-health[data-v-48e6b981]{background:#fff;border-radius:var(--radius-card, 10px);border:1px solid var(--card-border, #e0ddd7);padding:20px}.health-header[data-v-48e6b981]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.panel-title[data-v-48e6b981]{font-family:var(--font-heading, "Source Serif 4", serif);font-size:18px;color:var(--green-dark, #2d6a4f);margin:0}.refresh-btn[data-v-48e6b981]{padding:6px 14px;background:#fff;color:var(--green-mid, #40916c);border:1px solid var(--green-mid, #40916c);border-radius:var(--radius-button, 6px);font-size:13px;font-weight:500;cursor:pointer;transition:all .2s;font-family:var(--font-body, "DM Sans", sans-serif)}.refresh-btn[data-v-48e6b981]:hover:not(:disabled){background:var(--green-pale, #d8f3dc)}.refresh-btn[data-v-48e6b981]:disabled{opacity:.5;cursor:not-allowed}.empty-state[data-v-48e6b981]{color:var(--text-muted, #9ca3af);font-size:14px;text-align:center;padding:24px}.health-rows[data-v-48e6b981]{display:flex;flex-direction:column;gap:10px}.health-row[data-v-48e6b981]{display:flex;align-items:center;gap:10px;padding:8px 12px;background:#f8f9fa;border-radius:var(--radius-button, 6px);font-size:14px}.status-dot[data-v-48e6b981]{width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-dot.green[data-v-48e6b981]{background:#4caf50}.status-dot.red[data-v-48e6b981]{background:#ef5350}.status-dot.yellow[data-v-48e6b981]{background:#ff9800}.status-dot.blue[data-v-48e6b981]{background:#1565c0}.health-label[data-v-48e6b981]{font-weight:500;color:var(--text-primary, #1a1a1a);min-width:120px}.health-value[data-v-48e6b981]{color:var(--text-secondary, #6b7280)}.admin-lobby[data-v-125e10d4]{padding:20px 0}.admin-header[data-v-125e10d4]{position:relative;text-align:center;padding:32px;background:#fff;border-radius:var(--radius-card, 10px);border:1px solid var(--card-border, #e0ddd7);margin-bottom:24px}.back-btn[data-v-125e10d4]{position:absolute;top:16px;left:16px;background:none;border:1px solid var(--card-border, #e0ddd7);border-radius:var(--radius-button, 6px);padding:6px 14px;font-size:13px;color:var(--text-secondary, #6b7280);cursor:pointer;font-family:var(--font-body, "DM Sans", sans-serif);transition:all .2s}.back-btn[data-v-125e10d4]:hover{background:#f3f4f6;color:var(--text-primary, #1a1a1a)}.admin-title[data-v-125e10d4]{font-family:var(--font-heading, "Source Serif 4", serif);font-size:28px;color:var(--green-dark, #2d6a4f);margin-bottom:8px}.admin-subtitle[data-v-125e10d4]{color:var(--text-secondary, #6b7280)}.loading-state[data-v-125e10d4]{text-align:center;padding:60px 20px}.spinner[data-v-125e10d4]{width:40px;height:40px;border:3px solid #e0e0e0;border-top-color:#2d6a4f;border-radius:50%;animation:spin-125e10d4 .8s linear infinite;margin:0 auto 16px}@keyframes spin-125e10d4{to{transform:rotate(360deg)}}.error-state[data-v-125e10d4]{text-align:center;padding:40px;color:#d32f2f}.retry-btn[data-v-125e10d4]{margin-top:12px;padding:8px 20px;background:#d32f2f;color:#fff;border:none;border-radius:var(--radius-button, 6px);font-size:14px;cursor:pointer}.content-grid[data-v-125e10d4]{display:grid;grid-template-columns:3fr 2fr;gap:24px;margin-bottom:24px}.announcement-section[data-v-125e10d4]{background:#fff;border-radius:var(--radius-card, 10px);border:1px solid var(--card-border, #e0ddd7);padding:20px;margin-bottom:24px}.section-title[data-v-125e10d4]{font-family:var(--font-heading, "Source Serif 4", serif);font-size:18px;color:var(--green-dark, #2d6a4f);margin:0 0 16px}.current-announcement[data-v-125e10d4]{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;border-radius:var(--radius-button, 6px)}.current-announcement.info[data-v-125e10d4]{background:#e3f2fd;border-left:3px solid #1565c0}.current-announcement.warning[data-v-125e10d4]{background:#fff8e1;border-left:3px solid #e65100}.current-announcement.urgent[data-v-125e10d4]{background:#ffebee;border-left:3px solid #c62828}.announcement-info[data-v-125e10d4]{display:flex;flex-direction:column;gap:4px;flex:1}.announcement-type-badge[data-v-125e10d4]{font-size:11px;font-weight:600;text-transform:uppercase;width:fit-content;padding:1px 8px;border-radius:10px}.announcement-type-badge.info[data-v-125e10d4]{background:#bbdefb;color:#1565c0}.announcement-type-badge.warning[data-v-125e10d4]{background:#ffe082;color:#e65100}.announcement-type-badge.urgent[data-v-125e10d4]{background:#ef9a9a;color:#c62828}.announcement-message[data-v-125e10d4]{font-size:14px;color:var(--text-primary, #1a1a1a)}.announcement-message[data-v-125e10d4] .ann-circle{display:inline-block;width:14px;height:14px;border-radius:50%;vertical-align:middle;margin:0 1px}.announcement-expires[data-v-125e10d4]{font-size:12px;color:var(--text-muted, #9ca3af)}.announcement-actions[data-v-125e10d4]{display:flex;flex-direction:column;gap:6px}.edit-btn[data-v-125e10d4]{padding:6px 16px;background:#e3f2fd;color:#1565c0;border:none;border-radius:var(--radius-button, 6px);font-size:13px;cursor:pointer;white-space:nowrap;font-family:var(--font-body, "DM Sans", sans-serif)}.edit-btn[data-v-125e10d4]:hover{background:#bbdefb}.cancel-btn[data-v-125e10d4]{padding:8px 16px;background:#f3f4f6;color:var(--text-secondary, #6b7280);border:1px solid var(--card-border, #e0ddd7);border-radius:var(--radius-button, 6px);font-size:13px;cursor:pointer;font-family:var(--font-body, "DM Sans", sans-serif)}.cancel-btn[data-v-125e10d4]:hover{background:#e5e7eb}.clear-btn[data-v-125e10d4]{padding:6px 16px;background:#ef5350;color:#fff;border:none;border-radius:var(--radius-button, 6px);font-size:13px;cursor:pointer;white-space:nowrap;font-family:var(--font-body, "DM Sans", sans-serif)}.clear-btn[data-v-125e10d4]:hover{background:#d32f2f}.clear-btn[data-v-125e10d4]:disabled{opacity:.6;cursor:not-allowed}.announcement-form[data-v-125e10d4]{display:flex;flex-direction:column;gap:10px}.announcement-input[data-v-125e10d4]{padding:10px 14px;border:1px solid var(--card-border, #e0ddd7);border-radius:var(--radius-button, 6px);font-size:14px;font-family:var(--font-body, "DM Sans", sans-serif);width:100%}.announcement-input[data-v-125e10d4]:focus{outline:none;border-color:var(--green-mid, #40916c)}.form-row[data-v-125e10d4]{display:flex;gap:10px;align-items:center}.type-select[data-v-125e10d4]{padding:8px 12px;border:1px solid var(--card-border, #e0ddd7);border-radius:var(--radius-button, 6px);font-size:13px;font-family:var(--font-body, "DM Sans", sans-serif);background:#fff}.expiry-input[data-v-125e10d4]{padding:8px 12px;border:1px solid var(--card-border, #e0ddd7);border-radius:var(--radius-button, 6px);font-size:13px;font-family:var(--font-body, "DM Sans", sans-serif);flex:1}.publish-btn[data-v-125e10d4]{padding:8px 20px;background:var(--green-mid, #40916c);color:#fff;border:none;border-radius:var(--radius-button, 6px);font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap;font-family:var(--font-body, "DM Sans", sans-serif)}.publish-btn[data-v-125e10d4]:hover{background:var(--green-dark, #2d6a4f)}.publish-btn[data-v-125e10d4]:disabled{opacity:.6;cursor:not-allowed}.name-correction-section[data-v-125e10d4]{background:#fff;border-radius:var(--radius-card, 10px);border:1px solid var(--card-border, #e0ddd7);padding:20px;margin-top:24px}.search-row[data-v-125e10d4]{display:flex;gap:10px;margin-bottom:12px}.search-input[data-v-125e10d4]{flex:1;padding:8px 14px;border:1px solid var(--card-border, #e0ddd7);border-radius:var(--radius-button, 6px);font-size:14px;font-family:var(--font-body, "DM Sans", sans-serif)}.search-input[data-v-125e10d4]:focus{outline:none;border-color:var(--green-mid, #40916c)}.search-btn[data-v-125e10d4]{padding:8px 20px;background:var(--green-mid, #40916c);color:#fff;border:none;border-radius:var(--radius-button, 6px);font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap;font-family:var(--font-body, "DM Sans", sans-serif)}.search-btn[data-v-125e10d4]:hover{background:var(--green-dark, #2d6a4f)}.search-btn[data-v-125e10d4]:disabled{opacity:.6;cursor:not-allowed}.search-results[data-v-125e10d4]{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}.search-result-item[data-v-125e10d4]{display:flex;align-items:center;gap:12px;padding:8px 12px;border-radius:var(--radius-button, 6px);cursor:pointer;font-size:13px;border:1px solid transparent}.search-result-item[data-v-125e10d4]:hover{background:#f8f9fa}.search-result-item.selected[data-v-125e10d4]{background:#e3f2fd;border-color:#bbdefb}.result-name[data-v-125e10d4]{font-weight:500;color:var(--text-primary, #1a1a1a)}.result-email[data-v-125e10d4]{color:var(--text-secondary, #6b7280)}.corrected-badge[data-v-125e10d4]{font-size:10px;text-transform:uppercase;font-weight:600;padding:1px 6px;border-radius:8px;background:#e8f5e9;color:#2e7d32}.no-results[data-v-125e10d4]{color:var(--text-muted, #9ca3af);font-size:13px;padding:8px 0}.edit-form[data-v-125e10d4]{margin-top:12px;padding-top:12px;border-top:1px solid var(--card-border, #e0ddd7)}.edit-row[data-v-125e10d4]{display:flex;gap:10px;align-items:flex-end}.edit-field[data-v-125e10d4]{flex:1}.edit-field label[data-v-125e10d4]{display:block;font-size:12px;color:var(--text-secondary, #6b7280);margin-bottom:4px}.edit-input[data-v-125e10d4]{width:100%;padding:8px 12px;border:1px solid var(--card-border, #e0ddd7);border-radius:var(--radius-button, 6px);font-size:14px;font-family:var(--font-body, "DM Sans", sans-serif)}.edit-input[data-v-125e10d4]:focus{outline:none;border-color:var(--green-mid, #40916c)}.save-btn[data-v-125e10d4]{padding:8px 20px;background:var(--green-mid, #40916c);color:#fff;border:none;border-radius:var(--radius-button, 6px);font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap;font-family:var(--font-body, "DM Sans", sans-serif);height:fit-content}.save-btn[data-v-125e10d4]:hover{background:var(--green-dark, #2d6a4f)}.save-btn[data-v-125e10d4]:disabled{opacity:.6;cursor:not-allowed}.save-feedback[data-v-125e10d4]{margin-top:8px;font-size:13px}.save-feedback.success[data-v-125e10d4]{color:#2e7d32}.save-feedback.error[data-v-125e10d4]{color:#d32f2f}.decrypt-section[data-v-125e10d4]{background:#fff;border-radius:var(--radius-card, 10px);border:1px solid var(--card-border, #e0ddd7);padding:20px;margin-top:24px}.decrypt-description[data-v-125e10d4]{font-size:13px;color:var(--text-secondary, #6b7280);margin-bottom:12px}.decrypt-description code[data-v-125e10d4]{background:#f3f4f6;padding:1px 5px;border-radius:3px;font-size:12px}.decrypt-actions[data-v-125e10d4]{margin-bottom:12px}.decrypt-btn[data-v-125e10d4]{padding:8px 20px;background:#7c3aed;color:#fff;border:none;border-radius:var(--radius-button, 6px);font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap;font-family:var(--font-body, "DM Sans", sans-serif)}.decrypt-btn[data-v-125e10d4]:hover{background:#6d28d9}.decrypt-btn[data-v-125e10d4]:disabled{opacity:.6;cursor:not-allowed}.decrypt-progress[data-v-125e10d4]{text-align:center;padding:16px 0;color:var(--text-secondary, #6b7280);font-size:13px}.decrypt-result[data-v-125e10d4]{padding:12px 16px;border-radius:var(--radius-button, 6px);background:#e8f5e9;font-size:13px}.decrypt-result.error[data-v-125e10d4]{background:#ffebee;color:#c62828}.decrypt-hint[data-v-125e10d4]{margin-top:6px;color:var(--text-muted, #9ca3af);font-size:12px}@media (max-width: 768px){.content-grid[data-v-125e10d4]{grid-template-columns:1fr}.form-row[data-v-125e10d4],.edit-row[data-v-125e10d4]{flex-direction:column}}.lobby-view[data-v-a18f3d18]{flex:1}.modal-overlay[data-v-8bdcc044]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000;padding:20px}.modal-content[data-v-8bdcc044]{background:#fff;border-radius:var(--radius-card, 10px);max-width:560px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 16px 48px #0003}.step[data-v-8bdcc044]{padding:32px}.step h2[data-v-8bdcc044]{font-family:var(--font-heading, "Source Serif 4", serif);font-size:24px;color:var(--green-dark, #2d6a4f);margin-bottom:8px}.step-desc[data-v-8bdcc044]{color:var(--text-secondary, #6b7280);margin-bottom:24px}.capabilities[data-v-8bdcc044]{display:flex;flex-direction:column;gap:16px;margin-bottom:20px}.capability[data-v-8bdcc044]{display:flex;gap:12px;align-items:flex-start}.capability-icon[data-v-8bdcc044]{font-size:28px;line-height:1;flex-shrink:0}.capability strong[data-v-8bdcc044]{display:block;color:var(--text-primary, #1a1a1a);margin-bottom:2px}.capability p[data-v-8bdcc044]{color:var(--text-secondary, #6b7280);font-size:14px;margin:0}.note-box[data-v-8bdcc044]{background:var(--green-pale, #d8f3dc);border-radius:var(--radius-button, 6px);padding:12px 16px;margin-bottom:24px}.note-box strong[data-v-8bdcc044]{color:var(--green-dark, #2d6a4f);display:block;margin-bottom:4px}.note-box p[data-v-8bdcc044]{color:var(--green-dark, #2d6a4f);font-size:14px;margin:0;opacity:.8}.terms-scroll[data-v-8bdcc044]{max-height:300px;overflow-y:auto;border:1px solid var(--card-border, #e0ddd7);border-radius:var(--radius-button, 6px);padding:16px;margin-bottom:16px;font-size:14px;line-height:1.6;color:var(--text-primary, #1a1a1a)}.terms-scroll h4[data-v-8bdcc044]{margin:16px 0 6px;font-size:15px;color:var(--green-dark, #2d6a4f)}.terms-scroll h4[data-v-8bdcc044]:first-child{margin-top:0}.terms-scroll p[data-v-8bdcc044]{margin:0 0 8px}.terms-scroll ul[data-v-8bdcc044]{margin:0 0 8px 20px}.terms-scroll li[data-v-8bdcc044]{margin-bottom:4px}.agreement-checkbox[data-v-8bdcc044]{display:flex;gap:8px;align-items:flex-start;margin-bottom:20px;cursor:pointer;font-size:14px;color:var(--text-primary, #1a1a1a);line-height:1.5}.agreement-checkbox input[type=checkbox][data-v-8bdcc044]{margin-top:4px;flex-shrink:0}.success-icon[data-v-8bdcc044]{font-size:48px;text-align:center;margin-bottom:12px}.step-confirmation h2[data-v-8bdcc044],.step-confirmation .step-desc[data-v-8bdcc044]{text-align:center}.next-steps[data-v-8bdcc044]{text-align:left;padding-left:20px;margin-bottom:24px;color:var(--text-primary, #1a1a1a)}.next-steps li[data-v-8bdcc044]{margin-bottom:8px;line-height:1.5}.step-actions[data-v-8bdcc044]{display:flex;gap:12px;justify-content:flex-end}.btn[data-v-8bdcc044]{padding:10px 20px;border-radius:var(--radius-button, 6px);font-size:15px;font-weight:500;cursor:pointer;border:none;transition:all .2s;font-family:var(--font-body, "DM Sans", sans-serif)}.btn[data-v-8bdcc044]:disabled{opacity:.5;cursor:not-allowed}.btn-primary[data-v-8bdcc044]{background:var(--green-mid, #40916c);color:#fff}.btn-primary[data-v-8bdcc044]:hover:not(:disabled){background:var(--green-dark, #2d6a4f)}.btn-secondary[data-v-8bdcc044]{background:#f3f4f6;color:var(--text-primary, #1a1a1a)}.btn-secondary[data-v-8bdcc044]:hover{background:#e5e7eb}.error-text[data-v-8bdcc044]{color:var(--red, #ef4444);font-size:14px;margin-top:8px;text-align:center}.page-footer[data-v-1b649814]{display:flex;justify-content:space-between;align-items:center;padding:16px 0;margin-top:auto;border-top:1px solid var(--card-border, #e0ddd7);font-size:13px;color:var(--text-muted, #9ca3af)}.footer-brand[data-v-1b649814]{font-family:var(--font-body, "DM Sans", sans-serif)}.footer-links[data-v-1b649814]{display:flex;gap:16px}.footer-links a[data-v-1b649814]{color:var(--text-secondary, #6b7280);text-decoration:none;transition:color .2s}.footer-links a[data-v-1b649814]:hover{color:var(--green-mid, #40916c)}@media (max-width: 600px){.page-footer[data-v-1b649814]{flex-direction:column;gap:8px;text-align:center}}.registration-toast{position:fixed;top:16px;left:50%;transform:translate(-50%);background:#2e7d32;color:#fff;padding:12px 24px;border-radius:8px;font-size:14px;z-index:3000;box-shadow:0 4px 12px #0003;animation:toast-fade 4s ease-in-out;pointer-events:none}@keyframes toast-fade{0%{opacity:0;transform:translate(-50%) translateY(-10px)}10%{opacity:1;transform:translate(-50%) translateY(0)}80%{opacity:1}to{opacity:0}}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-body, "DM Sans", "Segoe UI", system-ui, -apple-system, sans-serif);background:var(--bg-warm, #f5f5f5);min-height:100vh}.app{max-width:var(--max-width, 1200px);margin:0 auto;padding:16px;min-height:100vh;display:flex;flex-direction:column}.app-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:12px;border-bottom:2px solid var(--card-border, #ddd)}.app-header h1{font-family:var(--font-heading, "Source Serif 4", serif);font-size:24px;color:var(--green-dark, #333)}.header-right{display:flex;align-items:center;gap:16px}.user-avatar-group{display:flex;align-items:center;gap:6px}.role-badge{font-size:11px;font-weight:600;text-transform:capitalize;padding:2px 8px;border-radius:var(--radius-badge, 12px);border:none;cursor:pointer;font-family:inherit}.role-badge.role-teacher{background:var(--green-pale, #d8f3dc);color:var(--green-dark, #2d6a4f)}.role-badge.role-admin{background:var(--purple-light, #ede9fe);color:#6d28d9}.stats{display:flex;gap:12px;font-size:16px;font-weight:700}.stats .correct{color:#4caf50}.stats .correct:before{content:"✓ "}.stats .wrong{color:#d32f2f}.stats .wrong:before{content:"✗ "}.user-btn{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--green-mid, #667eea) 0%,var(--green-dark, #764ba2) 100%);color:#fff;border:none;font-size:14px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .2s,box-shadow .2s}.user-btn:hover{transform:scale(1.05);box-shadow:0 2px 8px #2d6a4f66}.progress-btn{padding:6px 12px;border-radius:16px;background:#f0f0f0;border:none;font-size:13px;font-weight:500;color:#666;cursor:pointer;transition:all .2s}.progress-btn:hover{background:#e0e0e0;color:#333}.accomplishments-btn{padding:6px 12px;border-radius:16px;background:#e8f5e9;border:none;font-size:13px;font-weight:500;color:#388e3c;cursor:pointer;transition:all .2s}.accomplishments-btn:hover{background:#c8e6c9;color:#2e7d32}.teacher-btn{padding:6px 12px;border-radius:16px;background:#e8eaf6;border:none;font-size:13px;font-weight:500;color:#3949ab;cursor:pointer;transition:all .2s}.teacher-btn:hover{background:#c5cae9;color:#283593}.lessons-btn{padding:6px 12px;border-radius:16px;background:#e3f2fd;border:none;font-size:13px;font-weight:500;color:#1976d2;cursor:pointer;transition:all .2s}.lessons-btn:hover{background:#bbdefb;color:#1565c0}.lobby-btn{padding:6px 12px;border-radius:16px;background:#fff3e0;border:none;font-size:13px;font-weight:500;color:#e65100;cursor:pointer;transition:all .2s}.lobby-btn:hover{background:#ffe0b2;color:#bf360c}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.app-main{display:flex;flex-direction:column;gap:16px;flex:1}.practice-layout{display:grid;grid-template-columns:minmax(0,1fr) 500px;gap:32px;align-items:start;justify-content:center}.practice-left{display:flex;flex-direction:column;gap:12px}.practice-right{display:flex;flex-direction:column;gap:16px;align-items:center}.collection-view{text-align:center;padding:40px;background:#fff;border-radius:var(--radius-card, 8px)}.collection-view h2{margin-bottom:8px;color:var(--text-primary, #333)}.collection-subtitle{margin-bottom:16px;color:var(--text-secondary, #666)}.bidding-box-container{display:flex;flex-direction:column;align-items:center;gap:8px}.turn-indicator{font-size:16px;font-weight:500;color:#007bff}.prompt-text{max-width:400px;padding:12px 16px;background:#e3f2fd;border-left:4px solid #2196f3;border-radius:4px;font-size:14px;line-height:1.5;color:#333;text-align:left;white-space:pre-wrap}.back-btn{padding:8px 16px;font-size:14px;font-weight:500;background:#e0e0e0;color:#333;border:none;border-radius:4px;cursor:pointer;transition:background .2s;margin-top:8px}.back-btn:hover{background:#d0d0d0}.auction-complete{text-align:center;padding:20px;background:#e8f5e9;border-radius:8px;max-width:500px}.auction-complete h3{color:#4caf50;margin-bottom:12px}.full-commentary{text-align:left;font-size:14px;line-height:1.6;color:#333;background:#fff;padding:16px;border-radius:4px;margin-bottom:16px;white-space:pre-wrap}.full-narrative{text-align:left;font-size:14px;line-height:1.6;background:#fff;padding:16px;border-radius:4px;margin-bottom:16px;max-height:350px;overflow-y:auto}.completion-controls{display:flex;justify-content:center;gap:12px;align-items:center}.next-deal-btn{padding:12px 24px;border:none;background:#4caf50;color:#fff;font-size:16px;font-weight:500;border-radius:4px;cursor:pointer}.next-deal-btn:hover{background:#388e3c}.bidding-narrative-container{max-width:500px;padding:20px;background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a}.bidding-narrative{max-height:250px;overflow-y:auto;margin-bottom:16px;padding-right:8px;font-size:15px;line-height:1.6}.narrative-text{display:block;white-space:pre-wrap;margin-bottom:8px}.narrative-text.previous{color:#999}.narrative-text.current{color:#333}.bidding-box-wrapper{display:flex;flex-direction:column;align-items:center;gap:12px}.instruction-panel{max-width:500px;padding:20px;background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a}.instruction-progress{font-size:13px;color:#666;margin-bottom:12px}.instruction-text-container{max-height:300px;overflow-y:auto;margin-bottom:20px;padding-right:8px}.instruction-text{font-size:15px;line-height:1.6;white-space:pre-wrap;margin-bottom:12px}.instruction-text.previous{color:#999;border-left:2px solid #ddd;padding-left:12px;margin-left:4px}.instruction-text.current{color:#333}.suit-red{color:#d32f2f}.suit-black{color:#000}.instruction-controls{display:flex;gap:12px;justify-content:center}.commentary-controls{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:10px}.commentary-controls .bidding-box-wrapper,.commentary-controls .card-choice-prompt{width:100%}.instruction-btn{padding:10px 20px;font-size:15px;font-weight:500;border:none;border-radius:4px;cursor:pointer;transition:background .2s}.instruction-btn.primary{background:#2196f3;color:#fff}.instruction-btn.primary:hover{background:#1976d2}.instruction-btn.secondary{background:#e0e0e0;color:#333}.instruction-btn.secondary:hover{background:#d0d0d0}.card-choice-prompt{font-size:15px;font-weight:500;color:#1976d2;padding:10px 20px;background:#e3f2fd;border-radius:4px}.display-commentary{max-width:500px;padding:16px;background:#fff;border-radius:8px;font-size:14px;line-height:1.6;color:#333;white-space:pre-wrap}.load-another{text-align:center;margin-top:8px;display:flex;justify-content:center;align-items:center;gap:8px}.load-link{color:#666;font-size:13px;cursor:pointer;text-decoration:underline;background:none;border:none;padding:0}.load-link:hover{color:#007bff}.separator{color:#ccc;font-size:13px}@media (max-width: 900px){.practice-layout{grid-template-columns:1fr;gap:16px}.practice-right{align-items:stretch}}@media (max-width: 600px){.app-header{flex-direction:column;gap:8px}.app-header h1{font-size:20px}}:root{--font-heading: "Source Serif 4", serif;--font-body: "DM Sans", sans-serif;--green-dark: #2d6a4f;--green-mid: #40916c;--green-accent: #52b788;--green-light: #b7e4c7;--green-pale: #d8f3dc;--blue: #3b82f6;--blue-light: #dbeafe;--purple: #8b5cf6;--purple-light: #ede9fe;--amber: #f59e0b;--amber-light: #fef3c7;--red: #ef4444;--red-light: #fee2e2;--bg-warm: #f5f3ef;--bg-white: #ffffff;--card-border: #e0ddd7;--card-shadow: rgba(0, 0, 0, .06);--text-primary: #1a1a1a;--text-secondary: #6b7280;--text-muted: #9ca3af;--badge-new-bg: #dbeafe;--badge-new-text: #1d4ed8;--badge-progress-bg: #fef3c7;--badge-progress-text: #b45309;--badge-complete-bg: #d1fae5;--badge-complete-text: #047857;--badge-overdue-bg: #fee2e2;--badge-overdue-text: #b91c1c;--radius-card: 10px;--radius-button: 6px;--radius-badge: 12px;--max-width: 1200px;--header-height: 56px}
