html,body{height:auto!important;min-height:100%!important;overflow:visible!important}body{background:radial-gradient(1100px 520px at 50% -8%,var(--accent-ghost),transparent 62%),var(--paper);color:var(--ink);font-family:var(--font-ui);-webkit-font-smoothing:antialiased}#teacher-root{--t-max: 1060px;--t-gutter: 24px;min-height:100vh;color:var(--ink);font-family:var(--font-ui)}.t-topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px max(var(--t-gutter),calc((100% - var(--t-max)) / 2 + var(--t-gutter)));background:color-mix(in srgb,var(--paper-deep) 88%,transparent);border-bottom:1px solid var(--edge-strong);backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px)}.t-brand{display:flex;align-items:center;gap:10px;min-width:0}.t-logo{font-family:var(--font-display);font-size:23px;line-height:1;color:var(--accent);letter-spacing:.01em}.t-pill{font-size:11px;font-weight:600;color:var(--ink-soft);letter-spacing:.14em;text-transform:uppercase;padding:3px 9px;border:1px solid var(--edge-strong);border-radius:999px;white-space:nowrap}.t-back{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:500;color:var(--ink-soft);text-decoration:none;border:1px solid var(--edge);background:var(--paper-card);border-radius:999px;padding:6px 14px;white-space:nowrap;transition:border-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}.t-back:before{content:"←";font-size:13px;line-height:1}.t-back:hover{color:var(--ink);border-color:var(--accent-line);background:var(--accent-ghost)}.t-content{max-width:var(--t-max);margin-inline:auto;padding:30px var(--t-gutter) 88px;display:flex;flex-direction:column;gap:22px}.t-wrap{display:flex;flex-direction:column;gap:18px}.t-h1{margin:0;font-family:var(--font-display);font-weight:400;font-size:27px;letter-spacing:.01em;color:var(--ink)}.t-h2{margin:0;font-family:var(--font-display);font-weight:400;font-size:18px;letter-spacing:.01em;color:var(--ink)}.t-muted{color:var(--ink-soft);font-size:13px;line-height:1.5}.t-heading{display:flex;flex-direction:column;gap:4px;min-width:0}.t-row-between{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}.t-link{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;color:var(--accent);background:none;border:0;cursor:pointer;font:inherit;font-size:13px;font-weight:500;padding:2px 0}.t-link:before{content:"←";font-size:13px}.t-link:hover{text-decoration:underline;text-underline-offset:2px}.t-danger{align-self:flex-start;margin-top:6px;color:var(--short)}.t-danger:before{content:none}.t-btn{align-self:flex-start;border:1px solid var(--edge-strong);background:var(--paper-card);color:var(--ink);border-radius:10px;padding:9px 15px;font-size:13px;font-weight:600;font-family:var(--font-ui);cursor:pointer;white-space:nowrap;text-decoration:none;transition:background var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}.t-btn:hover{background:var(--accent-ghost);border-color:var(--accent-line)}.t-btn:active{transform:translateY(1px)}.t-btn-primary{background:var(--accent-deep);border-color:var(--accent-deep);color:#fff;box-shadow:0 1px 2px #00000040,0 6px 16px var(--accent-soft)}.t-btn-primary:hover{background:var(--accent);border-color:var(--accent)}.t-btn-ghost{background:var(--paper-inset)}.t-card{background:var(--paper-card);border:1px solid var(--edge);border-radius:16px;box-shadow:var(--shadow-card);padding:18px 20px;display:flex;flex-direction:column;gap:14px}.t-card-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}.t-class-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}.t-class-card{text-align:left;background:var(--paper-card);border:1px solid var(--edge);border-radius:16px;box-shadow:var(--shadow-card);padding:18px;cursor:pointer;display:flex;flex-direction:column;gap:14px;color:var(--ink);font-family:var(--font-ui);transition:transform var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}.t-class-card:hover{transform:translateY(-2px);border-color:var(--accent-line);box-shadow:var(--shadow-pop)}.t-class-name{font-size:16px;font-weight:700;letter-spacing:-.01em}.t-class-code{display:flex;align-items:center;gap:9px}.t-code-label{font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint)}.t-code-chip{font-family:var(--font-mono);font-size:12.5px;font-weight:600;letter-spacing:.16em;padding:3px 9px;border:1px solid var(--accent-line);border-radius:7px;background:var(--accent-soft);color:var(--accent)}.t-class-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:12px;border-top:1px solid var(--edge)}.t-open{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:600;color:var(--accent)}.t-open:after{content:"→";transition:transform var(--dur-fast) var(--ease)}.t-class-card:hover .t-open:after{transform:translate(3px)}.t-join-box{gap:10px}.t-code-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.t-code-big{font-family:var(--font-mono);font-size:30px;font-weight:700;letter-spacing:.2em;color:var(--ink);padding:8px 16px;border:1px dashed var(--accent-line);border-radius:12px;background:var(--paper-inset)}.t-member-list{margin:0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:8px}.t-member{font-family:var(--font-mono);font-size:12.5px;color:var(--ink);padding:5px 11px;border:1px solid var(--edge);border-radius:999px;background:var(--paper-inset)}.t-asg-list{display:flex;flex-direction:column;gap:8px}.t-asg-row{text-align:left;background:var(--paper-inset);border:1px solid var(--edge);border-radius:12px;padding:13px 15px;cursor:pointer;color:var(--ink);font-family:var(--font-ui);display:flex;align-items:center;justify-content:space-between;gap:12px;transition:border-color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}.t-asg-row:hover{border-color:var(--accent-line);background:var(--accent-ghost)}.t-asg-main{display:flex;flex-direction:column;gap:3px;min-width:0}.t-asg-title{font-weight:600;font-size:14px}.t-asg-go{font-size:12.5px;font-weight:600;color:var(--accent);white-space:nowrap}.t-asg-go:after{content:"→";margin-left:5px;display:inline-block;transition:transform var(--dur-fast) var(--ease)}.t-asg-row:hover .t-asg-go:after{transform:translate(3px)}.t-table-card{padding:0;gap:0;overflow:hidden}.t-table-card .t-card-head{padding:16px 20px;border-bottom:1px solid var(--edge)}.t-table-wrap{overflow-x:auto}.t-table{width:100%;border-collapse:collapse;font-size:13px}.t-table th{text-align:left;color:var(--ink-faint);font-weight:600;font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;padding:11px 14px;background:var(--paper-inset);border-bottom:1px solid var(--edge-strong);white-space:nowrap}.t-table th:first-child,.t-table td:first-child{padding-left:20px}.t-table th:last-child,.t-table td:last-child{padding-right:20px}.t-table td{padding:12px 14px;border-bottom:1px solid var(--edge);vertical-align:middle}.t-table tbody tr{transition:background var(--dur-fast) var(--ease)}.t-table tbody tr:hover td{background:var(--accent-ghost)}.t-table tbody tr:last-child td{border-bottom:none}.t-td-email{min-width:150px}.t-sub-email{font-family:var(--font-mono);font-size:12.5px;color:var(--ink);word-break:break-all}.t-td-date{color:var(--ink-soft);white-space:nowrap;font-variant-numeric:tabular-nums}.t-td-fb{min-width:220px;width:40%}.t-td-act{text-align:right;white-space:nowrap}.t-badge{display:inline-block;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:4px 10px;border-radius:999px;line-height:1.3;white-space:nowrap;border:1px solid transparent}.t-badge.ok{background:var(--hi-soft);color:var(--hi);border-color:color-mix(in srgb,var(--hi) 35%,transparent)}.t-badge.no{background:var(--short-soft);color:var(--short);border-color:color-mix(in srgb,var(--short) 35%,transparent)}.t-field{display:flex;flex-direction:column;gap:6px}.t-field-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-soft)}.t-input{background:var(--paper-inset);border:1px solid var(--edge-strong);border-radius:10px;padding:9px 12px;color:var(--ink);font:inherit;font-size:13.5px;width:100%;box-sizing:border-box;transition:border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}.t-input::placeholder{color:var(--ink-faint)}.t-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.t-textarea{resize:vertical;line-height:1.5}.t-grade{max-width:84px;min-width:60px;text-align:center}.t-form-actions{display:flex;justify-content:flex-end;gap:10px;padding-top:6px;border-top:1px solid var(--edge)}.t-table-host{margin:4px 0;overflow-x:auto;display:flex;flex-direction:column;gap:10px}.t-truth{border-collapse:separate;border-spacing:0;font-family:var(--font-mono);font-size:13px;border:1px solid var(--edge);border-radius:10px;overflow:hidden}.t-truth th,.t-truth td{border-right:1px solid var(--edge);border-bottom:1px solid var(--edge);padding:6px 12px;text-align:center}.t-truth th{background:var(--paper-inset);font-size:11px;letter-spacing:.05em}.t-truth tr td:last-child,.t-truth tr th:last-child{border-right:none}.t-truth tbody tr:last-child td{border-bottom:none}.t-truth .t-in-col{color:var(--ink-soft)}.t-truth .t-out-col{color:var(--accent)}.t-truth td{color:var(--ink)}.t-bit{width:30px;height:26px;border:1px solid var(--edge-strong);border-radius:6px;background:var(--paper);color:var(--ink-soft);cursor:pointer;font:inherit;font-family:var(--font-mono);transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}.t-bit:hover{border-color:var(--accent-line)}.t-bit.on{background:var(--hi);color:#06210f;border-color:var(--hi);font-weight:700}.t-empty{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:34px 24px;color:var(--ink-soft)}.t-empty-grid{grid-column:1 / -1;border:1px dashed var(--edge-strong);border-radius:16px;background:var(--paper-inset)}.t-empty-title{font-family:var(--font-display);font-weight:400;font-size:17px;color:var(--ink)}.t-empty-text{margin:0;max-width:420px;font-size:13px;line-height:1.55;color:var(--ink-soft)}.t-empty .t-btn{align-self:center;margin-top:6px}.t-gate{min-height:62vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center;padding:40px 20px}.t-gate-badge{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.14em;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:999px;padding:4px 12px}.t-gate-title{margin:0;font-family:var(--font-display);font-weight:400;font-size:30px;color:var(--ink)}.t-gate-text{margin:0;max-width:440px;font-size:14.5px;line-height:1.6;color:var(--ink-soft)}.t-gate .t-btn{align-self:center;margin-top:8px}.t-gate-ctas{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;align-items:center;margin-top:8px}.t-gate-ctas .t-btn{margin-top:0}.t-gate-cols{display:grid;grid-template-columns:1fr 1fr;gap:32px;max-width:760px;margin-top:22px;text-align:left}.t-gate-col{background:var(--paper-card);border:1px solid var(--edge);border-radius:14px;padding:20px 22px}.t-gate-h2{margin:0 0 12px;font-size:15px;font-weight:700;color:var(--ink)}.t-gate-list{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:9px;font-size:13.5px;line-height:1.5;color:var(--ink-soft)}.t-gate-steps{list-style:decimal}@media(max-width:640px){.t-gate-cols{grid-template-columns:1fr;gap:16px}}.t-gate-faq{width:100%;max-width:760px;margin:30px auto 0;text-align:left}.t-gate-faq .t-gate-h2{margin-bottom:6px}.t-faq-item{padding:15px 0;border-top:1px solid var(--edge)}.t-faq-item:first-of-type{border-top:none}.t-faq-q{margin:0 0 5px;font-size:14.5px;font-weight:700;color:var(--ink)}.t-faq-a{margin:0;font-size:13.5px;line-height:1.55;color:var(--ink-soft)}.t-faq-a a,.t-gate-faq a{color:var(--accent-deep, #6d5ce0);font-weight:600;text-decoration:none}.t-faq-a a:hover,.t-gate-faq a:hover{text-decoration:underline}@media(max-width:768px){.t-content{padding:22px 16px 72px;gap:18px}.t-topbar{padding-inline:16px}.t-h1{font-size:23px}.t-row-between{align-items:stretch}.t-row-between>.t-btn{align-self:flex-start}.t-class-grid{grid-template-columns:1fr}}@media(max-width:480px){.t-code-big{font-size:24px;letter-spacing:.15em}}.t-modal-backdrop{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:20px;background:color-mix(in srgb,var(--paper-deep) 62%,transparent);backdrop-filter:blur(2px);animation:t-fade var(--dur-fast, .15s) var(--ease, ease)}.t-modal{width:min(420px,100%);background:var(--paper-card);border:1px solid var(--edge-strong);border-radius:14px;padding:20px;box-shadow:0 18px 50px #00000047;animation:t-pop var(--dur-fast, .15s) var(--ease, ease)}.t-modal-title{margin:0 0 10px;font-family:var(--font-display);font-size:19px;color:var(--ink)}.t-modal-msg{margin:0 0 16px;color:var(--ink-soft);line-height:1.5}.t-modal-input{width:100%;margin-bottom:16px}.t-modal-actions{display:flex;gap:10px;justify-content:flex-end}.t-btn-danger{border-color:var(--short, #d9534f);background:color-mix(in srgb,var(--short, #d9534f) 16%,transparent);color:var(--short, #d9534f)}.t-btn-danger:hover{background:color-mix(in srgb,var(--short, #d9534f) 26%,transparent);border-color:var(--short, #d9534f)}.t-toast{position:fixed;top:18px;left:50%;transform:translate(-50%) translateY(-14px);z-index:120;max-width:min(440px,92vw);padding:11px 16px;border-radius:10px;background:var(--paper-card);border:1px solid var(--edge-strong);color:var(--ink);box-shadow:0 10px 30px #00000038;opacity:0;pointer-events:none;transition:opacity var(--dur-fast, .15s) var(--ease, ease),transform var(--dur-fast, .15s) var(--ease, ease)}.t-toast.show{opacity:1;transform:translate(-50%) translateY(0)}.t-toast[data-tone=error]{border-color:var(--short, #d9534f)}.t-toast[data-tone=success]{border-color:var(--accent-line, var(--accent))}@keyframes t-fade{0%{opacity:0}to{opacity:1}}@keyframes t-pop{0%{opacity:0;transform:translateY(6px) scale(.98)}to{opacity:1;transform:none}}
