*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-base:#0d0f14;--bg-surface:#13161e;--bg-card:#1a1e2a;--bg-card-hover:#1f2435;--border:#2a2f42;--border-focus:#6366f1;--accent:#6366f1;--accent-light:#818cf8;--accent-glow:#6366f140;--accent-2:#06b6d4;--success:#10b981;--error:#ef4444;--error-bg:#ef44441a;--warning:#f59e0b;--text-primary:#f1f5f9;--text-secondary:#94a3b8;--text-muted:#64748b;--input-bg:#0f1117;--input-border:#2a2f42;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-xl:20px;--shadow-sm:0 1px 3px #0006;--shadow-md:0 4px 20px #00000080;--shadow-lg:0 8px 40px #0009;--transition:.2s ease}html,body,#root{height:100%}body{background:var(--bg-base);color:var(--text-primary);-webkit-font-smoothing:antialiased;font-family:Inter,system-ui,-apple-system,sans-serif;line-height:1.6;overflow-x:hidden}.page-wrapper{background:radial-gradient(ellipse 80% 50% at 50% -20%, #6366f11f, transparent), radial-gradient(ellipse 60% 40% at 80% 80%, #06b6d40f, transparent), var(--bg-base);min-height:100vh;padding:40px 20px 80px}.page-header{text-align:center;margin-bottom:40px}.page-header .badge{color:var(--accent-light);letter-spacing:.05em;text-transform:uppercase;background:#6366f126;border:1px solid #6366f14d;border-radius:99px;align-items:center;gap:6px;margin-bottom:16px;padding:6px 14px;font-size:12px;font-weight:600;display:inline-flex}.page-header h1{background:linear-gradient(135deg, #f1f5f9 30%, var(--accent-light) 70%, var(--accent-2));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin-bottom:12px;font-size:clamp(28px,5vw,44px);font-weight:800;line-height:1.2}.page-header p{color:var(--text-secondary);max-width:480px;margin:0 auto;font-size:15px}.form-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-xl);max-width:860px;box-shadow:var(--shadow-lg);margin:0 auto;padding:40px;position:relative}.form-card:before{content:"";border-radius:var(--radius-xl);-webkit-mask-composite:xor;pointer-events:none;background:linear-gradient(135deg,#6366f14d,#0000 60%);padding:1px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);-webkit-mask-position:0 0,0 0;-webkit-mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;-webkit-mask-source-type:auto,auto;mask-mode:match-source,match-source}.section-title{letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);align-items:center;gap:8px;margin-bottom:16px;font-size:11px;font-weight:700;display:flex}.section-title:after{content:"";background:var(--border);flex:1;height:1px}.row-2{grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px;display:grid}.row-1{grid-template-columns:1fr;gap:16px;margin-bottom:16px;display:grid}@media (width<=600px){.row-2{grid-template-columns:1fr}.form-card{padding:24px 20px}}.field{flex-direction:column;gap:6px;display:flex}.field label{color:var(--text-secondary);letter-spacing:.02em;font-size:13px;font-weight:600}.field label .req{color:var(--accent-light);margin-left:2px}.input-wrap{position:relative}.input-wrap .spinner-inline{position:absolute;top:50%;right:36px;transform:translateY(-50%)}select,input[type=text],textarea{background:var(--input-bg);border:1px solid var(--input-border);border-radius:var(--radius-md);width:100%;color:var(--text-primary);transition:border-color var(--transition), box-shadow var(--transition), background var(--transition);appearance:none;outline:none;padding:11px 14px;font-family:inherit;font-size:14px}select{cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;padding-right:38px}select:focus,input[type=text]:focus,textarea:focus{border-color:var(--border-focus);box-shadow:0 0 0 3px var(--accent-glow);background:#111420}select:disabled,input:disabled,textarea:disabled{opacity:.45;cursor:not-allowed}select option{color:var(--text-primary);background:#1a1e2a}textarea{resize:vertical;min-height:90px}input[type=file]{background:var(--input-bg);border:1.5px dashed var(--input-border);border-radius:var(--radius-md);width:100%;color:var(--text-secondary);cursor:pointer;transition:border-color var(--transition);padding:10px 14px;font-family:inherit;font-size:13px}input[type=file]:hover{border-color:var(--accent)}input[type=file]::file-selector-button{border-radius:var(--radius-sm);color:var(--accent-light);cursor:pointer;transition:background var(--transition);background:#6366f126;border:1px solid #6366f159;margin-right:10px;padding:4px 12px;font-family:inherit;font-size:12px;font-weight:600}input[type=file]::file-selector-button:hover{background:#6366f14d}.field.has-error select,.field.has-error input[type=text],.field.has-error textarea{border-color:var(--error)}.field-error{color:var(--error);align-items:center;gap:4px;margin-top:2px;font-size:12px;display:flex}@keyframes spin{to{transform:rotate(360deg)}}.spinner{border:2px solid #6366f14d;border-top-color:var(--accent);border-radius:50%;flex-shrink:0;width:14px;height:14px;animation:.7s linear infinite spin;display:inline-block}.divider{background:var(--border);height:1px;margin:28px 0}.chapters-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.chapters-count{color:var(--text-muted);background:var(--bg-card);border:1px solid var(--border);border-radius:99px;padding:2px 10px;font-size:13px}@keyframes slideIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.chapter-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);transition:border-color var(--transition), box-shadow var(--transition);margin-bottom:14px;padding:24px;animation:.25s slideIn;position:relative}.chapter-card:hover{border-color:#6366f140;box-shadow:0 4px 20px #0000004d}.chapter-card-header{justify-content:space-between;align-items:center;margin-bottom:18px;display:flex}.chapter-num{align-items:center;gap:10px;display:flex}.chapter-num .num-badge{background:linear-gradient(135deg, var(--accent), var(--accent-2));color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:12px;font-weight:700;display:flex}.chapter-num span{color:var(--text-secondary);font-size:13px;font-weight:600}.btn-remove{border-radius:var(--radius-sm);color:#f87171;cursor:pointer;transition:background var(--transition), border-color var(--transition);background:#ef444414;border:1px solid #ef444433;align-items:center;gap:6px;padding:6px 12px;font-family:inherit;font-size:12px;font-weight:600;display:flex}.btn-remove:hover{background:#ef44442e;border-color:#ef444466}.chapter-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}@media (width<=600px){.chapter-grid{grid-template-columns:1fr}}.chapter-grid .field-full{grid-column:1/-1}.btn-add{border-radius:var(--radius-md);color:var(--accent-light);cursor:pointer;width:100%;transition:background var(--transition), border-color var(--transition);background:#6366f11a;border:1.5px dashed #6366f166;justify-content:center;align-items:center;gap:8px;margin-bottom:28px;padding:11px 20px;font-family:inherit;font-size:14px;font-weight:600;display:flex}.btn-add:hover{background:#6366f12e;border-color:#6366f1b3}.btn-submit{background:linear-gradient(135deg, var(--accent) 0%, #4f46e5 50%, var(--accent-2) 100%);border-radius:var(--radius-md);color:#fff;cursor:pointer;letter-spacing:.02em;width:100%;transition:opacity var(--transition), transform var(--transition), box-shadow var(--transition);background-size:200% 200%;border:none;justify-content:center;align-items:center;gap:10px;padding:15px;font-family:inherit;font-size:16px;font-weight:700;display:flex;box-shadow:0 4px 20px #6366f159}.btn-submit:hover:not(:disabled){opacity:.92;transform:translateY(-1px);box-shadow:0 8px 30px #6366f180}.btn-submit:active:not(:disabled){transform:translateY(0)}.btn-submit:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn-submit .spinner{border-width:2.5px;border-color:#fff #ffffff4d #ffffff4d;width:18px;height:18px}@keyframes toastIn{0%{opacity:0;transform:translateY(-12px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}.toast{border-radius:var(--radius-md);align-items:flex-start;gap:12px;margin-bottom:24px;padding:14px 18px;font-size:14px;font-weight:500;line-height:1.5;animation:.3s toastIn;display:flex}.toast-success{color:#34d399;background:#10b9811f;border:1px solid #10b9814d}.toast-error{background:var(--error-bg);color:#f87171;border:1px solid #ef44444d}.toast-icon{flex-shrink:0;margin-top:1px;font-size:18px}.validation-hint{color:var(--text-muted);text-align:center;margin-top:12px;font-size:12px}.created-by-ai{border-radius:var(--radius-md);color:var(--accent-light);letter-spacing:.06em;cursor:default;-webkit-user-select:none;user-select:none;background:linear-gradient(135deg,#6366f126,#06b6d41a);border:1px solid #6366f159;align-items:center;gap:8px;width:fit-content;padding:10px 16px;font-size:14px;font-weight:700;display:inline-flex}.created-by-ai .ai-icon{background:linear-gradient(135deg, var(--accent-light), var(--accent-2));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:16px}.tab-bar{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);gap:6px;max-width:860px;margin:0 auto 20px;padding:6px;display:flex}.tab-btn{border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;transition:background var(--transition), color var(--transition), box-shadow var(--transition);letter-spacing:.02em;background:0 0;border:none;flex:1;justify-content:center;align-items:center;gap:8px;padding:11px 20px;font-family:inherit;font-size:14px;font-weight:600;display:flex}.tab-btn:hover:not(.active){color:var(--text-primary);background:#6366f114}.tab-btn.active{background:linear-gradient(135deg, var(--accent), #4f46e5);color:#fff;box-shadow:0 4px 14px #6366f159}.tab-icon{font-size:16px}.stream-field{transition:max-height .3s,opacity .3s,margin-bottom .3s;overflow:hidden}.stream-field.hidden{opacity:0;pointer-events:none;max-height:0;margin-bottom:0!important}.stream-field.visible{opacity:1;max-height:120px;margin-bottom:16px}.bulk-template-row{border-radius:var(--radius-md);background:#06b6d40f;border:1px solid #06b6d433;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:16px 20px;display:flex}.bulk-template-info{align-items:center;gap:14px;display:flex}.bulk-template-icon{font-size:28px;line-height:1}.bulk-template-title{color:var(--text-primary);margin-bottom:2px;font-size:14px;font-weight:700}.bulk-template-sub{color:var(--text-secondary);font-size:12px}.btn-template{border-radius:var(--radius-md);color:var(--accent-2);cursor:pointer;white-space:nowrap;transition:background var(--transition), border-color var(--transition);background:#06b6d41f;border:1px solid #06b6d459;flex-shrink:0;align-items:center;gap:7px;padding:9px 18px;font-family:inherit;font-size:13px;font-weight:700;display:inline-flex}.btn-template:hover{background:#06b6d438;border-color:#06b6d499}.drop-zone{border:2px dashed var(--border);border-radius:var(--radius-lg);text-align:center;cursor:pointer;transition:border-color var(--transition), background var(--transition), box-shadow var(--transition);background:#ffffff03;outline:none;margin-top:8px;padding:48px 24px}.drop-zone:hover,.drop-zone:focus{border-color:var(--accent);background:#6366f10a}.drop-zone.dragging{border-color:var(--accent-2);background:#06b6d40f;box-shadow:0 0 0 4px #06b6d426}.drop-zone.has-file{cursor:default;background:#10b9810a;border-style:solid;border-color:#10b98180;padding:20px 24px}.drop-zone-empty{flex-direction:column;align-items:center;gap:8px;display:flex}.drop-icon{margin-bottom:4px;font-size:44px;line-height:1}.drop-title{color:var(--text-primary);font-size:16px;font-weight:700}.drop-sub{color:var(--text-secondary);font-size:14px}.drop-link{color:var(--accent-light);text-underline-offset:2px;text-decoration:underline}.drop-hint{color:var(--text-muted);margin-top:4px;font-size:12px}.drop-zone-file{text-align:left;align-items:center;gap:14px;display:flex}.drop-file-icon{flex-shrink:0;font-size:26px}.drop-file-name{color:var(--text-primary);word-break:break-all;margin-bottom:2px;font-size:14px;font-weight:700}.drop-file-meta{color:var(--success);font-size:12px;font-weight:600}.btn-clear-file{color:#f87171;cursor:pointer;width:28px;height:28px;transition:background var(--transition);background:#ef44441a;border:1px solid #ef444440;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;font-size:13px;display:flex}.btn-clear-file:hover{background:#ef444438}.parse-error-box{background:var(--error-bg);border-radius:var(--radius-md);border:1px solid #ef44444d;margin-top:16px;padding:14px 18px}.parse-error-title{color:#f87171;margin-bottom:8px;font-size:13px;font-weight:700}.parse-error-list{flex-direction:column;gap:4px;padding-left:18px;list-style:outside;display:flex}.parse-error-list li{color:#fca5a5;font-size:13px}.bulk-info-banner{border-radius:var(--radius-md);color:var(--text-secondary);background:#6366f114;border:1px solid #6366f140;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:12px 16px;font-size:13px;display:flex}.bulk-info-banner strong{color:var(--accent-light)}.btn-reset-bulk{border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);cursor:pointer;transition:border-color var(--transition), color var(--transition);white-space:nowrap;background:0 0;margin-left:auto;padding:4px 10px;font-family:inherit;font-size:12px;font-weight:600}.btn-reset-bulk:hover{border-color:var(--error);color:#f87171}.btn-another-json{border-radius:var(--radius-md);color:var(--success);cursor:pointer;transition:background var(--transition);background:#10b9811a;border:1px solid #10b9814d;align-items:center;gap:8px;margin-bottom:20px;padding:10px 18px;font-family:inherit;font-size:14px;font-weight:600;display:flex}.btn-another-json:hover{background:#10b98133}.bulk-sql-info-row{border-radius:var(--radius-md);background:#6366f112;border:1px solid #6366f133;align-items:flex-start;gap:14px;padding:16px 20px;display:flex}.bulk-sql-info-row .bulk-template-icon{flex-shrink:0;font-size:28px;line-height:1}.bulk-sql-info-row code{color:var(--accent-light);background:#6366f126;border:1px solid #6366f140;border-radius:4px;padding:1px 5px;font-family:Fira Code,Courier New,monospace;font-size:12px}.group-selector-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin-top:4px;display:grid}@keyframes groupCardIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.group-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);transition:border-color var(--transition), box-shadow var(--transition), transform var(--transition);flex-direction:column;gap:12px;padding:20px;animation:.25s both groupCardIn;display:flex}.group-card:hover{border-color:#6366f166;transform:translateY(-2px);box-shadow:0 6px 24px #00000059}.group-card-meta{flex-wrap:wrap;align-items:baseline;gap:6px;display:flex}.group-card-class{color:var(--text-primary);font-size:15px;font-weight:800}.group-card-dot{color:var(--text-muted);font-size:14px}.group-card-subject{color:var(--accent-light);font-size:14px;font-weight:600}.group-card-details{flex-wrap:wrap;gap:6px;display:flex}.group-card-tag{color:var(--accent-2);letter-spacing:.03em;background:#06b6d41a;border:1px solid #06b6d440;border-radius:99px;padding:3px 9px;font-size:11px;font-weight:600;display:inline-block}.group-card-footer{border-top:1px solid var(--border);justify-content:space-between;align-items:center;margin-top:auto;padding-top:4px;display:flex}.group-card-count{color:var(--text-muted);font-size:12px;font-weight:600}.btn-load-group{background:linear-gradient(135deg, var(--accent), #4f46e5);border-radius:var(--radius-md);color:#fff;cursor:pointer;letter-spacing:.02em;transition:opacity var(--transition), transform var(--transition), box-shadow var(--transition);white-space:nowrap;border:none;align-items:center;gap:5px;padding:7px 14px;font-family:inherit;font-size:13px;font-weight:700;display:inline-flex;box-shadow:0 3px 10px #6366f159}.btn-load-group:hover{opacity:.9;transform:translateY(-1px);box-shadow:0 6px 18px #6366f180}.btn-load-group:active{transform:translateY(0)}.created-by-teacher{border-radius:var(--radius-md);color:var(--accent-2);letter-spacing:.06em;cursor:default;-webkit-user-select:none;user-select:none;background:linear-gradient(135deg,#06b6d41f,#10b98114);border:1px solid #06b6d44d;align-items:center;gap:8px;width:fit-content;padding:10px 16px;font-size:14px;font-weight:700;display:inline-flex}.teacher-icon{font-size:18px}@media (width<=600px){.tab-bar{flex-direction:column}.bulk-template-row{flex-direction:column;align-items:flex-start}.btn-reset-bulk{margin-left:0}.drop-zone{padding:32px 16px}}.file-picker{flex-direction:column;gap:6px;display:flex}.file-picker-label{color:var(--text-secondary);letter-spacing:.02em;font-size:13px;font-weight:600}.file-picker-row{align-items:center;gap:8px;min-height:40px;display:flex}.file-pick-btn{border-radius:var(--radius-md);color:var(--accent-light);cursor:pointer;transition:background var(--transition), border-color var(--transition);white-space:nowrap;background:#6366f114;border:1.5px dashed #6366f159;align-items:center;gap:7px;padding:8px 14px;font-family:inherit;font-size:13px;font-weight:600;display:inline-flex}.file-pick-btn:hover{background:#6366f129;border-color:#6366f1a6}.file-pill{background:#10b9811a;border:1px solid #10b9814d;border-radius:99px;flex:1;align-items:center;gap:7px;min-width:0;padding:6px 12px;display:inline-flex}.file-pill-icon{flex-shrink:0;font-size:14px}.file-pill-name{color:#34d399;white-space:nowrap;text-overflow:ellipsis;max-width:180px;font-size:12px;font-weight:600;overflow:hidden}.file-pill-clear{color:#f87171;cursor:pointer;width:24px;height:24px;transition:background var(--transition), border-color var(--transition);background:#ef44441a;border:1px solid #ef444440;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:11px;line-height:1;display:flex}.file-pill-clear:hover{background:#ef444440;border-color:#ef444480}
