*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:#f6f7f9;color:#111827;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px;line-height:1.5}.han{font-family:PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif}h1,h2,h3,h4{margin:0 0 8px}p{margin:0 0 10px}.muted{color:#6b7280}.spacer{flex:1}.text-error{color:#dc2626;font-size:13px;margin:6px 0}.code{background:#f3f4f6;border-radius:4px;padding:1px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px}.empty-hint{padding:12px 4px}.center-screen{height:100vh;display:flex;align-items:center;justify-content:center}button{font:inherit;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid #d1d5db;border-radius:8px;padding:8px 14px;font-weight:600;background:#fff;color:#111827;transition:background .15s,border-color .15s,color .15s}.btn:hover:not(:disabled){background:#f3f4f6}.btn-primary{background:#16a34a;border-color:#16a34a;color:#fff}.btn-primary:hover:not(:disabled){background:#15803d;border-color:#15803d}.btn-danger{background:#dc2626;border-color:#dc2626;color:#fff}.btn-danger:hover:not(:disabled){background:#b91c1c;border-color:#b91c1c}.btn-danger-outline{background:#fff;border-color:#fca5a5;color:#dc2626}.btn-danger-outline:hover:not(:disabled){background:#fef2f2;border-color:#dc2626}.btn-ghost{background:transparent;border-color:transparent;color:#16a34a}.btn-ghost:hover:not(:disabled){background:#f0fdf4}.btn-sm{padding:5px 10px;font-size:13px}.btn-block{width:100%}.btn-add{width:100%;padding:12px;font-size:15px;border:2px dashed #d1d5db;background:transparent;color:#16a34a;border-radius:12px;margin-top:4px}.btn-add:hover:not(:disabled){background:#f0fdf4;border-color:#16a34a}.icon-btn{display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;border-radius:6px;padding:4px 7px;color:#6b7280;font-size:14px;transition:background .15s,color .15s}.icon-btn:hover:not(:disabled){background:#f3f4f6;color:#111827}.icon-btn-danger:hover:not(:disabled){background:#fef2f2;color:#dc2626}.link-btn{background:none;border:none;padding:0;color:#16a34a;font-weight:600;font-size:14px;text-decoration:underline}.link-btn:hover{color:#15803d}.move-btns{display:inline-flex;gap:2px}.input,.textarea{width:100%;border:1px solid #d1d5db;border-radius:8px;padding:8px 10px;background:#fff;color:#111827;transition:border-color .15s,box-shadow .15s}.input:focus,.textarea:focus{outline:none;border-color:#16a34a;box-shadow:0 0 0 3px #16a34a26}.textarea{resize:vertical}.input-sm{padding:5px 8px;font-size:13px}.input-han-lg{font-size:28px;padding:4px 10px}.input-han-md{font-size:20px;padding:6px 10px}.input-formula{font-size:18px;font-weight:600}.radio{width:18px;height:18px;accent-color:#16a34a;flex:0 0 auto;cursor:pointer}.field{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}.field-label{font-size:12px;color:#6b7280}.field-xs{flex:0 0 90px}.field-type{flex:0 0 230px}.field-speaker{flex:0 0 160px}.form-row{display:flex;gap:12px;align-items:flex-start;margin-bottom:12px}.form-row:last-child{margin-bottom:0}.app{display:flex;height:100vh;overflow:hidden}.main{flex:1;overflow-y:auto;padding:24px}.empty-state{max-width:520px;margin:60px auto;text-align:center;padding:32px}.sidebar{width:280px;flex:0 0 280px;background:#fff;border-right:1px solid #e5e7eb;display:flex;flex-direction:column}.sidebar-head{padding:16px;border-bottom:1px solid #e5e7eb}.app-name{font-weight:700;font-size:16px;margin-bottom:12px}.btn-publish{width:100%;font-size:15px;padding:10px}.publish-time{font-size:12px;color:#6b7280;margin-top:6px;text-align:center}.sidebar-body{flex:1;overflow-y:auto;padding:12px}.track{margin-bottom:18px}.track-head{display:flex;align-items:center;justify-content:space-between;gap:6px;font-weight:700;padding:6px 8px;color:#374151;border-radius:8px}.track-head.active{background:#dcfce7}.track-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.track-edit{visibility:hidden;flex:0 0 auto}.track-head:hover .track-edit{visibility:visible}.lesson-item{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:8px;cursor:pointer;transition:background .15s}.lesson-item:hover{background:#f3f4f6}.lesson-item.active{background:#dcfce7}.lesson-emoji{flex:0 0 auto}.lesson-text{flex:1;min-width:0;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lesson-num{color:#6b7280;font-size:12px;margin-right:4px}.arrows{display:none;flex:0 0 auto}.lesson-item:hover .arrows{display:inline-flex}.add-lesson{width:100%;justify-content:flex-start;margin-top:2px}.sidebar-foot{padding:12px 16px;border-top:1px solid #e5e7eb}.sidebar-foot .btn{width:100%}.card{background:#fff;border-radius:12px;box-shadow:0 1px 3px #00000014;padding:16px;border:1px solid transparent}.item-card{margin-bottom:12px}.card-error{border-color:#dc2626!important}.card-errors{margin:10px 0 0;padding-left:18px;color:#dc2626;font-size:13px}.card-errors li{margin-bottom:2px}.subcard{background:#f9fafb;border-radius:8px;padding:12px;margin-top:12px}.subcard-title{font-size:12px;font-weight:700;color:#6b7280;text-transform:uppercase;margin-bottom:8px}.item-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}.item-id{color:#9ca3af;font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.section-title{font-size:15px}.info-card{margin-bottom:4px}.editor-topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:12px;background:#f6f7f9;margin:-24px -24px 16px;padding:14px 24px;border-bottom:1px solid #e5e7eb}.editor-title{margin:0;font-size:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lesson-code{color:#9ca3af;font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.status{font-size:13px;white-space:nowrap}.status-dirty{color:#ea580c;font-weight:600}.status-saving{color:#6b7280}.status-saved{color:#16a34a;font-weight:600}.status-error{color:#dc2626;font-weight:700}.error-banner{background:#fef2f2;border:1px solid #dc2626;color:#b91c1c;padding:10px 14px;border-radius:8px;margin-bottom:16px;font-weight:600}.warn-box{background:#fffbeb;border:1px solid #f59e0b;color:#92400e;padding:10px 14px;border-radius:8px;margin-bottom:12px;font-size:13px}.hint-warn{color:#b45309;font-size:13px;margin:8px 0 0}.tabs{display:flex;gap:6px;margin:20px 0 14px;flex-wrap:wrap}.tab{position:relative;padding:8px 16px;border-radius:8px;border:1px solid #d1d5db;background:#fff;font-weight:600;color:#374151;transition:background .15s,color .15s}.tab:hover:not(.active){background:#f3f4f6}.tab.active{background:#16a34a;border-color:#16a34a;color:#fff}.tab.has-error:after{content:"";position:absolute;top:-4px;right:-4px;width:10px;height:10px;border-radius:50%;background:#dc2626;border:2px solid #f6f7f9}.dialog-line{display:flex;margin-bottom:12px}.dialog-line.role-b{justify-content:flex-end}.dialog-bubble{width:min(640px,100%);background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:12px;box-shadow:0 1px 3px #0000000f}.dialog-line.role-b .dialog-bubble{background:#eff6ff;border-color:#bfdbfe}.role-toggle{display:inline-flex;border:1px solid #d1d5db;border-radius:8px;overflow:hidden;flex:0 0 auto;align-self:flex-end;margin-bottom:1px}.role-toggle button{border:none;background:#fff;padding:6px 14px;font-weight:700;color:#6b7280;transition:background .15s,color .15s}.role-toggle button:hover:not(.active){background:#f3f4f6}.role-toggle button.active{background:#16a34a;color:#fff}.options-editor{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.option-row{display:flex;align-items:center;gap:8px}.pair-eq{color:#6b7280;font-weight:700;flex:0 0 auto}.fill-preview{background:#f9fafb;border-radius:8px;padding:10px 12px;margin-bottom:12px;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.fill-preview-text{font-size:20px}.fill-blank{color:#16a34a;font-weight:700;letter-spacing:2px;margin:0 4px}.answer-builder{background:#f9fafb;border-radius:8px;padding:12px;margin-bottom:12px;display:flex;flex-direction:column;gap:8px}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{display:inline-flex;align-items:center;padding:5px 12px;border-radius:999px;border:1px solid #d1d5db;background:#fff;font-size:15px;transition:background .15s,border-color .15s}.chip:hover:not(:disabled){border-color:#16a34a;background:#f0fdf4}.chip:disabled{opacity:.35}.chip-answer{background:#dcfce7;border-color:#16a34a}.chip-answer:hover:not(:disabled){background:#fee2e2;border-color:#dc2626}.answer-line{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.answer-label{font-size:12px;color:#6b7280;font-weight:700}.example-row .icon-btn{margin-top:22px;flex:0 0 auto}.login-card{width:360px;max-width:calc(100vw - 32px);padding:28px}.login-title{font-size:20px}.login-card .field{margin:16px 0 12px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#11182773;display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}.modal{background:#fff;border-radius:12px;padding:20px;width:480px;max-width:100%;max-height:85vh;overflow-y:auto;box-shadow:0 10px 30px #00000040}.modal-head{display:flex;align-items:flex-start;gap:8px;margin-bottom:12px}.modal-head h3{margin:0;flex:1;font-size:16px}.modal .field{margin-bottom:12px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.broken-item{margin-bottom:14px}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:#111827;color:#fff;padding:10px 20px;border-radius:999px;box-shadow:0 4px 14px #0000004d;z-index:60;font-weight:600;max-width:calc(100vw - 48px)}@media (max-width: 960px){.sidebar{width:240px;flex-basis:240px}.form-row{flex-wrap:wrap}.field{flex-basis:45%}.field-xs,.field-type,.field-speaker{flex-basis:auto}}.sidebar-foot{display:flex;flex-direction:column;gap:8px}.saler-admin .card{margin-bottom:16px}.saler-admin h2{margin:0 0 12px;font-size:17px}.saler-admin h3{margin:18px 0 8px;font-size:14px;color:#374151}.stat-row{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:16px}.stat-row .stat{flex:1;min-width:140px;padding:12px 14px;text-align:center;margin-bottom:0}.stat-row .stat b{display:block;font-size:18px}.stat-row .stat span{font-size:12px;color:#6b7280}.table{width:100%;border-collapse:collapse;font-size:13.5px}.table th{text-align:left;font-size:12px;color:#6b7280;font-weight:600;padding:6px 8px;border-bottom:1px solid #e5e7eb}.table td{padding:8px;border-bottom:1px solid #f3f4f6;vertical-align:top}.table .muted{font-size:12px}.table a{color:#16a34a;font-weight:600;text-decoration:none}.table a:hover{text-decoration:underline}.row-active td{background:#f0fdf4}.nowrap{white-space:nowrap}.neg{color:#dc2626;font-weight:600}
