:root{--ink:#273e52;--muted:#61788d;--primary:#467ca8;--line:#d9e5ef;--paper:#ffffff;--bg:#f1f7fc;--soft:#e7f1fa;--red:#a74337}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif;font-size:15px;line-height:1.75}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button{cursor:pointer;transition:background .15s}button:disabled{cursor:wait;opacity:.55}[hidden]{display:none!important}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid #93bfe3;outline-offset:3px}.mode{background:#f5e7bb;color:#705519;text-align:center;padding:7px 14px;font-size:12px;letter-spacing:.04em}.welcome{max-width:800px;margin:auto;padding:36px 30px 18px}.mark{font-size:35px;background:var(--primary);color:#fff;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;line-height:1}.intro{padding:10px 2px 28px}.eyebrow{font-size:12px;letter-spacing:.18em;color:var(--primary)}h1,h2,p{margin-top:0}h1{font-size:34px;line-height:1.55;letter-spacing:.03em;font-weight:600;margin:12px 0 20px}h2{font-size:18px;font-weight:600;margin-bottom:8px}.accent{width:40px;height:3px;background:#9bc6e8;margin-bottom:22px}.intro p{font-size:15px;line-height:2.05;color:#526b80;max-width:690px}.facts{display:flex;gap:0;color:var(--primary);font-size:12px;margin-top:20px}.facts span+span{border-left:1px solid #cedfea;padding-left:22px;margin-left:22px}.form-card{background:var(--paper);border:1px solid var(--line);border-radius:18px;padding:30px;box-shadow:0 10px 35px #315b8410}.muted{color:var(--muted);font-size:12px}.fields{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin:25px 0 28px}.field label{display:block;font-size:13px;margin-bottom:8px}select{width:100%;border:1px solid #d3e2ee;border-radius:8px;background:#fff;padding:11px;color:var(--ink)}.check{display:flex;align-items:flex-start;gap:8px;font-size:12px;margin:14px 0 22px}.check input{accent-color:var(--primary);margin-top:5px;width:16px;height:16px;flex-shrink:0}.primary{background:var(--primary);color:white;border:1px solid var(--primary);border-radius:9px;padding:11px 22px}.primary:hover{background:#35668f}.enter{width:100%;display:flex;justify-content:center;gap:18px}.secondary{background:transparent;border:1px solid #c9ddec;color:var(--primary);border-radius:8px;padding:8px 13px}.secondary:hover{background:var(--soft)}footer{text-align:center;font-size:11px;color:#71879b;padding:24px}.error{color:var(--red);font-size:13px;margin:12px 0 0}.loading{text-align:center;margin:25vh auto;color:var(--muted)}.chat-shell{max-width:850px;margin:auto;height:100dvh;display:flex;flex-direction:column;background:#f7faff;border-left:1px solid var(--line);border-right:1px solid var(--line)}body:has(.mode:not([hidden])) .chat-shell{height:calc(100dvh - 35px)}.chat-header{padding:22px 28px 16px;border-bottom:1px solid var(--line);background:var(--paper)}.chat-heading{display:flex;gap:12px;align-items:center}.small{width:34px;height:34px;font-size:28px}.chat-heading h1{font-size:18px;line-height:1.5;margin:0}.chat-heading p{margin:3px 0 0;font-size:10px}.private{margin-left:auto;font-size:11px;color:var(--primary);background:var(--soft);padding:4px 10px;border-radius:20px}.progress-row{display:flex;gap:15px;align-items:center;margin-top:16px}.progress{display:flex;gap:5px;flex:1}.progress i{height:3px;background:#e1eaf2;flex:1;border-radius:3px}.progress i.done{background:var(--primary)}.progress i.current{background:#a0c8e8}.progress-row>span{font-size:11px;color:var(--muted)}.messages{flex:1;overflow:auto;padding:25px 26px;scroll-behavior:smooth}.message{display:flex;gap:10px;align-items:flex-start;margin:0 0 25px}.message.teacher{flex-direction:row-reverse}.avatar{width:30px;height:30px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:#e5eff8;border-radius:50%;color:var(--primary);font-size:13px}.teacher .avatar{background:#e2edf7;color:#547592}.bubble-wrap{max-width:82%}.bubble{white-space:pre-wrap;overflow-wrap:anywhere;padding:14px 18px;border:1px solid #dce7f0;border-radius:3px 15px 15px 15px;background:white;font-size:15px;line-height:1.9}.teacher .bubble{background:#e0eefb;border-color:#ccdfef;border-radius:15px 3px 15px 15px}.chat-status{color:var(--muted);font-size:12px;padding:0 25px;white-space:pre-wrap}.chat-status.error{color:var(--red)}.retry-box{padding:10px 25px}.composer{padding:15px 25px max(18px,env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--paper)}textarea{display:block;width:100%;resize:none;border:1px solid #d4e3ef;border-radius:10px;padding:12px 14px;color:var(--ink);background:#fff;line-height:1.7;min-height:86px}textarea::placeholder{color:#7c91a4}.composer-tools{display:flex;align-items:center;gap:10px;margin-top:10px}.composer-tools .muted{font-size:10px}.composer-tools .primary{margin-left:auto;padding:8px 20px}.composer-tools .secondary{font-size:12px}.completed{text-align:center;padding:24px;background:var(--paper);border-top:1px solid var(--line)}.completed>span{display:inline-flex;border-radius:50%;background:var(--soft);color:var(--primary);width:32px;height:32px;align-items:center;justify-content:center}.completed h2{margin:8px 0}.completed p{font-size:13px;color:var(--muted);margin-bottom:0}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.admin-shell{max-width:1150px;margin:40px auto;padding:0 25px}.admin-top{display:flex;justify-content:space-between;align-items:center}.admin-top h1{font-size:27px}.admin-card{border:1px solid var(--line);border-radius:12px;background:var(--paper);padding:24px;margin:22px 0}.login{max-width:420px;margin:15vh auto}.login input{display:block;width:100%;padding:10px;margin:15px 0;border:1px solid var(--line);border-radius:8px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.stat{background:var(--soft);border:1px solid var(--line);padding:17px;border-radius:10px}.stat strong{display:block;font-size:30px;font-weight:500}.stat span{font-size:12px;color:var(--muted)}.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.toolbar select{width:auto}.toolbar a{font-size:13px;color:var(--primary)}.table-scroll{overflow:auto}table{border-collapse:collapse;width:100%;font-size:12px}th,td{text-align:left;white-space:nowrap;border-bottom:1px solid var(--line);padding:12px 10px}th{color:var(--muted);font-weight:400}td button{font-size:12px}.detail-item{padding:15px 0;border-bottom:1px solid var(--line)}.detail-item p{white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px}.detail-item p:last-child{color:#5b7892}.model-info{font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}#admin-message{color:var(--primary);font-size:13px}dialog{max-width:800px;width:90%;max-height:85dvh;border:1px solid var(--line);border-radius:12px;padding:25px;color:var(--ink);background:var(--paper)}dialog::backdrop{background:#213e5855}@media(max-width:600px){.welcome{padding:23px 20px 12px}.intro{padding:4px 0 20px}h1{font-size:28px}.intro p{font-size:14px}.facts span+span{padding-left:13px;margin-left:13px}.form-card{padding:22px 18px;border-radius:13px}.fields{gap:18px 12px}.field label{font-size:12px}select{font-size:13px;padding:11px 6px}.chat-header{padding:17px 18px 14px}.chat-heading h1{font-size:16px}.messages{padding:22px 14px}.bubble-wrap{max-width:85%}.bubble{font-size:14px;padding:12px 14px}.avatar{width:26px;height:26px}.message{gap:7px}.composer{padding:12px 14px max(15px,env(safe-area-inset-bottom))}.composer-tools .muted{max-width:110px;line-height:1.5}.private{font-size:10px;padding:4px 8px}.stats{gap:8px}.stat{padding:12px}.admin-shell{padding:0 15px;margin:20px auto}.admin-card{padding:17px}.admin-top h1{font-size:22px}}

.speaker{font-size:10px;color:#6d859a;margin:0 0 5px;text-align:right}
