:root{color:#18211f;background:#eef2f0;font-family:Inter,Microsoft YaHei,PingFang SC,Noto Sans CJK SC,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;--ink: #18211f;--muted: #65716d;--line: #d7dfdc;--surface: #ffffff;--canvas: #eef2f0;--teal: #0d766a;--teal-dark: #095f56;--danger: #b33b3b;--success: #24744f;--shadow: 0 10px 30px rgba(24, 33, 31, .07);--field-height: 48px}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--canvas);color:var(--ink);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(13,118,106,.12)}button,input,textarea{font-family:inherit;font-size:16px}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}h1,h2,h3,p{margin:0}svg{flex:none}.auth-shell{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:24px 18px calc(24px + env(safe-area-inset-bottom));background:radial-gradient(120% 70% at 50% -10%,rgba(13,118,106,.16),transparent 60%),var(--canvas)}.auth-panel{width:min(440px,100%);padding:26px 22px 24px;border:1px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:0 18px 40px #18211f1a}.auth-brand{display:flex;align-items:center;gap:13px}.auth-brand .mark{display:grid;place-items:center;flex:none;width:46px;height:46px;border-radius:13px;color:#fff;background:linear-gradient(140deg,#14887a,#0d766a)}.auth-brand h1{font-size:21px;line-height:1.3}.auth-brand p{margin-top:2px;color:var(--muted);font-size:12px}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin:22px 0 18px;padding:4px;border:1px solid var(--line);border-radius:10px;background:#f6f8f7}.auth-tabs button{min-height:42px;border:0;border-radius:7px;background:transparent;color:var(--muted);font-weight:700}.auth-tabs button.active{color:var(--ink);background:#fff;box-shadow:0 2px 8px #18211f14}.auth-form{display:grid;gap:14px}label{display:grid;gap:7px;color:#42504c;font-size:13px;font-weight:700}input,textarea{width:100%;min-width:0;min-height:var(--field-height);border:1px solid var(--line);border-radius:9px;background:#fbfcfb;color:var(--ink);padding:12px 13px;outline:none}input:focus,textarea:focus{border-color:var(--teal);box-shadow:0 0 0 3px #0d766a1f}textarea{resize:vertical;line-height:1.7}.primary-button,.secondary-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:var(--field-height);border:1px solid transparent;border-radius:9px;padding:12px 16px;font-weight:800}.primary-button{color:#fff;background:var(--teal)}.primary-button:hover:not(:disabled){background:var(--teal-dark)}.secondary-button{color:var(--teal-dark);border-color:#9fcac4;background:#eff8f6}.full-width{width:100%}.auth-help{color:var(--muted);font-size:12px;line-height:1.7;text-align:center}.notice{border-radius:8px;padding:11px 13px;font-size:13px;overflow-wrap:anywhere}.notice-neutral{color:#42504c;background:#edf1ef}.notice-success{color:#175b3b;background:#e8f5ed}.notice-error,.form-error{color:var(--danger);background:#fbecec}.form-error{margin:0;border-radius:8px;padding:9px 11px;font-size:12px;font-weight:600;overflow-wrap:anywhere}.session-loading{border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--muted);padding:16px 20px;font-size:14px;box-shadow:var(--shadow)}.app-shell{display:flex;flex-direction:column;min-height:100vh}.topbar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line);background:#fff}.brand-mark{display:flex;align-items:center;gap:9px;min-width:0;color:var(--teal-dark)}.brand-mark strong{color:var(--ink);font-size:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.teacher-chip{display:flex;align-items:center;gap:6px;min-width:0;color:#45524e;font-size:13px;font-weight:700}.teacher-chip .teacher-name{max-width:30vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.teacher-chip button{display:grid;place-items:center;flex:none;width:40px;height:40px;border:0;border-radius:9px;background:transparent;color:var(--muted)}.teacher-chip button:hover{color:var(--danger);background:#f8eeee}.workspace{display:grid;grid-template-columns:minmax(0,1fr)}.class-sidebar,.main-panel{min-width:0}.class-sidebar{padding:14px 14px 16px;border-bottom:1px solid var(--line);background:#f8faf9}.main-panel{display:grid;align-content:start;gap:14px;padding:14px}.sidebar-title,.section-heading,.composer-heading,.composer-actions,.history-meta,.history-status{display:flex;align-items:center;justify-content:space-between;gap:10px}.sidebar-title h1,.composer-heading h2{margin-top:2px;font-size:18px;overflow-wrap:anywhere}.eyebrow{display:block;color:var(--muted);font-size:11px;font-weight:800;letter-spacing:.08em}.count{display:inline-grid;flex:none;place-items:center;min-width:36px;height:28px;padding:0 9px;border-radius:999px;background:#e9eeec;color:#43504c;font-size:12px;font-weight:800}.select-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px}.select-actions button{min-height:38px;border:1px solid var(--line);border-radius:999px;background:#fff;color:#3c4a46;padding:8px 14px;font-size:13px;font-weight:700}.select-actions button:hover{border-color:var(--teal);color:var(--teal-dark)}.select-hint{color:var(--muted);font-size:11px}.add-class{margin-top:12px;padding:14px;border:1px solid var(--line);border-radius:12px;background:#fff}.inline-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;margin-top:12px}.inline-form input{letter-spacing:.14em;font-variant-numeric:tabular-nums}.class-list{display:flex;gap:8px;margin-top:12px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.class-list>button{display:grid;grid-template-columns:8px minmax(0,1fr);align-items:center;gap:8px;flex:0 0 auto;max-width:74vw;min-height:46px;padding:10px 15px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--ink);text-align:left}.class-list>button.selected{border-color:var(--teal);background:#eff8f6}.class-list .check-box,.class-list .message-count,.class-list .class-copy small{display:none}.presence-dot{width:8px;height:8px;border-radius:50%;background:#aeb8b5}.presence-dot.online{background:#2a9d68;box-shadow:0 0 0 3px #2a9d6824}.class-copy{display:grid;gap:3px;min-width:0}.class-copy strong{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.class-copy small{color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-state,.main-empty{display:grid;place-items:center;gap:10px;color:var(--muted);text-align:center}.empty-state{padding:22px 12px;font-size:13px}.main-empty{padding:32px 20px;border:1px dashed #c8d2cf;border-radius:12px}.main-empty h2{color:var(--ink);font-size:18px}.main-empty p{max-width:26em;font-size:13px;line-height:1.7}.composer,.history-panel{min-width:0;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.composer{display:grid;gap:14px;padding:16px}.composer-heading .online,.composer-heading .offline,.target-count{display:inline-flex;align-items:center;gap:6px;flex:none;border-radius:999px;padding:6px 11px;font-size:12px;font-weight:800}.composer-heading .online{color:var(--success);background:#eaf6ee}.composer-heading .offline{color:#7b5a22;background:#faf1df}.target-count{color:var(--muted);background:#eef2f0}.target-chips{display:flex;flex-wrap:wrap;gap:6px}.target-chip{display:inline-flex;align-items:center;gap:6px;max-width:100%;border:1px solid #dfe8e5;border-radius:999px;background:#f8fbfa;padding:6px 12px;color:#35423f;font-size:12px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.quick-messages{display:grid;gap:9px;padding:13px;border:1px solid #dfe8e5;border-radius:10px;background:#f8fbfa}.quick-messages-label{color:var(--muted);font-size:11px;font-weight:800;letter-spacing:.08em}.quick-message-list{display:flex;flex-wrap:wrap;gap:8px}.quick-message-chip{max-width:100%;min-height:40px;border:1px solid #c8d8d4;border-radius:999px;background:#fff;color:var(--teal-dark);padding:9px 14px;font-size:14px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.quick-message-chip:hover{border-color:var(--teal);background:#eff8f6}.display-options{display:grid;gap:12px}.segmented{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;border:1px solid var(--line);border-radius:10px;background:#f6f8f7}.segmented button{min-height:42px;border:0;border-radius:7px;background:transparent;color:var(--muted);font-weight:700}.segmented button.active{color:var(--ink);background:#fff;box-shadow:0 2px 8px #18211f14}.seconds-input{width:140px}.composer-actions{display:grid;gap:10px}.composer-actions>span{color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums;text-align:right}.history-panel{padding:16px 16px 6px}.message-history{margin-top:12px}.history-item{padding:14px 0;border-top:1px solid #e8edeb}.history-item p{margin:10px 0 12px;color:#2d3835;line-height:1.7;overflow-wrap:anywhere;white-space:pre-wrap}.history-meta,.history-status{flex-wrap:wrap;color:var(--muted);font-size:12px}.history-meta span,.history-status span{min-width:0;overflow-wrap:anywhere}.status-badge{display:inline-flex;align-items:center;gap:5px;flex:none;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:800}.status-queued{color:#76581f;background:#faf1dd}.status-delivered{color:#1f5f7a;background:#e8f4f8}.status-acknowledged{color:var(--success);background:#e8f5ed}.status-timed_out,.status-missed{color:var(--danger);background:#fbecec}.support-footer{padding:14px 16px calc(14px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:#f8faf9;color:var(--muted);font-size:12px;text-align:center}@media(min-width:861px){.auth-panel{padding:32px 30px 28px}.auth-brand h1{font-size:23px}.topbar{padding:12px 22px}.brand-mark strong{font-size:17px}.teacher-chip .teacher-name{max-width:240px}.workspace{grid-template-columns:minmax(280px,320px) minmax(0,1fr)}.class-sidebar{padding:22px;border-right:1px solid var(--line);border-bottom:0}.main-panel{gap:18px;padding:22px}.sidebar-title h1,.composer-heading h2{font-size:21px}.composer,.history-panel{border-radius:10px}.composer{padding:22px}.history-panel{padding:20px 22px 8px}.display-options{grid-template-columns:auto auto;align-items:end;justify-content:space-between}.composer-actions{grid-template-columns:1fr auto;align-items:center}.composer-actions>button{grid-column:2;min-width:150px}.class-list{display:grid;gap:7px;overflow:visible}.class-list>button{grid-template-columns:8px 18px minmax(0,1fr) auto;max-width:none;min-height:0;padding:11px;border-color:transparent;border-radius:8px;background:transparent}.class-list>button:hover,.class-list>button.selected{border-color:#c8d8d4;background:#fff}.class-list .check-box{display:grid;place-items:center;width:18px;height:18px;border:1px solid #c3cfcb;border-radius:5px;background:#fff;color:#fff}.class-list>button.selected .check-box{border-color:var(--teal);background:var(--teal)}.class-list .class-copy small{display:block}.class-list .message-count{display:block;color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}}
