:root{--zb-primary: #2563eb;--zb-primary-dark: #1d4ed8;--zb-primary-light: #dbeafe;--zb-bg: #f8fafc;--zb-bg-soft: #f1f5f9;--zb-surface: #ffffff;--zb-text: #1e293b;--zb-muted: #64748b;--zb-border: #e2e8f0;--zb-danger: #dc2626;--zb-success: #16a34a;--zb-partial: #0ea5e9;--zb-warning: #f59e0b;--zb-radius-sm: 8px;--zb-radius-md: 12px;--zb-radius-lg: 16px;--zb-radius-xl: 20px;--zb-shadow-sm: 0 1px 2px rgba(15, 23, 42, .06);--zb-shadow-md: 0 4px 12px rgba(15, 23, 42, .08);--zb-shadow-card: 0 1px 3px rgba(15, 23, 42, .08), 0 4px 16px rgba(15, 23, 42, .04);--zb-shadow-float: 0 8px 24px rgba(15, 23, 42, .1);--zb-page-pad-h5: 16px;--zb-page-pad-desk: 24px;--zb-section-gap: 24px;--zb-field-gap: 16px;--zb-student-hero-h: 52px;--zb-student-card-radius: 16px;--zb-student-section-gap: 12px;--zb-student-icon-size: 20px;--zb-accent-homework: #f59e0b;--zb-accent-plan: #7c3aed;--zb-accent-archive: #0ea5e9;--zb-accent-suggest: #2563eb}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:Segoe UI,PingFang SC,Microsoft YaHei,system-ui,-apple-system,sans-serif;background:linear-gradient(180deg,#f8fafc,#eef2ff 48%,#f8fafc);background-attachment:fixed;color:var(--zb-text);line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--zb-primary)}.zb-btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.625rem 1rem;border:none;border-radius:var(--zb-radius-sm);font-size:.9375rem;font-weight:600;cursor:pointer;transition:background .15s,box-shadow .15s,transform .1s}.zb-btn:active:not(:disabled){transform:scale(.98)}.zb-btn:disabled{opacity:.6;cursor:not-allowed}.zb-btn-primary{background:linear-gradient(180deg,#3b82f6 0%,var(--zb-primary) 100%);color:#fff;box-shadow:0 2px 8px #2563eb40}.zb-btn-primary:hover:not(:disabled){background:linear-gradient(180deg,var(--zb-primary) 0%,var(--zb-primary-dark) 100%)}.zb-btn-secondary{background:var(--zb-surface);color:var(--zb-text);border:1px solid var(--zb-border)}.zb-btn-danger{background:var(--zb-danger);color:#fff}.zb-btn-danger:hover:not(:disabled){background:#b91c1c}.zb-btn-success{background:linear-gradient(180deg,#22c55e 0%,var(--zb-success) 100%);color:#fff;box-shadow:0 2px 8px #16a34a33}.zb-btn-success:hover:not(:disabled){background:#15803d}.zb-btn-partial{background:linear-gradient(180deg,#38bdf8 0%,var(--zb-partial) 100%);color:#fff;border:1px solid var(--zb-partial)}.zb-btn-partial:hover:not(:disabled){background:#0284c7}.zb-btn-ghost{background:transparent;color:var(--zb-primary)}.zb-btn-ghost:hover:not(:disabled){background:#eff6ff}.zb-btn-touch{min-height:48px;min-width:48px;padding:.75rem 1rem;font-size:1rem}.acceptance-box{margin-top:.75rem;padding:.75rem 1rem;background:#fffbeb;border:1px solid #fcd34d;border-radius:10px}.acceptance-box__label{display:inline-block;font-size:.75rem;font-weight:700;color:#92400e;margin-bottom:.375rem}.acceptance-box__text{margin:0;font-size:1rem;color:#78350f}.thread-tab-bar{display:flex;gap:.5rem;overflow-x:auto;padding-bottom:.25rem;margin-bottom:.75rem}.thread-tab-bar__tab{flex-shrink:0;min-height:40px;padding:.5rem .875rem;border:1px solid var(--zb-border);border-radius:999px;background:var(--zb-surface);cursor:pointer;font-size:.875rem}.thread-tab-bar__tab.active{background:var(--zb-primary);color:#fff;border-color:var(--zb-primary)}.weekly-summary__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem;margin-bottom:1rem}.weekly-summary__cell{text-align:center;padding:1rem .5rem;border-radius:var(--zb-radius-md, 12px);border:1px solid var(--zb-border);background:#fff;box-shadow:var(--zb-shadow-card)}.weekly-summary__cell--mastered{background:#f0fdf4;border-color:#86efac}.weekly-summary__cell--partial{background:#eff6ff;border-color:#93c5fd}.weekly-summary__cell--incomplete{background:#fff7ed;border-color:#fdba74}.weekly-summary__num{display:block;font-size:28px;font-weight:700;line-height:1.2}.weekly-summary__lbl{font-size:.8125rem;color:var(--zb-muted)}.weekly-summary__weak h3{margin:0 0 .5rem;font-size:.9375rem}.weekly-summary__weak{border-left:4px solid #f59e0b;padding-left:12px;margin-top:.5rem}.weekly-summary__weak ul{margin:0;padding-left:1.25rem;color:var(--zb-text)}.escalation-card{margin-bottom:.75rem;border-left:4px solid var(--zb-danger);box-shadow:var(--zb-shadow-card);transition:box-shadow .15s}.escalation-card:hover{box-shadow:var(--zb-shadow-md)}.escalation-card--on_site{border-left-color:var(--zb-primary)}.escalation-card--deferred{border-left-color:var(--zb-muted)}.escalation-card--handled{border-left-color:var(--zb-success)}.escalation-card__head{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:.5rem}.escalation-card__wait{display:block;font-size:.8125rem;color:var(--zb-muted);margin-top:.25rem}.escalation-card__wait--long{color:var(--zb-danger);font-weight:600}.escalation-card__reason{margin:0 0 .375rem;font-size:.8125rem;color:var(--zb-warning);font-weight:600}.escalation-card__question{margin:0 0 .5rem;font-size:.9375rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.escalation-card__meta{display:flex;gap:.5rem;margin-bottom:.5rem}.escalation-card__chip{font-size:.75rem;padding:.125rem .5rem;border-radius:999px;background:#f1f5f9}.escalation-card__ctx{font-size:.8125rem;color:var(--zb-muted);margin-bottom:.75rem}.escalation-card__ctx p{margin:0 0 .25rem}.escalation-card__actions{display:flex;flex-wrap:wrap;gap:.5rem}.status-chip{display:inline-block;padding:.125rem .5rem;border-radius:999px;font-size:.75rem;font-weight:600}.status-chip--mastered{background:#dcfce7;color:#166534}.status-chip--partial{background:#dbeafe;color:#1e40af}.status-chip--incomplete{background:#ffedd5;color:#9a3412}.nudge-banner{justify-content:space-between;flex-wrap:wrap;gap:.75rem}.nudge-banner--escalated{border-color:var(--zb-danger)!important;background:linear-gradient(90deg,#fef2f2,#fee2e2)!important;color:#991b1b!important}.zb-input,.zb-select,.zb-textarea{width:100%;padding:.625rem .75rem;border:1px solid var(--zb-border);border-radius:8px;font-size:.9375rem;background:var(--zb-surface)}.zb-input:focus,.zb-select:focus,.zb-textarea:focus{outline:2px solid var(--zb-primary-light);border-color:var(--zb-primary)}.zb-input--error,.zb-input--error:focus{border-color:var(--zb-danger);outline-color:#fecaca}.zb-card{background:var(--zb-surface);border:1px solid rgba(226,232,240,.9);border-radius:var(--zb-radius-md);padding:1rem 1.25rem;box-shadow:var(--zb-shadow-card)}.zb-chip{display:inline-flex;align-items:center;font-size:.75rem;padding:.2rem .625rem;background:var(--zb-bg-soft);border:1px solid var(--zb-border);border-radius:999px;color:var(--zb-muted)}.zb-status-banner{display:flex;align-items:center;gap:.625rem;padding:.75rem 1rem;border-radius:var(--zb-radius-md);margin-bottom:.75rem;font-size:.9375rem;line-height:1.45}.zb-status-banner--warn{background:linear-gradient(90deg,#fffbeb,#fef3c7);border:1px solid #fcd34d;color:#92400e}.zb-status-banner--danger{background:linear-gradient(90deg,#fef2f2,#fee2e2);border:1px solid #fecaca;color:#991b1b}.zb-status-banner--info{background:linear-gradient(90deg,#eff6ff,#dbeafe);border:1px solid #93c5fd;color:#1e40af}.zb-status-banner--success{background:linear-gradient(90deg,#ecfdf5,#d1fae5);border:1px solid #86efac;color:#166534}.zb-label{display:block;margin-bottom:.375rem;font-size:.875rem;font-weight:600;color:var(--zb-muted)}.zb-error{color:var(--zb-danger);font-size:.875rem;margin:.5rem 0 0}.zb-badge{display:inline-block;padding:.125rem .5rem;border-radius:999px;font-size:.75rem;font-weight:600}.zb-badge-pending{background:#fef3c7;color:#92400e}.zb-badge-on-site{background:#dbeafe;color:#1e40af}.zb-badge-handled{background:#dcfce7;color:#166534}.zb-badge-deferred{background:#f1f5f9;color:#475569}.zhiban-auth-toast{position:fixed;left:50%;bottom:2rem;transform:translate(-50%);z-index:9999;max-width:min(90vw,22rem);padding:.75rem 1.125rem;font-size:.875rem;font-weight:600;color:#fff;background:#0f172aeb;border-radius:999px;box-shadow:0 8px 24px #0f172a40;pointer-events:none}
