:root{--brand:#2f6fed;--brand-dark:#1f4fbc;--brand-soft:#2f6fed1a;--success:#16a34a;--success-soft:#16a34a1f;--danger:#dc2626;--danger-soft:#dc26261a;--warning:#b45309;--warning-soft:#b453091f;--text:#101828;--text-muted:#667085;--text-faint:#98a2b3;--border:#e4e7ec;--surface:#fff;--surface-soft:#f8fafc;--sidebar:#0f172a;--sidebar-text:#cbd5e1;--radius-sm:8px;--radius:14px;--radius-lg:20px;--shadow-sm:0 1px 2px #1018280f;--shadow:0 12px 32px #10182814;--shadow-lg:0 24px 60px #1018281f;--seat-cell:56px}*{box-sizing:border-box}html,body,#app{height:100%}body{color:var(--text);background:var(--surface-soft);-webkit-font-smoothing:antialiased;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}.auth-page{background:var(--surface-soft);grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);min-height:100%;display:grid}.auth-aside{color:#e2e8f0;background:radial-gradient(120% 120% at 0 0,#1e3a8a 0%,#0f172a 55%,#020617 100%);flex-direction:column;justify-content:space-between;padding:56px 60px;display:flex;position:relative;overflow:hidden}.auth-aside:after{content:"";filter:blur(10px);background:radial-gradient(circle,#2f6fed8c,#0000 65%);border-radius:50%;width:480px;height:480px;position:absolute;inset:auto -20% -40% auto}.auth-aside h1{z-index:1;margin:0 0 16px;font-size:30px;line-height:1.35;position:relative}.auth-aside p{color:#94a3b8;z-index:1;max-width:380px;margin:0;line-height:1.8;position:relative}.auth-body{justify-content:center;align-items:center;padding:48px 32px;display:flex}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:420px;box-shadow:var(--shadow-lg);padding:36px 34px}.auth-card h2{margin:0 0 8px;font-size:22px}.auth-card .subtitle{color:var(--text-muted);margin:0 0 26px;font-size:14px;line-height:1.7}@media (width<=900px){.auth-page{grid-template-columns:1fr}.auth-aside{display:none}}.brand{letter-spacing:.2px;align-items:center;gap:10px;font-weight:600;display:inline-flex}.brand-mark{color:#fff;background:linear-gradient(135deg,#3b82f6,#1d4ed8);border-radius:10px;place-items:center;width:34px;height:34px;font-size:15px;font-weight:700;display:grid;box-shadow:0 6px 16px #2563eb59}.brand-sub{color:var(--text-faint);letter-spacing:.4px;font-size:12px;font-weight:400}.auth-aside .brand-sub{color:#94a3b8}.field{margin-bottom:18px}.field label{color:var(--text-muted);margin-bottom:8px;font-size:13px;font-weight:500;display:block}.field .hint{color:var(--text-faint);margin-top:6px;font-size:12px}.input{width:100%;height:44px;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);outline:none;padding:0 14px;font-size:14px;transition:border-color .15s,box-shadow .15s}.input:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.input[readonly]{background:var(--surface-soft);color:var(--text-muted);cursor:not-allowed}.btn{color:#fff;background:var(--brand);border-radius:var(--radius-sm);cursor:pointer;border:none;justify-content:center;align-items:center;gap:8px;height:44px;padding:0 20px;font-size:14px;font-weight:500;transition:background .15s,transform 50ms;display:inline-flex}.btn:hover{background:var(--brand-dark)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-block{width:100%}.btn-ghost{color:var(--text);border:1px solid var(--border);background:0 0}.btn-ghost:hover{background:var(--surface-soft)}.btn-sm{height:34px;padding:0 14px;font-size:13px}.alert{border-radius:var(--radius-sm);gap:10px;margin-bottom:18px;padding:12px 14px;font-size:13px;line-height:1.6;display:flex}.alert-error{color:var(--danger);background:var(--danger-soft)}.alert-success{color:var(--success);background:var(--success-soft)}.alert-info{color:var(--brand-dark);background:var(--brand-soft)}.alert-warning{color:var(--warning);background:var(--warning-soft)}.admin-shell{grid-template-columns:232px minmax(0,1fr);height:100vh;display:grid;overflow:hidden}.admin-sidebar{background:var(--sidebar);color:var(--sidebar-text);flex-direction:column;gap:26px;height:100vh;padding:24px 18px;display:flex;overflow-y:auto}.admin-sidebar .brand{color:#fff;padding:0 6px}.admin-nav{flex-direction:column;gap:4px;display:flex}.admin-nav a{border-radius:var(--radius-sm);color:var(--sidebar-text);align-items:center;gap:10px;padding:10px 12px;font-size:14px;display:flex}.admin-nav a.router-link-exact-active{color:#fff;background:#2f6fed47}.admin-nav a:hover{background:#ffffff14;text-decoration:none}.admin-main{flex-direction:column;min-width:0;height:100vh;display:flex;overflow:hidden}.admin-header{background:var(--surface);border-bottom:1px solid var(--border);flex:0 0 64px;justify-content:space-between;align-items:center;gap:16px;height:64px;padding:0 28px;display:flex}.admin-header .title{font-size:15px;font-weight:600}.admin-header .user{color:var(--text-muted);align-items:center;gap:12px;font-size:13px;display:flex}.avatar{width:32px;height:32px;color:var(--brand-dark);background:var(--brand-soft);border-radius:50%;place-items:center;font-size:13px;font-weight:600;display:grid}.admin-content{flex:auto;align-content:start;gap:20px;min-height:0;padding:28px;display:grid;overflow-y:auto}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:24px}.card h3{margin:0 0 6px;font-size:16px}.card .card-sub{color:var(--text-muted);margin:0 0 20px;font-size:13px;line-height:1.7}.grid-2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));align-items:start;gap:20px;display:grid}.info-list{grid-template-columns:110px minmax(0,1fr);gap:12px 16px;margin:0;font-size:14px;display:grid}.info-list dt{color:var(--text-faint)}.info-list dd{color:var(--text);word-break:break-all;margin:0}.tag{color:var(--brand-dark);background:var(--brand-soft);border-radius:999px;align-items:center;gap:6px;padding:3px 10px;font-size:12px;display:inline-flex}.tag-success{color:var(--success);background:var(--success-soft)}.tag-muted{color:var(--text-muted);background:var(--surface-soft)}.landing{background:radial-gradient(120% 120% at 10% 0,#eef4ff 0%,#f8fafc 45%,#f1f5f9 100%);place-items:center;min-height:100%;padding:40px;display:grid}.landing-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:min(720px,100%);box-shadow:var(--shadow-lg);text-align:center;padding:48px}.landing-card h1{margin:20px 0 10px;font-size:26px}.landing-card p{color:var(--text-muted);line-height:1.8}.landing-actions{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:28px;display:flex}.muted{color:var(--text-faint);font-size:13px}.mt-16{margin-top:16px}.mt-24{margin-top:24px}.spin{border:2px solid #fff6;border-top-color:#fff;border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=860px){.admin-shell{grid-template-rows:auto minmax(0,1fr);grid-template-columns:1fr}.admin-sidebar{flex-direction:row;justify-content:space-between;align-items:center;height:auto;padding:14px 18px;overflow:auto visible}.admin-nav{white-space:nowrap;flex-wrap:nowrap}.admin-main{height:auto;min-height:0;overflow:visible}.admin-content{overflow:visible}.admin-nav{flex-direction:row}.admin-content{padding:18px}}code{color:var(--brand-dark);background:var(--brand-soft);border-radius:6px;padding:1px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;display:flex}.toolbar .spacer{flex:1}.input-sm,.select{height:36px;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);outline:none;padding:0 12px;font-size:13px}.input-sm{min-width:200px}.input-sm:focus,.select:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.table-wrap{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow-x:auto}table.data{border-collapse:collapse;width:100%;min-width:760px;font-size:13px}table.data th,table.data td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:12px 14px}table.data th{color:var(--text-muted);background:var(--surface-soft);font-weight:500}table.data tbody tr:last-child td{border-bottom:none}table.data tbody tr:hover{background:#fbfcfe}table.data td.actions{gap:6px;display:flex}.link-btn{color:var(--brand);cursor:pointer;background:0 0;border:none;padding:0;font-size:13px}.link-btn:hover{text-decoration:underline}.link-btn.danger{color:var(--danger)}.empty{text-align:center;color:var(--text-faint);padding:40px;font-size:13px}.pagination{color:var(--text-muted);justify-content:flex-end;align-items:center;gap:10px;margin-top:14px;font-size:13px;display:flex}.modal-mask{z-index:50;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0f172a73;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border-radius:var(--radius);width:min(440px,100%);max-height:calc(100vh - 48px);box-shadow:var(--shadow-lg);flex-direction:column;animation:.16s ease-out modal-in;display:flex;overflow:hidden}@keyframes modal-in{0%{opacity:0;transform:translateY(8px)scale(.99)}}.modal-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:18px 20px;display:flex}.modal-head h3{margin:0;font-size:15px}.modal-close{width:28px;height:28px;color:var(--text-faint);cursor:pointer;background:0 0;border:none;border-radius:6px;font-size:18px;line-height:1}.modal-close:hover{color:var(--text);background:var(--surface-soft)}.modal-body{flex:auto;min-height:0;padding:20px;overflow-y:auto}.modal-foot{border-top:1px solid var(--border);background:var(--surface-soft);justify-content:flex-end;gap:10px;padding:14px 20px;display:flex}.switch{background:var(--border);cursor:pointer;border:none;border-radius:999px;width:40px;height:22px;transition:background .15s;position:relative}.switch:after{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .15s;position:absolute;top:3px;left:3px}.switch.on{background:var(--success)}.switch.on:after{transform:translate(18px)}.badge{color:var(--text-muted);background:var(--surface-soft);border-radius:999px;align-items:center;padding:2px 8px;font-size:12px;line-height:18px;display:inline-flex}.badge-on{color:var(--success);background:var(--success-soft)}.badge-off{color:var(--danger);background:var(--danger-soft)}.user-link{color:var(--text);border-radius:999px;align-items:center;gap:10px;padding:4px 10px 4px 4px;transition:background .15s;display:inline-flex}.user-link:hover{background:var(--surface-soft);text-decoration:none}.user-link.router-link-exact-active{background:var(--brand-soft)}.user-name{font-size:13px}.check-list{flex-direction:column;gap:6px;max-height:260px;display:flex;overflow-y:auto}.check-item{border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;align-items:center;gap:10px;padding:8px 10px;font-size:13px;display:flex}.check-item:hover{background:var(--surface-soft)}.check-item input{width:16px;height:16px;accent-color:var(--brand)}.check-item code{margin-left:auto}.check-item .check-name{font-weight:500}.check-item .check-account{color:var(--text-muted);font-size:12px}.textarea{resize:vertical;height:auto;padding:10px 14px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;line-height:1.6}.table-wrap.preview{border:1px solid var(--border);border-radius:var(--radius-sm);max-height:220px;margin-top:8px;overflow:auto}.table-wrap.preview table.data{border:none}.progress{background:var(--surface-soft);border-radius:999px;height:6px;margin-top:8px;overflow:hidden}.progress-bar{background:var(--brand);height:100%;transition:width .3s}.confirm-message{color:var(--text);margin:0 0 8px;font-size:14px;line-height:1.6}.confirm-detail{color:var(--text-muted);margin:0;font-size:12px;line-height:1.6}.btn-danger{background:var(--danger,#d92d20);border-color:var(--danger,#d92d20);color:#fff}.btn-danger:hover{filter:brightness(.95)}.landing{grid-template-rows:1fr auto;align-content:center}.site-footer{color:var(--text-faint);flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;padding:24px 40px 32px;font-size:12px;display:flex}.site-footer a{color:var(--text-faint);align-items:center;gap:4px;text-decoration:none;display:inline-flex}.site-footer a:hover{color:var(--brand)}.site-footer-sep{color:var(--border)}.site-footer-police img{width:16px;height:16px;display:block}.pagination-size{color:var(--text-muted);align-items:center;gap:6px;font-size:12px;display:inline-flex}.select-sm{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);height:28px;color:var(--text);cursor:pointer;padding:0 8px;font-size:12px}.seat-canvas{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-soft);grid-auto-rows:var(--seat-cell);justify-content:start;gap:6px;max-height:52vh;padding:14px;display:grid;overflow:auto}.seat-cell{width:var(--seat-cell);height:var(--seat-cell);min-width:var(--seat-cell);border-radius:var(--radius-sm);border:1px dashed var(--border);background:var(--surface);color:var(--text-muted);cursor:default;text-overflow:ellipsis;white-space:nowrap;justify-content:center;align-items:center;padding:2px;font-size:12px;display:flex;overflow:hidden}.seat-cell.interactive{cursor:pointer}.seat-cell.interactive:hover{border-color:var(--brand)}.seat-cell.is-empty{background:0 0}.seat-cell.is-seat{white-space:normal;word-break:break-all;border-style:solid;border-color:var(--border);background:var(--surface);color:var(--text);font-weight:500;line-height:1.2}.seat-cell.is-seat.is-assigned{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-dark)}.seat-cell.is-podium{border-style:solid;border-color:var(--brand);background:var(--brand);color:#fff;letter-spacing:2px;font-weight:600}.seat-cell.is-door{border-style:solid;border-color:var(--warning);background:var(--warning-soft);color:var(--warning)}.seat-cell.is-aisle{background:repeating-linear-gradient(45deg, var(--surface-soft), var(--surface-soft) 6px, var(--surface) 6px, var(--surface) 12px);border-style:dashed}.seat-toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.seat-tool{border:1px solid var(--border);background:var(--surface);color:var(--text-muted);cursor:pointer;border-radius:999px;padding:6px 12px;font-size:12px}.seat-tool.active{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-dark)}.seat-hint{color:var(--text-faint);font-size:12px;line-height:1.7}.modal-wide{width:min(1080px,100vw - 48px)}.plan-grid{grid-template-columns:minmax(0,1fr) 220px;align-items:start;gap:16px;display:grid}.plan-side{border-left:1px solid var(--border);padding-left:14px}.student-chip{border:1px solid var(--border);background:var(--surface);cursor:pointer;text-align:left;border-radius:999px;padding:6px 10px;font-size:12px}.student-chip:hover:not(:disabled){border-color:var(--brand);color:var(--brand)}.student-chip:disabled{opacity:.5;cursor:not-allowed}@media (width<=860px){.plan-grid{grid-template-columns:1fr}.plan-side{border-left:none;border-top:1px solid var(--border);padding-top:12px;padding-left:0}}.point-positive{color:var(--success)}.point-negative{color:var(--danger)}.check-col{text-align:center;width:44px}.check-col input{width:16px;height:16px;accent-color:var(--brand)}.radio-row{flex-wrap:wrap;gap:10px;display:flex}.radio-row .check-item{flex:200px}.seat-cell.is-selected{outline:2px solid var(--brand);outline-offset:1px;box-shadow:0 0 0 3px var(--brand-soft)}.seat-cell.is-empty.interactive{border-color:var(--border);background:linear-gradient(0deg, #94a3b81f 1px, transparent 1px) 0 0 / 100% 8px, var(--surface)}.seat-cell.is-empty.interactive:hover{background:var(--brand-soft)}.btn.is-confirm{border-color:var(--danger);color:var(--danger);background:var(--danger-soft)}.plan-form{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0 14px;display:grid}.size-input{text-align:center;width:64px}.user-auth{background:#f4f7fb;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);min-height:100vh;display:grid}.user-auth-aside{color:#e2e8f0;background:radial-gradient(120% 120% at 0 0,#1e3a8a 0%,#0f172a 55%,#020617 100%);flex-direction:column;justify-content:space-between;gap:40px;padding:48px 56px;display:flex;position:relative;overflow:hidden}.user-auth-aside:before{content:"";filter:blur(8px);background:radial-gradient(circle,#2f6fed8c,#0000 65%);border-radius:50%;width:420px;height:420px;position:absolute;top:-160px;right:-120px}.user-auth-aside:after{content:"";border:1px solid #ffffff1f;border-radius:50%;width:320px;height:320px;position:absolute;bottom:-140px;left:-80px}.user-auth-brand{z-index:1;color:#fff;letter-spacing:.2px;align-items:center;gap:10px;font-weight:600;display:inline-flex;position:relative}.user-auth-brand:hover{text-decoration:none}.user-auth-brand-sub{color:#94a3b8;font-size:12px;font-weight:400}.user-auth-copy{z-index:1;position:relative}.user-auth-eyebrow{letter-spacing:.2em;color:#93c5fd;margin:0 0 18px;font-size:12px}.user-auth-copy h1{letter-spacing:-.02em;margin:0 0 18px;font-size:36px;line-height:1.3}.user-auth-lead{color:#94a3b8;max-width:420px;margin:0 0 28px;font-size:14px;line-height:1.9}.user-auth-features{gap:12px;margin:0;padding:0;list-style:none;display:grid}.user-auth-features li{color:#cbd5e1;align-items:center;gap:10px;font-size:13px;display:flex}.user-auth-dot{background:#2f6fed40;border:1px solid #93c5fd80;border-radius:50%;flex:none;width:18px;height:18px;position:relative}.user-auth-dot:after{content:"";background:#93c5fd;border-radius:50%;position:absolute;inset:5px}.user-auth-aside-foot{z-index:1;color:#64748b;margin:0;font-size:12px;position:relative}.user-auth-body{justify-content:center;align-items:center;min-height:100vh;padding:40px 24px;display:flex}.user-login-card{background:var(--surface);border:1px solid var(--border);width:100%;max-width:420px;box-shadow:var(--shadow-lg);border-radius:24px;padding:36px 34px}.login-switch{background:var(--surface-soft);border:1px solid var(--border);border-radius:12px;gap:4px;margin-bottom:26px;padding:4px;display:flex}.login-switch button{height:36px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:9px;flex:1;font-size:13px;transition:background .15s,color .15s,box-shadow .15s}.login-switch button:hover{color:var(--text)}.login-switch button.active{color:var(--brand-dark);background:var(--surface);box-shadow:var(--shadow-sm);font-weight:600}.user-login-brand{align-items:center;gap:10px;margin-bottom:26px;font-weight:600;display:none}.user-login-eyebrow{letter-spacing:.12em;color:var(--brand);margin:0 0 6px;font-size:12px;font-weight:600}.user-login-card h2{letter-spacing:-.01em;margin:0 0 8px;font-size:24px}.user-login-sub{color:var(--text-muted);margin:0 0 24px;font-size:13px}.user-input-wrap{position:relative}.user-input-icon{width:18px;height:18px;color:var(--text-faint);pointer-events:none;position:absolute;top:50%;left:14px;transform:translateY(-50%)}.user-input{padding-left:42px;padding-right:62px}.user-input-action{height:30px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:0 8px;font-size:12px;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.user-check{color:var(--text-muted);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;margin:2px 0 18px;font-size:13px;display:flex}.user-check input{width:15px;height:15px;accent-color:var(--brand)}.user-login-submit{height:46px}.user-login-links{color:var(--text-faint);justify-content:center;align-items:center;gap:10px;margin-top:22px;font-size:13px;display:flex}.user-login-links a{color:var(--text-muted)}.user-shell{background:radial-gradient(120% 100% at 10% 0,#eef4ff 0%,#0000 45%),radial-gradient(100% 100% at 100% 0,#f5f3ff 0%,#0000 38%),#f6f8fc;min-height:100vh}.user-topbar{z-index:20;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#ffffffdb;border-bottom:1px solid #e4e7ece6;position:sticky;top:0}.user-topbar-inner{align-items:center;gap:24px;max-width:1080px;height:64px;margin:0 auto;padding:0 24px;display:flex}.user-brand{color:var(--text);letter-spacing:.2px;align-items:center;gap:10px;font-weight:600;display:inline-flex}.user-brand:hover{text-decoration:none}.user-topnav{gap:6px;margin-left:8px;display:flex}.user-topnav a{color:var(--text-muted);border-radius:999px;padding:8px 14px;font-size:14px}.user-topnav a:hover{background:var(--surface-soft);text-decoration:none}.user-topnav a.router-link-active{color:var(--brand-dark);background:var(--brand-soft);font-weight:500}.user-top-actions{align-items:center;gap:10px;margin-left:auto;display:flex}.user-chip{color:var(--text);border-radius:999px;align-items:center;gap:10px;padding:4px 10px 4px 4px;display:flex}.user-chip:hover{background:var(--surface-soft);text-decoration:none}.user-avatar{color:#fff;background:linear-gradient(135deg,#3b82f6,#1d4ed8);border-radius:50%;flex:none;place-items:center;width:34px;height:34px;font-size:14px;font-weight:600;display:grid}.user-chip-text{flex-direction:column;line-height:1.25;display:flex}.user-chip-text strong{font-size:13px;font-weight:600}.user-chip-text small{color:var(--text-faint);font-size:11px}.user-logout{border:1px solid var(--border);height:32px;color:var(--text-muted);cursor:pointer;background:0 0;border-radius:999px;padding:0 12px;font-size:12px}.user-logout:hover{color:var(--danger);background:var(--danger-soft);border-color:#dc26264d}.user-main{align-content:start;gap:20px;width:min(1080px,100%);margin:0 auto;padding:28px 24px 56px;display:grid}.user-tabbar{display:none}.user-hero{color:#fff;background:radial-gradient(120% 160% at 100% 0,#4f46e5 0%,#2f6fed 38%,#0f172a 100%);border-radius:24px;justify-content:space-between;align-items:center;gap:24px;padding:32px 34px;display:flex;position:relative;overflow:hidden;box-shadow:0 20px 40px #0f172a29}.user-hero:before{content:"";background:#ffffff14;border-radius:50%;width:280px;height:280px;position:absolute;top:-140px;right:8%}.user-hero:after{content:"";border:1px solid #ffffff29;border-radius:50%;width:180px;height:180px;position:absolute;bottom:-100px;left:38%}.user-hero-main{z-index:1;position:relative}.user-hero-date{letter-spacing:.08em;color:#ffffffa6;margin:0 0 8px;font-size:12px}.user-hero h1{flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 10px;font-size:28px;line-height:1.3;display:flex}.user-hero-role{background:#ffffff29;border:1px solid #fff3;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:500}.user-hero-sub{color:#ffffffb8;max-width:560px;margin:0;font-size:14px;line-height:1.7}.user-hero-actions{flex-wrap:wrap;gap:10px;margin-top:20px;display:flex}.user-hero-btn{color:#0f172a;background:#fff;border-radius:999px;align-items:center;height:38px;padding:0 16px;font-size:13px;font-weight:500;display:inline-flex}.user-hero-btn:hover{background:#f1f5f9;text-decoration:none}.user-hero-btn.ghost{color:#fff;background:#ffffff1f;border:1px solid #ffffff3d}.user-hero-btn.ghost:hover{background:#fff3}.user-hero-avatar{z-index:1;color:#fff;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:linear-gradient(135deg,#ffffff47,#ffffff14);border:1px solid #ffffff47;border-radius:28px;flex:none;place-items:center;width:84px;height:84px;font-size:34px;font-weight:600;display:grid;position:relative}.user-stat-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}.user-stat{background:var(--surface);border:1px solid var(--border);min-width:0;box-shadow:var(--shadow-sm);border-radius:16px;flex-direction:column;gap:6px;padding:16px 18px;display:flex}.user-stat span{color:var(--text-faint);font-size:12px}.user-stat strong{text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;overflow:hidden}.user-section{gap:14px;display:grid}.user-section-head{justify-content:space-between;align-items:flex-end;gap:16px;display:flex}.user-section-head h2{margin:0 0 4px;font-size:18px}.user-section-head p{color:var(--text-muted);margin:0;font-size:13px}.user-service-grid{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px;display:grid}.user-service{color:var(--text);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm);border-radius:16px;align-items:flex-start;gap:14px;padding:18px;transition:transform .16s,box-shadow .16s,border-color .16s;display:flex;position:relative}.user-service.is-link:hover{box-shadow:var(--shadow);border-color:#2f6fed59;text-decoration:none;transform:translateY(-2px)}.user-service-icon{width:42px;height:42px;color:var(--brand);background:var(--brand-soft);border-radius:12px;flex:none;place-items:center;display:grid}.user-service-icon svg{width:22px;height:22px}.tone-amber .user-service-icon{color:var(--warning);background:var(--warning-soft)}.tone-violet .user-service-icon{color:#7c3aed;background:#7c3aed1a}.tone-green .user-service-icon{color:var(--success);background:var(--success-soft)}.user-service-body{flex-direction:column;gap:4px;min-width:0;display:flex}.user-service-body strong{font-size:14px}.user-service-body>span:not(.user-service-badge){color:var(--text-muted);font-size:12px;line-height:1.6}.user-service-badge{color:var(--text-faint);background:var(--surface-soft);border-radius:999px;align-self:flex-start;margin-top:4px;padding:2px 8px;font-size:10px;line-height:16px}.user-service-arrow{color:var(--brand);align-self:center;margin-left:auto;font-size:16px}.user-coming{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm);border-radius:20px;padding:24px}.user-coming-head{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px;display:flex}.user-coming-head h2{margin:0 0 4px;font-size:17px}.user-coming-head p{color:var(--text-muted);margin:0;font-size:13px;line-height:1.7}.user-coming-version{color:var(--text-faint);background:var(--surface-soft);border-radius:999px;flex:none;padding:3px 9px;font-size:11px}.user-timeline{gap:14px;margin:0;padding:0;list-style:none;display:grid}.user-timeline li{align-items:flex-start;gap:12px;display:flex}.user-timeline-dot{background:var(--border);width:10px;height:10px;box-shadow:0 0 0 4px var(--surface-soft);border-radius:50%;flex:none;margin-top:5px}.user-timeline-dot.is-done{background:var(--success);box-shadow:0 0 0 4px var(--success-soft)}.user-timeline div{flex-direction:column;gap:2px;display:flex}.user-timeline strong{font-size:13px}.user-timeline span{color:var(--text-muted);font-size:12px}.user-profile-card{border:1px solid var(--border);box-shadow:var(--shadow-sm);background:linear-gradient(135deg,#fff,#f4f8ff);border-radius:22px;align-items:center;gap:18px;padding:26px;display:flex}.user-profile-avatar{color:#fff;background:linear-gradient(135deg,#3b82f6,#1d4ed8);border-radius:22px;flex:none;place-items:center;width:68px;height:68px;font-size:26px;font-weight:600;display:grid;box-shadow:0 10px 24px #2563eb40}.user-profile-main{min-width:0}.user-profile-main h1{margin:0 0 6px;font-size:22px}.user-profile-main p{color:var(--text-muted);margin:0;font-size:13px}.user-profile-role{color:var(--brand-dark);background:var(--brand-soft);border-radius:999px;flex:none;margin-left:auto;padding:4px 12px;font-size:12px}.user-panel-grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));align-items:start;gap:20px;display:grid}.user-panel{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm);border-radius:20px;padding:24px}.user-panel-head{margin-bottom:18px}.user-panel-head h2{margin:0 0 4px;font-size:17px}.user-panel-head p{color:var(--text-muted);margin:0;font-size:13px;line-height:1.7}.user-info-list{grid-template-columns:96px minmax(0,1fr);gap:12px 16px;margin:0;font-size:14px;display:grid}.user-info-list dt{color:var(--text-faint)}.user-info-list dd{color:var(--text);word-break:break-all;margin:0}.user-panel-hint{color:var(--warning);background:var(--warning-soft);border-radius:10px;margin:16px 0 0;padding:10px 12px;font-size:12px;line-height:1.6}.user-panel-submit{width:100%}.user-account-actions{flex-direction:column;display:flex}.user-action-row{flex-wrap:wrap;gap:12px;display:flex}.user-btn-danger{color:var(--danger);background:var(--danger-soft);border:1px solid #dc26262e}.user-btn-danger:hover{background:#dc262629}@media (width<=900px){.user-auth{grid-template-columns:1fr}.user-auth-aside{display:none}.user-auth-body{min-height:100dvh;padding:32px 20px}.user-login-brand{display:flex}.user-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){.user-topbar-inner{gap:12px;height:58px;padding:0 16px}.user-topnav,.user-chip-text,.user-logout{display:none}.user-main{gap:16px;padding:18px 16px 96px}.user-hero{border-radius:20px;flex-direction:column;align-items:flex-start;padding:24px 76px 24px 24px}.user-hero h1{font-size:22px}.user-hero-avatar{border-radius:16px;width:48px;height:48px;font-size:20px;position:absolute;top:20px;right:20px}.user-service-grid{grid-template-columns:1fr}.user-profile-card{align-items:flex-start;gap:14px;padding:20px}.user-profile-avatar{border-radius:18px;width:56px;height:56px;font-size:22px}.user-profile-role{margin-left:0}.user-panel-grid{grid-template-columns:1fr}.user-tabbar{z-index:30;height:calc(62px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);border-top:1px solid var(--border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffffff0;display:flex;position:fixed;bottom:0;left:0;right:0}.user-tab{color:var(--text-faint);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;font-size:11px;display:flex}.user-tab svg{width:22px;height:22px}.user-tab:hover{text-decoration:none}.user-tab.router-link-active{color:var(--brand)}}@media (width<=480px){.user-login-card{padding:28px 22px}.user-stat{padding:14px}.user-stat-grid{gap:10px}.user-coming{padding:20px}}.portal{--portal-max:1240px;min-height:100vh;color:var(--t-ink);background:radial-gradient(70% 52% at 8% 0%, #c9f16929, transparent 62%), radial-gradient(55% 42% at 100% 8%, #0f6b5a17, transparent 58%), var(--t-bg);font-family:var(--t-font);font-feature-settings:"ss01" on, "cv01" on;overflow-x:hidden}.portal a:hover{text-decoration:none}.portal-header{z-index:30;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#f3f5eed1;border-bottom:1px solid #d3dbcfb8;position:sticky;top:0}.portal-header-inner{width:min(var(--portal-max), 100%);align-items:center;gap:34px;height:72px;margin:0 auto;padding:0 30px;display:flex}.portal-brand{color:var(--t-ink);flex:none;align-items:center;gap:11px;display:inline-flex}.portal-logo{width:40px;height:40px;color:var(--t-ink);background:var(--t-lime);font-family:var(--t-mono);letter-spacing:-.08em;border-radius:12px;flex:none;justify-content:center;align-items:center;font-size:12px;font-weight:800;display:inline-flex;box-shadow:0 8px 20px #0d1f1b1f}.portal-brand-text{flex-direction:column;line-height:1.18;display:flex}.portal-brand-text strong{letter-spacing:.01em;white-space:nowrap;font-size:15px}.portal-brand-text small{color:#7f8d80;font-family:var(--t-mono);letter-spacing:.15em;margin-top:4px;font-size:7px}.portal-nav{align-items:center;gap:4px;display:flex}.portal-nav a{color:#5f6d62;border-radius:9px;padding:8px 14px;font-size:12px;transition:color .18s,background .18s}.portal-nav a:hover{color:var(--t-ink);background:#ffffffb8;text-decoration:none}.portal-header-actions{align-items:center;gap:16px;margin-left:auto;display:flex}.portal-status{color:#758177;white-space:nowrap;align-items:center;gap:6px;font-size:10px;display:inline-flex}.portal-status i{background:#5bbd69;border-radius:50%;width:6px;height:6px;box-shadow:0 0 0 4px #5bbd6921}.portal-login{color:#f3f8f4;background:var(--t-ink);border-radius:10px;align-items:center;gap:8px;height:38px;padding:0 15px;font-size:11px;font-weight:500;transition:background .18s,transform .18s,box-shadow .18s;display:inline-flex;box-shadow:0 10px 22px #0d1f1b29}.portal-login:hover{color:var(--t-ink);background:var(--t-lime);transform:translateY(-1px);box-shadow:0 12px 26px #c9f16938}.portal main{width:min(var(--portal-max), 100%);margin:0 auto;padding:0 30px}.portal-hero{grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);align-items:center;gap:54px;padding:72px 0 58px;display:grid}.portal-eyebrow{color:var(--t-green);font-family:var(--t-mono);letter-spacing:.14em;align-items:center;gap:8px;margin:0 0 20px;font-size:8px;font-weight:600;display:flex}.portal-eyebrow span{background:var(--t-lime);border-radius:99px;width:17px;height:2px}.portal-hero h1{color:var(--t-ink);letter-spacing:-.055em;margin:0 0 20px;font-size:52px;font-weight:750;line-height:1.13}.portal-hero h1 span{color:var(--t-green);z-index:0;display:inline-block;position:relative}.portal-hero h1 span:after{content:"";z-index:-1;background:var(--t-lime);opacity:.72;border-radius:4px;height:12px;position:absolute;bottom:3px;left:1px;right:1px}.portal-lead{max-width:540px;color:var(--t-muted);margin:0 0 26px;font-size:13px;line-height:1.9}.portal-actions{flex-wrap:wrap;gap:10px;display:flex}.portal-btn{color:#f3f8f4;background:var(--t-ink);border-radius:10px;justify-content:center;align-items:center;gap:8px;height:45px;padding:0 19px;font-size:11px;font-weight:500;transition:transform .18s,background .18s,box-shadow .18s;display:inline-flex;box-shadow:0 12px 28px #0d1f1b29}.portal-btn:hover{color:var(--t-ink);background:var(--t-lime);transform:translateY(-2px);box-shadow:0 14px 30px #c9f16938}.portal-btn-ghost{color:#4f5f54;border:1px solid var(--t-border);box-shadow:var(--t-shadow-sm);background:#ffffffb8}.portal-btn-ghost:hover{color:var(--t-ink);border-color:var(--t-border-strong);background:#fff;box-shadow:0 10px 22px #0d1f1b12}.portal-metrics{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;max-width:390px;margin-top:30px;display:grid}.portal-metric{border:1px solid var(--t-border);box-shadow:var(--t-shadow-sm);background:#ffffffc2;border-radius:12px;flex-direction:column;padding:13px 14px;display:flex}.portal-metric strong{color:var(--t-ink);letter-spacing:-.04em;font-size:21px;line-height:1}.portal-metric span{color:#526157;margin-top:7px;font-size:9px}.portal-metric small{color:var(--t-faint);margin-top:2px;font-size:8px}.portal-signed{color:#8d998e;margin:18px 0 0;font-size:10px}.portal-preview{transform-origin:50%;background:#fff;border:1px solid #0d1f1b1f;border-radius:24px;min-width:0;height:430px;display:flex;position:relative;overflow:hidden;transform:perspective(1400px)rotateY(-2deg)rotateX(1deg);box-shadow:0 32px 80px #0d1f1b2e,0 4px 14px #0d1f1b0f}.preview-sidebar{color:#dce8e2;background:radial-gradient(120% 70% at 0% 0%, #c9f16917, transparent 52%), var(--t-sidebar);flex-direction:column;flex:none;width:144px;padding:16px 11px 12px;display:flex}.preview-brand{align-items:center;gap:7px;padding:0 4px;display:flex}.preview-logo{width:27px;height:27px;color:var(--t-ink);background:var(--t-lime);font-family:var(--t-mono);border-radius:8px;flex:none;justify-content:center;align-items:center;font-size:8px;font-weight:800;display:inline-flex}.preview-brand>span:last-child{flex-direction:column;min-width:0;display:flex}.preview-brand strong{color:#f0f6f2;white-space:nowrap;font-size:8px}.preview-brand small{color:#7f9b90;font-family:var(--t-mono);letter-spacing:.12em;margin-top:2px;font-size:5px}.preview-nav{flex-direction:column;gap:3px;margin-top:24px;display:flex}.preview-nav span{color:#8fa79d;border-radius:7px;align-items:center;gap:7px;height:28px;padding:0 8px;font-size:7px;display:flex}.preview-nav span.active{color:var(--t-ink);background:var(--t-lime);font-weight:600}.preview-user{border-top:1px solid #ffffff12;align-items:center;gap:7px;margin-top:auto;padding:9px 6px 2px;display:flex}.preview-avatar{color:#2c3e22;background:var(--t-lime-soft);border-radius:50%;flex:none;justify-content:center;align-items:center;width:25px;height:25px;font-size:8px;font-weight:700;display:inline-flex}.preview-user>span:last-child{flex-direction:column;display:flex}.preview-user strong{color:#e5efe9;font-size:7px}.preview-user small{color:#779287;margin-top:2px;font-size:6px}.preview-stage{background:var(--t-bg);flex-direction:column;flex:1;min-width:0;display:flex}.preview-topbar{color:#78857a;border-bottom:1px solid #d3dbcfb3;flex:none;justify-content:space-between;align-items:center;height:41px;padding:0 17px;font-size:7px;display:flex}.preview-topbar i{color:#aeb8ac;margin:0 4px;font-style:normal}.preview-top-actions{align-items:center;gap:6px;display:flex}.preview-top-actions i{border:1px solid var(--t-border);background:#fff;border-radius:5px;width:15px;height:15px;margin:0}.preview-top-actions b{color:#53624e;background:var(--t-lime-soft);border-radius:50%;justify-content:center;align-items:center;width:21px;height:21px;font-size:7px;display:inline-flex}.preview-body{flex:1;min-height:0;padding:16px}.preview-welcome{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.preview-welcome>div{flex-direction:column;display:flex}.preview-welcome small{color:#8d998e;font-family:var(--t-mono);letter-spacing:.05em;font-size:6px}.preview-welcome strong{color:var(--t-ink);letter-spacing:-.03em;margin-top:5px;font-size:14px}.preview-pill{color:#4e642d;background:var(--t-lime-soft);white-space:nowrap;border:1px solid #c9f169cc;border-radius:99px;align-items:center;gap:4px;padding:5px 7px;font-size:6px;display:inline-flex}.preview-pill i{background:#6b9a32;border-radius:50%;width:4px;height:4px}.preview-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:12px;display:grid}.preview-stats>div{border:1px solid var(--t-border);background:#fff;border-radius:9px;flex-direction:column;padding:9px 10px;display:flex;box-shadow:0 4px 12px #0d1f1b09}.preview-stats span{color:#8c988d;font-size:5px}.preview-stats strong{color:var(--t-ink);margin-top:4px;font-size:14px;line-height:1}.preview-stats small{color:#a0aa9e;margin-top:3px;font-size:5px}.preview-grid{grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr);gap:7px;margin-top:8px;display:grid}.preview-panel{border:1px solid var(--t-border);background:#fff;border-radius:10px;min-width:0;padding:10px;box-shadow:0 4px 14px #0d1f1b09}.preview-panel-head{justify-content:space-between;align-items:center;gap:6px;margin-bottom:8px;display:flex}.preview-panel-head strong{color:#35443a;font-size:7px}.preview-panel-head span{color:#98a399;font-size:5px}.preview-lesson{border-top:1px solid #f1f4ed;align-items:center;gap:6px;padding:6px 0;display:flex}.preview-lesson>i{border-radius:50%;flex:none;width:5px;height:5px}.preview-lesson>i.is-green{background:var(--t-green)}.preview-lesson>i.is-lime{background:#a4ca44}.preview-lesson>span{color:#47564a;flex-direction:column;min-width:0;font-size:6px;display:flex}.preview-lesson small{color:#8d998e;white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:5px;overflow:hidden}.preview-lesson em{color:#8b978c;font-family:var(--t-mono);margin-left:auto;font-size:5px;font-style:normal}.preview-progress{align-items:center;gap:6px;margin-top:5px;display:flex}.preview-progress>span{background:#edf1e8;border-radius:99px;flex:1;height:4px;position:relative;overflow:hidden}.preview-progress>span:after{content:"";border-radius:inherit;background:var(--t-lime);position:absolute;inset:0 32% 0 0}.preview-progress small{color:#909c90;font-size:5px}.preview-seat-panel{flex-direction:column;display:flex}.preview-seats{grid-template-columns:repeat(6,minmax(0,1fr));gap:3px;margin-top:2px;display:grid}.preview-seats span{background:#f8faf5;border:1px dashed #dde4d8;border-radius:3px;height:12px}.preview-seats span.filled{background:var(--t-lime-soft);border:1px solid #d7e8c2}.preview-podium{color:#0000;background:linear-gradient(90deg, var(--t-green), var(--t-lime));border-radius:99px;align-self:center;width:32px;height:4px;margin-top:auto;margin-bottom:0;font-size:0}.preview-float{border:1px solid var(--t-border);background:#fff;border-radius:12px;align-items:center;gap:8px;padding:10px 13px;display:flex;position:absolute;bottom:14px;right:14px;box-shadow:0 16px 38px #0d1f1b29}.preview-float-icon{width:27px;height:27px;color:var(--t-ink);background:var(--t-lime);border-radius:8px;justify-content:center;align-items:center;display:inline-flex}.preview-float>span:last-child{flex-direction:column;display:flex}.preview-float small{color:#8a958b;font-size:6px}.preview-float strong{color:var(--t-ink);margin-top:2px;font-size:9px}.portal-section{padding:22px 0 0;scroll-margin-top:92px}.portal-section-head{justify-content:space-between;align-items:flex-end;gap:36px;margin-bottom:22px;display:flex}.portal-section-head>div{max-width:620px}.portal-section-head>p{max-width:360px;color:var(--t-muted);margin:0 0 2px;font-size:11px;line-height:1.8}.portal-section-eyebrow{color:var(--t-green);font-family:var(--t-mono);letter-spacing:.14em;margin:0 0 9px;font-size:8px;font-weight:600}.portal-section-head h2{color:var(--t-ink);letter-spacing:-.045em;margin:0;font-size:29px;line-height:1.2}.portal-module-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.portal-module{--module-accent:var(--t-green);--module-soft:var(--t-green-soft);border:1px solid var(--t-border);background:#fff;border-radius:18px;padding:22px;transition:transform .2s,box-shadow .2s,border-color .2s;box-shadow:0 1px 2px #0d1f1b08,0 14px 34px #0d1f1b0f}.portal-module:hover{box-shadow:var(--t-shadow);border-color:#0f6b5a38;transform:translateY(-4px)}.portal-module.module-sky{--module-accent:var(--t-sky);--module-soft:var(--t-sky-soft)}.portal-module.module-violet{--module-accent:var(--t-violet);--module-soft:var(--t-violet-soft)}.portal-module.module-sand{--module-accent:#a57b2e;--module-soft:var(--t-sand-soft)}.portal-module.module-coral{--module-accent:#c85e40;--module-soft:var(--t-coral-soft)}.portal-module-top{justify-content:space-between;align-items:center;gap:12px;margin-bottom:17px;display:flex}.portal-module-icon{width:43px;height:43px;color:var(--module-accent);background:var(--module-soft);border-radius:12px;justify-content:center;align-items:center;display:inline-flex}.portal-module-index{color:#c3ccc0;font-family:var(--t-mono);letter-spacing:.08em;font-size:9px}.portal-module h3{color:var(--t-ink);letter-spacing:-.02em;margin:0 0 8px;font-size:15px}.portal-module p{min-height:54px;color:var(--t-muted);margin:0 0 15px;font-size:10px;line-height:1.8}.portal-module-tags{flex-wrap:wrap;gap:5px;display:flex}.portal-module-tags span{color:#7a867b;background:#fafbf7;border:1px solid #edf1e8;border-radius:5px;padding:4px 7px;font-size:7px}.portal-roles-section{padding-top:46px}.portal-role-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.portal-role{--role-accent:var(--t-green);--role-soft:var(--t-green-soft);border:1px solid var(--t-border);background:#fff;border-radius:18px;flex-direction:column;min-height:224px;padding:20px;transition:transform .2s,box-shadow .2s;display:flex;box-shadow:0 1px 2px #0d1f1b08,0 14px 32px #0d1f1b0e}.portal-role:hover{box-shadow:var(--t-shadow);transform:translateY(-3px)}.portal-role.role-lime{--role-accent:#5d7d23;--role-soft:var(--t-lime-soft);border-color:#e1ecc9}.portal-role.role-sky{--role-accent:var(--t-sky);--role-soft:var(--t-sky-soft)}.portal-role.role-dark{border-color:var(--t-sidebar);color:#e8f1eb;background:radial-gradient(100% 80% at 100% 0%, #c9f1691f, transparent 58%), var(--t-sidebar);position:relative;box-shadow:0 18px 44px #0d1f1b2e}.portal-role-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:18px;display:flex}.portal-role-icon{width:38px;height:38px;color:var(--role-accent);background:var(--role-soft);border-radius:10px;justify-content:center;align-items:center;display:inline-flex}.portal-role.role-dark .portal-role-icon{color:var(--t-ink);background:var(--t-lime)}.portal-role-badge{color:#aab5aa;font-family:var(--t-mono);letter-spacing:.08em;font-size:7px}.portal-role.role-dark .portal-role-badge{color:#6f8a7f}.portal-role h3{color:var(--t-ink);letter-spacing:-.02em;margin:0 0 7px;font-size:15px}.portal-role.role-dark h3{color:#f1f7f3}.portal-role>p{color:var(--t-muted);margin:0 0 15px;font-size:10px;line-height:1.75}.portal-role.role-dark>p{color:#92a79c}.portal-role ul{flex-wrap:wrap;gap:5px 10px;margin:auto 0 0;padding:0;list-style:none;display:flex}.portal-role li{color:#657267;align-items:center;gap:4px;font-size:8px;display:inline-flex}.portal-role li svg{color:var(--role-accent)}.portal-role.role-dark li{color:#b4c6bb}.portal-role.role-dark li svg{color:var(--t-lime)}.portal-flow-section{padding-top:46px}.portal-flow-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.portal-flow-card{border:1px solid var(--t-border);background:#fff;border-radius:18px;padding:22px;position:relative;box-shadow:0 1px 2px #0d1f1b08,0 14px 32px #0d1f1b0e}.portal-flow-step{width:31px;height:31px;color:var(--t-ink);background:var(--t-lime-soft);font-family:var(--t-mono);border-radius:9px;justify-content:center;align-items:center;margin-bottom:18px;font-size:8px;font-weight:700;display:inline-flex}.portal-flow-card h3{margin:0 0 6px;font-size:14px}.portal-flow-card p{max-width:280px;color:var(--t-muted);margin:0;font-size:10px;line-height:1.8}.portal-flow-line{background:linear-gradient(90deg, var(--t-lime), transparent);width:30px;height:1px;position:absolute;top:37px;right:22px}.portal-cta{color:#f3f8f5;background:radial-gradient(90% 130% at 100% 0%, #c9f16929, transparent 58%), var(--t-sidebar);box-shadow:var(--t-shadow-lg);border-radius:24px;justify-content:space-between;align-items:center;gap:28px;margin:46px 0 58px;padding:36px 38px;display:flex}.portal-cta-copy>p{color:#7e9a8e;font-family:var(--t-mono);letter-spacing:.14em;margin:0 0 8px;font-size:8px}.portal-cta h2{color:#f1f7f3;letter-spacing:-.035em;margin:0 0 6px;font-size:25px}.portal-cta-copy>span{color:#8ca398;font-size:10px}.portal-cta-actions{flex-direction:column;flex:none;align-items:flex-end;gap:8px;display:flex}.portal-cta-btn{height:43px;color:var(--t-ink);background:var(--t-lime);border-radius:10px;align-items:center;gap:8px;padding:0 18px;font-size:10px;font-weight:600;transition:transform .18s,background .18s;display:inline-flex;box-shadow:0 10px 24px #c9f16929}.portal-cta-btn:hover{color:var(--t-ink);background:var(--t-lime-bright);transform:translateY(-1px)}.portal-cta-note{color:#6e8a7e;font-family:var(--t-mono);letter-spacing:.06em;font-size:7px}.portal .site-footer{color:#8d998e;border-top:1px solid #d3dbcfb3}.portal .site-footer a:hover{color:var(--t-green)}.portal .site-footer-sep{color:#d3dbcf}@media (width<=1180px){.portal-preview{height:395px}.preview-sidebar{width:128px}.portal-hero h1{font-size:46px}}@media (width<=1020px){.portal-hero{grid-template-columns:1fr;gap:38px;padding:54px 0 42px}.portal-hero-copy{max-width:680px}.portal-preview{width:100%;max-width:650px;height:400px}.portal-module-grid,.portal-role-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.portal-role{min-height:205px}}@media (width<=760px){.portal-header-inner,.portal main{padding-left:18px;padding-right:18px}.portal-nav,.portal-status{display:none}.portal-header-inner{gap:14px;height:64px}.portal-brand-text strong{font-size:13px}.portal-brand-text small{font-size:6px}.portal-logo{width:36px;height:36px}.portal-hero{padding:40px 0 32px}.portal-hero h1{font-size:35px}.portal-lead{font-size:12px}.portal-metrics{max-width:none}.portal-preview{height:330px;transform:none}.preview-sidebar{width:104px;padding:12px 8px 9px}.preview-brand>span:last-child{display:none}.preview-nav{margin-top:18px}.preview-nav span{padding:0 6px}.preview-body{padding:12px}.preview-grid{grid-template-columns:1fr}.preview-seat-panel,.preview-float{display:none}.portal-section{padding-top:18px}.portal-section-head{flex-direction:column;align-items:flex-start;gap:10px}.portal-section-head h2{font-size:24px}.portal-module-grid,.portal-role-grid,.portal-flow-grid{grid-template-columns:1fr}.portal-module p,.portal-role{min-height:0}.portal-cta{flex-direction:column;align-items:flex-start;margin:34px 0 36px;padding:27px 24px}.portal-cta h2{font-size:21px}.portal-cta-actions{align-items:flex-start}}@media (width<=520px){.portal-hero h1{font-size:30px}.portal-actions{flex-direction:column;align-items:stretch}.portal-btn{width:100%}.portal-metrics{gap:7px}.portal-metric{padding:10px}.portal-metric strong{font-size:18px}.portal-preview{height:290px}.preview-top-actions i{display:none}.preview-stats strong{font-size:12px}}.user-auth{background:var(--t-bg);font-family:var(--t-font)}.user-auth-aside{color:#e4eee8;background:radial-gradient(110% 80% at 0% 0%, #c9f16921, transparent 55%), radial-gradient(80% 60% at 100% 100%, #4c8fce14, transparent 55%), var(--t-sidebar)}.user-auth-aside:before{background:radial-gradient(circle,#c9f16933,#0000 66%)}.user-auth-aside:after{border-color:#c9f16921}.user-auth-brand{color:#f2f7f4}.user-auth-brand .brand-mark,.user-login-brand .brand-mark{color:var(--t-ink);background:var(--t-lime);box-shadow:0 8px 20px #c9f1692e}.user-auth-brand-sub{color:#7e998d}.user-auth-eyebrow{color:#a9c85f;font-family:var(--t-mono);letter-spacing:.13em;font-size:9px}.user-auth-copy h1{color:#f2f7f4;letter-spacing:-.04em}.user-auth-lead{color:#91a79c;font-size:13px}.user-auth-features li{color:#c3d3c9;font-size:12px}.user-auth-dot{background:#c9f16924;border-color:#c9f16957}.user-auth-dot:after{background:var(--t-lime)}.user-auth-aside-foot{color:#6e897d;font-family:var(--t-mono);font-size:9px}.user-login-card{border-color:var(--t-border);box-shadow:var(--t-shadow-lg);background:#fff;border-radius:22px}.user-login-brand{color:var(--t-ink)}.user-login-eyebrow{color:var(--t-green);font-family:var(--t-mono);letter-spacing:.12em;font-size:9px}.user-login-card h2{color:var(--t-ink);letter-spacing:-.035em}.user-login-sub{color:var(--t-muted)}.user-login-submit{color:#f3f8f4;background:var(--t-ink);border:0;border-radius:10px;height:45px;box-shadow:0 12px 26px #0d1f1b24}.user-login-submit:hover:not(:disabled){color:var(--t-ink);background:var(--t-lime)}.user-check input{accent-color:var(--t-green)}.user-input-action:hover{color:var(--t-green);background:var(--t-lime-soft)}.user-login-links a:hover{color:var(--t-green)}:root{--t-ink:#0d1f1b;--t-ink-soft:#16332c;--t-bg:#f3f5ee;--t-surface:#fff;--t-surface-soft:#f7f9f3;--t-border:#e2e7dd;--t-border-strong:#d3dbcf;--t-muted:#6b766d;--t-faint:#9aa499;--t-green:#0f6b5a;--t-green-dark:#0a5043;--t-green-soft:#e7f2ec;--t-lime:#c9f169;--t-lime-bright:#d8ff76;--t-lime-soft:#f0fad7;--t-coral:#ef7a59;--t-coral-soft:#fdeee8;--t-sky:#4c8fce;--t-sky-soft:#e9f2fb;--t-violet:#8574d9;--t-violet-soft:#f0edfc;--t-sand:#d9b166;--t-sand-soft:#fbf3df;--t-sidebar:#0b1e19;--t-sidebar-soft:#17352d;--t-radius:18px;--t-radius-sm:12px;--t-shadow-sm:0 1px 2px #0d1f1b0a, 0 6px 16px #0d1f1b09;--t-shadow:0 18px 50px #0d1f1b17;--t-shadow-lg:0 30px 80px #0d1f1b29;--t-font:"Avenir Next", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--t-mono:"SFMono-Regular", "JetBrains Mono", "Cascadia Code", Menlo, Consolas, monospace}.teach-app{min-height:100vh;color:var(--t-ink);background:var(--t-bg);font-family:var(--t-font);font-feature-settings:"ss01" on, "cv01" on;display:flex}.teach-sidebar{z-index:60;color:#dce8e2;background:radial-gradient(120% 70% at 0% 0%, #c9f16914, transparent 50%), radial-gradient(100% 60% at 100% 100%, #4c8fce14, transparent 55%), var(--t-sidebar);flex-direction:column;width:252px;padding:24px 16px 16px;display:flex;position:fixed;inset:0 auto 0 0;overflow-y:auto}.teach-sidebar::-webkit-scrollbar{width:4px}.teach-sidebar::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:99px}.teach-stage{flex-direction:column;flex:1;min-width:0;margin-left:252px;display:flex}.teach-main{width:100%;max-width:1460px;margin:0 auto;padding:30px 34px 72px}.teach-scrim{z-index:55;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#06100d73;position:fixed;inset:0}.teach-brand{justify-content:space-between;align-items:center;display:flex}.teach-brand-link{color:#f4f8f5;align-items:center;gap:11px;display:inline-flex}.teach-brand-link:hover{text-decoration:none}.teach-logo{width:42px;height:42px;color:var(--t-ink);background:var(--t-lime);font-family:var(--t-mono);border-radius:12px;flex:none;justify-content:center;align-items:center;gap:1px;font-size:13px;font-weight:800;display:inline-flex;box-shadow:0 10px 24px #c9f1692e}.teach-logo-slash{transform:skew(-9deg)}.teach-brand-text{flex-direction:column;line-height:1.2;display:flex}.teach-brand-text strong{letter-spacing:0;white-space:nowrap;letter-spacing:.02em;font-size:16px}.teach-brand-text small{font-family:var(--t-mono);letter-spacing:.16em;color:#7f9b90;margin-top:3px;font-size:8px}.sidebar-close{color:#a8bdb5;cursor:pointer;background:#ffffff0f;border:1px solid #ffffff14;border-radius:9px;justify-content:center;align-items:center;width:32px;height:32px;display:none}.role-switch{background:#ffffff0e;border:1px solid #ffffff13;border-radius:12px;grid-template-columns:1fr 1fr;margin-top:26px;padding:4px;display:grid;position:relative}.role-switch button{z-index:2;color:#91a79f;cursor:pointer;background:0 0;border:0;border-radius:9px;height:32px;font-family:inherit;font-size:12px;font-weight:600;transition:color .2s;position:relative}.role-switch button.active{color:#10221c}.role-switch-thumb{background:var(--t-lime);border-radius:9px;width:calc(50% - 4px);height:calc(100% - 8px);transition:transform .28s cubic-bezier(.22,1,.36,1);position:absolute;top:4px;left:4px;box-shadow:0 4px 14px #c9f1692e}.role-switch-thumb.is-student{transform:translate(100%)}.teach-nav{flex-direction:column;gap:24px;margin-top:26px;display:flex}.teach-nav-label{font-family:var(--t-mono);letter-spacing:.13em;color:#5d786d;text-transform:uppercase;margin:0 0 8px 10px;font-size:9px}.teach-nav-item{color:#a6bbb2;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:11px;align-items:center;gap:11px;width:100%;height:41px;padding:0 11px;font-family:inherit;font-size:13px;transition:color .16s,background .16s,transform .16s;display:flex;position:relative}.teach-nav-item+.teach-nav-item{margin-top:3px}.teach-nav-item:hover{color:#f0f6f2;background:#ffffff0d}.teach-nav-item.active{color:#10221c;background:var(--t-lime);font-weight:600;box-shadow:0 8px 22px #c9f16921}.teach-nav-icon{color:#7d998d;justify-content:center;width:20px;transition:color .16s;display:inline-flex}.teach-nav-item.active .teach-nav-icon{color:#173329}.teach-nav-badge{color:#c3d4cd;min-width:20px;height:18px;font-family:var(--t-mono);background:#ffffff17;border-radius:99px;justify-content:center;align-items:center;margin-left:auto;padding:0 6px;font-size:9px;display:inline-flex}.teach-nav-item.active .teach-nav-badge{color:#173329;background:#10221c1f}.teach-sidebar-foot{margin-top:auto;padding-top:22px}.sidebar-tip{background:#ffffff09;border:1px solid #fff1;border-radius:12px;gap:9px;padding:12px;display:flex}.sidebar-tip-icon{width:27px;height:27px;color:var(--t-lime);background:#c9f16921;border-radius:8px;flex:none;justify-content:center;align-items:center;display:inline-flex}.sidebar-tip strong{color:#c8d8d1;margin-bottom:4px;font-size:10px;display:block}.sidebar-tip p{color:#718c80;margin:0;font-size:10px;line-height:1.65}.sidebar-profile{border-top:1px solid #ffffff14;align-items:center;gap:10px;margin-top:15px;padding-top:15px;display:flex}.sidebar-profile-text{flex-direction:column;min-width:0;display:flex}.sidebar-profile-text strong{color:#e7f0eb;font-size:12px}.sidebar-profile-text small{color:#728d81;white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:9px;overflow:hidden}.sidebar-switch{color:#839c91;cursor:pointer;background:0 0;border:0;border-radius:8px;justify-content:center;align-items:center;width:28px;height:28px;margin-left:auto;display:inline-flex}.sidebar-switch:hover{color:var(--t-lime);background:#ffffff0f}.teach-topbar{z-index:40;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#f3f5eed6;border-bottom:1px solid #d2dbcfbf;align-items:center;gap:24px;height:70px;padding:0 34px;display:flex;position:sticky;top:0}.teach-topbar-left{align-items:center;gap:14px;min-width:190px;display:flex}.teach-menu-btn{width:36px;height:36px;color:var(--t-ink);background:var(--t-surface);border:1px solid var(--t-border);cursor:pointer;border-radius:10px;justify-content:center;align-items:center;display:none}.teach-crumb{color:var(--t-faint);align-items:center;gap:7px;font-size:12px;display:flex}.teach-crumb svg{color:#b5bfb4;transform:rotate(-90deg)}.teach-crumb strong{color:var(--t-ink);font-weight:600}.teach-topbar-center{flex:1;justify-content:center;display:flex}.teach-search{border:1px solid var(--t-border);color:#9aa499;background:#fffc;border-radius:10px;align-items:center;gap:9px;width:min(360px,100%);height:38px;padding:0 11px;transition:border-color .18s,box-shadow .18s,background .18s;display:flex}.teach-search.focused{background:var(--t-surface);border-color:#a9c7b8;box-shadow:0 0 0 3px #0f6b5a12}.teach-search input{min-width:0;color:var(--t-ink);background:0 0;border:0;outline:0;flex:1;font-family:inherit;font-size:12px}.teach-search input::placeholder{color:#9ca69a}.teach-search kbd{color:#9ba59a;font-family:var(--t-mono);white-space:nowrap;background:#f8faf5;border:1px solid #e4e8e0;border-radius:5px;padding:2px 5px;font-size:8px}.teach-topbar-actions{justify-content:flex-end;align-items:center;gap:10px;min-width:190px;display:flex}.teach-icon-button{color:#58655c;border:1px solid var(--t-border);cursor:pointer;background:#ffffffb8;border-radius:10px;justify-content:center;align-items:center;width:37px;height:37px;transition:background .16s,transform .16s;display:inline-flex;position:relative}.teach-icon-button:hover{background:var(--t-surface);transform:translateY(-1px)}.notify-dot{background:var(--t-coral);border-radius:50%;width:6px;height:6px;position:absolute;top:9px;right:9px;box-shadow:0 0 0 2px #f7f9f3}.teach-persona{cursor:pointer;background:0 0;border:1px solid #0000;border-radius:10px;align-items:center;gap:8px;padding:3px 7px 3px 3px;font-family:inherit;display:flex}.teach-persona:hover{border-color:var(--t-border);background:#ffffffa3}.teach-persona-text{flex-direction:column;align-items:flex-start;line-height:1.25;display:flex}.teach-persona-text strong{color:var(--t-ink);font-size:11px}.teach-persona-text small{color:var(--t-faint);font-size:9px}.teach-page{animation:.38s cubic-bezier(.22,1,.36,1) both teach-fade-up}@keyframes teach-fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.page-heading{justify-content:space-between;align-items:flex-end;gap:28px;margin-bottom:26px;display:flex}.heading-eyebrow{font-family:var(--t-mono);letter-spacing:.13em;color:var(--t-green);text-transform:uppercase;align-items:center;gap:7px;margin:0 0 9px;font-size:9px;display:flex}.live-dot{background:var(--t-green);border-radius:50%;width:6px;height:6px;box-shadow:0 0 0 3px #0f6b5a1a}.page-heading h1{letter-spacing:-.045em;margin:0;font-size:30px;font-weight:700;line-height:1.18}.heading-sub{color:var(--t-muted);margin:9px 0 0;font-size:13px;line-height:1.65}.page-actions{flex:none;align-items:center;gap:9px;padding-bottom:2px;display:flex}.btn-primary,.btn-secondary{white-space:nowrap;cursor:pointer;border-radius:11px;justify-content:center;align-items:center;gap:7px;height:40px;padding:0 15px;font-family:inherit;font-size:12px;font-weight:600;transition:transform .16s,box-shadow .16s,background .16s;display:inline-flex}.btn-primary{color:#f5fbf7;background:var(--t-ink);border:1px solid var(--t-ink);box-shadow:0 8px 20px #0d1f1b24}.btn-primary:hover{background:#173a31;transform:translateY(-1px);box-shadow:0 11px 24px #0d1f1b30}.btn-secondary{color:#38463d;border:1px solid var(--t-border);background:#ffffffb8}.btn-secondary:hover{background:var(--t-surface);transform:translateY(-1px)}.btn-primary.small,.btn-secondary.small{border-radius:9px;height:34px;padding:0 12px;font-size:11px}.text-link{color:var(--t-green);white-space:nowrap;align-items:center;gap:4px;font-size:11px;font-weight:600;display:inline-flex}.text-link:hover{color:var(--t-green-dark);text-decoration:none}.panel{border-radius:var(--t-radius);background:var(--t-surface);border:1px solid var(--t-border);box-shadow:var(--t-shadow-sm);padding:22px}.panel-head{justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:18px;display:flex}.panel-head.compact{align-items:center;margin-bottom:15px}.panel-head h2{letter-spacing:-.02em;margin:0;font-size:16px;line-height:1.3}.panel-eyebrow{font-family:var(--t-mono);letter-spacing:.14em;color:#9ba79a;text-transform:uppercase;margin:0 0 5px;font-size:8px;line-height:1.4}.section-desc{color:var(--t-muted);margin:6px 0 0;font-size:11px;line-height:1.6}.soft-tag{color:#6f7c71;white-space:nowrap;background:#f2f5ee;border-radius:6px;align-items:center;height:23px;padding:0 8px;font-size:9px;font-weight:500;display:inline-flex}.class-pill{background:var(--t-lime-soft);color:#426b11;white-space:nowrap;border-radius:6px;align-items:center;height:24px;padding:0 9px;font-size:10px;font-weight:600;display:inline-flex}.status-pill{white-space:nowrap;border-radius:99px;align-items:center;gap:5px;height:23px;padding:0 8px;font-size:9px;font-weight:500;display:inline-flex}.status-pill i{border-radius:50%;width:5px;height:5px}.status-pill.present{color:#226a42;background:#e8f6ed}.status-pill.present i{background:#2f9b5d}.status-pill.leave{color:#9a6c24;background:#fbf1dc}.status-pill.leave i{background:#d5a143}.t-icon-btn{color:#58655c;background:var(--t-surface);border:1px solid var(--t-border);cursor:pointer;border-radius:9px;justify-content:center;align-items:center;width:34px;height:34px;transition:background .15s;display:inline-flex}.t-icon-btn:hover{background:var(--t-surface-soft)}.progress-track{background:#edf1e9;border-radius:99px;height:6px;overflow:hidden}.progress-track>span{border-radius:inherit;height:100%;transition:width .6s cubic-bezier(.22,1,.36,1);display:block}.fill-lime{background:linear-gradient(90deg,#a5d83f,#c9f169)}.fill-sky{background:linear-gradient(90deg,#6ca9dd,#a4ccf0)}.fill-coral{background:linear-gradient(90deg,#eb6a47,#f4a58d)}.fill-violet{background:linear-gradient(90deg,#7d6ad2,#b2a6ec)}.fill-sand{background:linear-gradient(90deg,#d1a54f,#edd39c)}.tone-lime{background:var(--t-lime-soft);color:#4a7313}.tone-sky{background:var(--t-sky-soft);color:#2d659c}.tone-coral{background:var(--t-coral-soft);color:#ae4d32}.tone-violet{background:var(--t-violet-soft);color:#5b4ab0}.tone-sand{background:var(--t-sand-soft);color:#8d6726}.summary-icon{border-radius:10px;flex:none;justify-content:center;align-items:center;width:36px;height:36px;display:inline-flex}.t-avatar{letter-spacing:-.02em;border-radius:50%;flex:none;justify-content:center;align-items:center;font-weight:700;display:inline-flex;position:relative;box-shadow:inset 0 0 0 1px #0d1f1b0b}.t-avatar.tone-0{color:#3e5e17;background:#dcecb9}.t-avatar.tone-1{color:#2c5878;background:#d3e6f5}.t-avatar.tone-2{color:#8c4732;background:#f6d8cd}.t-avatar.tone-3{color:#57489c;background:#dfd9f6}.t-avatar.tone-4{color:#7b5a22;background:#f1e2bf}.t-avatar.tone-5{color:#2f685a;background:#d5ebe3}.t-avatar-status{background:#47a96e;border:2px solid #fff;border-radius:50%;width:9px;height:9px;position:absolute;bottom:0;right:0}.t-avatar-status.leave{background:#d5a143}.t-field{flex-direction:column;gap:7px;display:flex}.t-field>span{color:#56645a;font-size:11px;font-weight:600}.t-field>span em{color:var(--t-coral);font-style:normal}.t-input{width:100%;min-height:40px;color:var(--t-ink);border:1px solid var(--t-border);background:#fff;border-radius:9px;outline:0;padding:9px 12px;font-family:inherit;font-size:12px;transition:border-color .16s,box-shadow .16s}.t-input:focus{border-color:#8fb9a7;box-shadow:0 0 0 3px #0f6b5a12}.t-input::placeholder{color:#a9b2a7}.t-textarea{resize:vertical;min-height:76px;line-height:1.7}.t-select{appearance:none;cursor:pointer;padding-right:30px}.form-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.span-2{grid-column:span 2}.form-error{color:#a33b21;background:#fdf0eb;border-radius:8px;margin:0;padding:8px 10px;font-size:11px}.number-stepper{border:1px solid var(--t-border);border-radius:9px;align-items:stretch;height:40px;display:flex;overflow:hidden}.number-stepper button{color:#647167;cursor:pointer;background:#f7f9f3;border:0;width:38px;font-size:16px}.number-stepper button:hover{color:var(--t-ink);background:#eef3e8}.number-stepper input{text-align:center;min-width:0;color:var(--t-ink);-moz-appearance:textfield;border:0;outline:0;flex:1;font-family:inherit;font-size:12px}.number-stepper input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.number-stepper input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.select-wrap{color:#68756b;align-items:center;gap:6px;display:inline-flex;position:relative}.select-wrap>svg:first-child{pointer-events:none;position:absolute;left:10px}.select-wrap>svg:first-child+.compact-select{padding-left:32px}.select-wrap>svg:last-child{pointer-events:none;color:#8d988d;position:absolute;right:9px}.compact-select{background:#ffffffc7;width:auto;min-width:132px;height:36px;min-height:36px;padding-top:0;padding-bottom:0;font-size:11px}.select-wrap.small .compact-select{min-width:110px;height:32px;font-size:10px}.select-wrap.small>svg:last-child{right:8px}.inline-search{border:1px solid var(--t-border);color:#9aa499;background:#fff;border-radius:9px;align-items:center;gap:7px;height:34px;padding:0 10px;display:inline-flex}.inline-search input{width:130px;color:var(--t-ink);background:0 0;border:0;outline:0;font-family:inherit;font-size:11px}.inline-search input::placeholder{color:#a8b1a6}.toolbar-row{justify-content:space-between;align-items:center;gap:20px;margin:22px 0 18px;display:flex}.filter-tabs{background:#e9eee4;border-radius:10px;align-items:center;gap:4px;padding:4px;display:flex}.filter-tabs button{color:#6d796f;white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:7px;align-items:center;gap:6px;height:30px;padding:0 12px;font-family:inherit;font-size:11px;font-weight:500;transition:background .15s,color .15s,box-shadow .15s;display:inline-flex}.filter-tabs button:hover{color:var(--t-ink)}.filter-tabs button.active{color:var(--t-ink);background:#fff;font-weight:600;box-shadow:0 1px 4px #0d1f1b14}.tab-count{background:#eef1ea;border-radius:99px;justify-content:center;align-items:center;min-width:17px;height:16px;padding:0 4px;font-size:8px;display:inline-flex}.filter-tabs button.active .tab-count{background:var(--t-lime-soft);color:#466d13}.empty-panel{text-align:center;background:var(--t-surface);border:1px dashed var(--t-border-strong);border-radius:var(--t-radius);flex-direction:column;align-items:center;margin-top:18px;padding:64px 28px;display:flex}.empty-panel-icon{background:var(--t-surface-soft);color:#8a978b;border-radius:18px;justify-content:center;align-items:center;width:62px;height:62px;display:inline-flex}.empty-panel h3{margin:16px 0 5px;font-size:15px}.empty-panel p{color:var(--t-muted);margin:0 0 18px;font-size:11px}.t-modal-layer{z-index:200;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#08131085;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.t-modal-card{width:100%;max-height:min(90vh,900px);box-shadow:var(--t-shadow-lg);background:#fff;border:1px solid #fff9;border-radius:22px;flex-direction:column;display:flex;overflow:hidden}.t-modal-head{justify-content:space-between;align-items:flex-start;gap:20px;padding:24px 26px 16px;display:flex}.t-modal-eyebrow{font-family:var(--t-mono);letter-spacing:.15em;color:var(--t-green);margin:0 0 5px;font-size:8px}.t-modal-head h2{letter-spacing:-.03em;margin:0;font-size:21px;line-height:1.3}.t-modal-close{background:#f5f7f2;border-color:#0000}.t-modal-body{flex:1;padding:8px 26px 24px;overflow-y:auto}.t-modal-foot{background:#fbfcf8;border-top:1px solid #eef1ea;justify-content:flex-end;align-items:center;gap:9px;padding:16px 26px;display:flex}.t-modal-enter-active,.t-modal-leave-active{transition:opacity .2s}.t-modal-enter-active .t-modal-card,.t-modal-leave-active .t-modal-card{transition:transform .25s cubic-bezier(.22,1,.36,1),opacity .2s}.t-modal-enter-from,.t-modal-leave-to{opacity:0}.t-modal-enter-from .t-modal-card,.t-modal-leave-to .t-modal-card{opacity:0;transform:translateY(16px)scale(.97)}.t-toast-stack{z-index:300;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:24px;right:24px}.t-toast{color:#edf5ef;background:#0d211b;border-radius:11px;align-items:center;gap:9px;min-width:250px;max-width:380px;padding:11px 13px;font-size:11px;line-height:1.5;display:flex;box-shadow:0 16px 44px #08141042}.t-toast-icon{background:var(--t-lime);color:#163226;border-radius:50%;flex:none;justify-content:center;align-items:center;width:22px;height:22px;display:inline-flex}.t-toast.tone-error .t-toast-icon{color:#63210f;background:#f4a58d}.t-toast.tone-info .t-toast-icon{color:#17374f;background:#a9cceb}.t-toast-enter-active,.t-toast-leave-active{transition:all .25s cubic-bezier(.22,1,.36,1)}.t-toast-enter-from,.t-toast-leave-to{opacity:0;transform:translateY(8px)}.teach-page-enter-active,.teach-page-leave-active{transition:opacity .18s,transform .22s}.teach-page-enter-from{opacity:0;transform:translateY(6px)}.teach-page-leave-to{opacity:0;transform:translateY(-3px)}.data-table{border-top:1px solid #eef1ea}.data-table-head,.data-table-row{text-align:left;align-items:center;gap:12px;width:100%;display:grid}.data-table-head{color:#95a094;border-bottom:1px solid #eef1ea;min-height:38px;padding:0 8px;font-size:9px;font-weight:500}.data-table-row{color:#4c5a50;cursor:pointer;background:0 0;border:0;border-bottom:1px solid #f1f4ed;min-height:56px;padding:0 8px;font-family:inherit;font-size:11px;transition:background .14s}.data-table-row:hover{background:#fafbf7}.data-table-row:last-child{border-bottom:0}.student-cell{align-items:center;gap:9px;min-width:0;display:flex}.student-cell>span:last-child{flex-direction:column;min-width:0;display:flex}.student-cell strong{color:var(--t-ink);font-size:11px;font-weight:600}.student-cell small{color:#9ba499;font-family:var(--t-mono);margin-top:2px;font-size:8px}.progress-cell{align-items:center;gap:7px;display:flex}.progress-cell .progress-track{flex:none;width:54px}.progress-cell b{color:#5b685e;font-family:var(--t-mono);font-size:9px}.points-cell{color:#52664f;font-family:var(--t-mono);font-weight:600}.muted{color:#98a297}.row-arrow{color:#b1bbb0}.table-footer{color:#8f9a8f;border-top:1px solid #eef1ea;justify-content:space-between;align-items:center;gap:16px;padding:15px 8px 0;font-size:10px;display:flex}.pagination{align-items:center;gap:4px;display:flex}.pagination button{color:#67746a;border:1px solid var(--t-border);cursor:pointer;background:#fff;border-radius:7px;justify-content:center;align-items:center;min-width:27px;height:27px;padding:0 6px;font-family:inherit;font-size:10px;display:inline-flex}.pagination button:hover:not(:disabled){background:var(--t-surface-soft)}.pagination button.active{color:#fff;background:var(--t-ink);border-color:var(--t-ink)}.pagination button:disabled{opacity:.4;cursor:not-allowed}.status-dot-label{white-space:nowrap;align-items:center;gap:5px;font-size:9px;display:inline-flex}.status-dot-label i{border-radius:50%;width:5px;height:5px}.status-dot-label.excellent{color:#337657}.status-dot-label.excellent i{background:#3d9b6c}.status-dot-label.good{color:#5d7d31}.status-dot-label.good i{background:#92bf49}.status-dot-label.steady{color:#947028}.status-dot-label.steady i{background:#d5a143}.status-dot-label.watch{color:#a0553d}.status-dot-label.watch i{background:#e47e5d}@media (width<=1220px){.teach-main{padding-left:26px;padding-right:26px}.teach-topbar{padding:0 26px}.teach-topbar-left,.teach-topbar-actions{min-width:auto}}@media (width<=1120px){.teach-sidebar{transition:transform .3s cubic-bezier(.22,1,.36,1);transform:translate(-100%)}.teach-sidebar.is-open{transform:translate(0);box-shadow:0 0 80px #00000059}.sidebar-close{display:inline-flex}.teach-stage{margin-left:0}.teach-menu-btn{display:inline-flex}.teach-topbar-left{min-width:0}}@media (width<=760px){.teach-topbar{gap:12px;height:62px;padding:0 16px}.teach-topbar-center,.teach-crumb>span,.teach-crumb>svg{display:none}.teach-crumb strong{font-size:12px}.teach-persona-text,.teach-persona>svg{display:none}.teach-main{padding:22px 16px 56px}.page-heading{flex-direction:column;align-items:flex-start;gap:16px;margin-bottom:22px}.page-heading h1{font-size:26px}.page-actions{flex-wrap:wrap;width:100%}.toolbar-row{flex-direction:column;align-items:stretch;gap:10px}.filter-tabs{overflow-x:auto}.inline-search,.inline-search input{width:100%}.form-grid{grid-template-columns:1fr}.span-2{grid-column:span 1}.t-modal-layer{align-items:flex-end;padding:12px}.t-modal-card{border-radius:18px;max-height:92vh}.t-modal-head{padding:20px 20px 12px}.t-modal-body{padding:6px 20px 20px}.t-modal-foot{padding:13px 20px}.t-toast-stack{bottom:16px;left:16px;right:16px}.t-toast{min-width:0;max-width:none}.table-footer{flex-direction:column;align-items:flex-start}}.visibility-options{grid-template-columns:1fr 1fr;gap:9px;display:grid}.visibility-option{border:1px solid var(--t-border);color:#6e7b70;text-align:left;cursor:pointer;background:#fbfcf8;border-radius:10px;align-items:flex-start;gap:9px;padding:11px;font-family:inherit;transition:border-color .15s,background .15s,box-shadow .15s;display:flex;position:relative}.visibility-option:hover{background:#f7faf3;border-color:#cdd8c8}.visibility-option.active{background:#f6fbe9;border-color:#a9cd63;box-shadow:inset 0 0 0 1px #a9cd63}.visibility-icon{color:#66804d;background:#eef5e2;border-radius:8px;flex:none;justify-content:center;align-items:center;width:33px;height:33px;display:inline-flex}.visibility-option:nth-child(2) .visibility-icon{color:#7c6a42;background:#f8f1df}.visibility-option>span:nth-child(2){flex-direction:column;min-width:0;padding-right:12px;display:flex}.visibility-option strong{color:#4c5b4f;font-size:10px;font-weight:600}.visibility-option small{color:#94a093;margin-top:2px;font-size:8px;line-height:1.5}.radio-dot{background:#fff;border:1px solid #ccd7c8;border-radius:50%;flex:none;width:14px;height:14px;margin-top:2px}.visibility-option.active .radio-dot{border:4px solid var(--t-green)}.tone-picker{flex-wrap:wrap;align-items:center;gap:7px;display:flex}.tone-swatch{border:1px solid var(--t-border);color:#6d7a6f;cursor:pointer;background:#fbfcf8;border-radius:8px;align-items:center;gap:6px;height:34px;padding:0 10px 0 6px;font-family:inherit;font-size:9px;transition:border-color .15s,background .15s;display:inline-flex}.tone-swatch>span{border:1px solid #0d1f1b0f;border-radius:5px;width:20px;height:20px}.swatch-lime>span{background:#cfee86}.swatch-sky>span{background:#c9e0f5}.swatch-coral>span{background:#f8cbb9}.swatch-violet>span{background:#dbd2f7}.tone-swatch.active{color:#46601f;background:#f5fae9;border-color:#a9cd63;box-shadow:inset 0 0 0 1px #a9cd63}.tone-swatch.active svg{color:#63852c}@media (width<=560px){.visibility-options{grid-template-columns:1fr}}.manage-embed .card{border:1px solid var(--t-border);background:var(--t-surface);box-shadow:var(--t-shadow-sm);border-radius:18px;margin-top:18px;padding:22px}.manage-embed .card h3{color:var(--t-ink);margin:0 0 6px;font-size:17px}.manage-embed .card .card-sub{color:var(--t-muted);margin:0 0 18px;font-size:10px;line-height:1.7}.manage-embed .toolbar{flex-wrap:wrap;align-items:center;gap:8px;padding:12px 0;display:flex}.manage-embed .table-wrap{overflow-x:auto}.manage-embed table.data{border-collapse:collapse;width:100%;font-size:10px}.manage-embed table.data th{color:#879287;text-align:left;background:#f7f9f3;padding:9px 10px;font-size:8px;font-weight:500}.manage-embed table.data td{border-bottom:1px solid #f0f3ec;padding:10px}.manage-embed .btn{color:#f3f9f5;background:var(--t-ink);cursor:pointer;border:0;border-radius:8px;min-height:34px;padding:0 12px;font-family:inherit;font-size:9px}.manage-embed .btn-ghost{color:#607060;background:#f6f9f1;border:1px solid #e7ede1}.manage-embed .input,.manage-embed .input-sm,.manage-embed .select{border:1px solid var(--t-border);height:34px;color:var(--t-ink);background:#fff;border-radius:7px;padding:0 10px;font-family:inherit;font-size:9px}@media (width<=760px){.manage-embed .card{padding:14px}}.staff-tabs{border:1px solid var(--t-border);background:#f5f8f1;border-radius:9px;align-items:center;gap:3px;margin:2px 0 4px;padding:3px;display:inline-flex}.staff-tabs button{color:#7b877c;cursor:pointer;background:0 0;border:0;border-radius:7px;height:29px;padding:0 13px;font-family:inherit;font-size:9px}.staff-tabs button.active{color:var(--t-ink);background:#fff;font-weight:600;box-shadow:0 2px 8px #0d1f1b12}.teach-loading-state{min-height:50vh;color:var(--t-muted);flex-direction:column;justify-content:center;align-items:center;gap:12px;font-size:12px;display:flex}.teach-loading-state strong{color:var(--t-ink);font-size:14px}.teach-loading-state p{color:var(--t-coral);margin:0;font-size:11px}.teach-loading-spinner{border:2px solid var(--t-border);border-top-color:var(--t-green);border-radius:50%;width:26px;height:26px;animation:.8s linear infinite teach-spin}@keyframes teach-spin{to{transform:rotate(360deg)}}.dash-layout{grid-template-columns:minmax(0,1fr) 330px;align-items:start;gap:20px;display:grid}.dash-main,.dash-aside{flex-direction:column;gap:18px;min-width:0;display:flex}.next-class-card{color:#eff7f1;background:radial-gradient(95% 100% at 100% 10%,#c9f1692e,#0000 46%),radial-gradient(80% 100% at 0 110%,#4c8fce29,#0000 42%),#0c231d;border-radius:22px;align-items:stretch;gap:18px;min-height:266px;padding:26px 28px;display:flex;position:relative;overflow:hidden;box-shadow:0 20px 50px #091e182b}.next-class-glow{filter:blur(30px);pointer-events:none;background:#c9f1691f;border-radius:50%;width:280px;height:280px;position:absolute;top:-170px;left:32%}.next-class-copy{z-index:2;flex-direction:column;flex:1;min-width:0;display:flex;position:relative}.next-class-top{justify-content:space-between;align-items:center;gap:14px;display:flex}.next-class-label{font-family:var(--t-mono);letter-spacing:.14em;color:#b2c8bd;align-items:center;gap:7px;font-size:8px;display:inline-flex}.next-class-label i{background:var(--t-lime);border-radius:50%;width:6px;height:6px;box-shadow:0 0 0 3px #c9f16924}.next-class-time{color:var(--t-lime);font-family:var(--t-mono);letter-spacing:-.04em;align-items:baseline;gap:6px;font-size:24px;font-weight:700;display:flex}.next-class-time small{letter-spacing:.04em;color:#8ba99b;font-size:8px;font-weight:400}.next-class-class{color:#89a79a;align-items:center;gap:9px;margin-top:22px;font-size:10px;display:flex}.next-class-card .class-pill{color:#152b21;background:var(--t-lime)}.next-class-card h2{letter-spacing:-.035em;max-width:520px;margin:12px 0 7px;font-size:25px;line-height:1.3}.next-class-card p{color:#91aa9f;max-width:470px;margin:0;font-size:11px;line-height:1.7}.next-class-actions{gap:8px;margin-top:auto;padding-top:20px;display:flex}.hero-btn{color:#14261f;background:var(--t-lime);cursor:pointer;border:0;border-radius:9px;justify-content:center;align-items:center;gap:6px;height:37px;padding:0 14px;font-family:inherit;font-size:11px;font-weight:600;transition:transform .16s,box-shadow .16s,background .16s;display:inline-flex}.hero-btn:hover{background:var(--t-lime-bright);transform:translateY(-1px);box-shadow:0 8px 20px #c9f16929}.hero-btn.ghost{color:#d8e6de;background:#ffffff13;box-shadow:inset 0 0 0 1px #ffffff1c}.hero-btn.ghost:hover{background:#ffffff1f}.next-class-art{justify-content:flex-end;align-items:center;width:36%;min-width:220px;display:flex;position:relative;overflow:hidden}.next-class-art pre{z-index:2;color:#dbe9e1;font-family:var(--t-mono);white-space:pre-wrap;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffff0b;border:1px solid #ffffff17;border-radius:12px;margin:0;padding:15px 15px 14px;font-size:9px;line-height:1.9;position:relative;transform:rotate(-2deg);box-shadow:0 20px 40px #00000026}.next-class-art .code-dim{color:#6c8a7c}.next-class-art .code-key{color:var(--t-lime)}.next-class-art .code-num{color:#8ec5ef}.art-orbit{border:1px solid #c9f16929;border-radius:50%;width:210px;height:210px;position:absolute;top:-80px;right:-60px}.art-orbit.orbit-two{border-color:#c9f16914;width:300px;height:300px;top:-120px;right:-110px}.art-chip{z-index:3;color:#1f3428;background:var(--t-lime);border-radius:7px;align-items:center;gap:5px;padding:6px 9px;font-size:8px;font-weight:700;display:inline-flex;position:absolute;bottom:12px;right:12px}.mini-stat-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:11px;display:grid}.mini-stat{background:var(--t-surface);border:1px solid var(--t-border);box-shadow:var(--t-shadow-sm);border-radius:14px;align-items:flex-start;gap:10px;padding:15px 14px;display:flex}.mini-stat-icon{border-radius:9px;flex:none;justify-content:center;align-items:center;width:34px;height:34px;display:inline-flex}.mini-stat>div{flex-direction:column;min-width:0;display:flex}.mini-stat p{color:#889489;margin:0 0 3px;font-size:9px}.mini-stat strong{color:var(--t-ink);letter-spacing:-.04em;font-size:21px;line-height:1.15}.mini-stat strong small{color:#8b978c;letter-spacing:0;margin-left:2px;font-size:9px;font-weight:500}.stat-foot{color:#9aa49a;white-space:nowrap;margin-top:4px;font-size:8px}.stat-foot.positive{color:#4f8b62}.progress-panel{padding:22px}.class-progress-list{flex-direction:column;display:flex}.class-progress-row{border-top:1px solid #f0f3ec;align-items:center;gap:12px;padding:13px 0;display:flex}.class-progress-row:first-child{border-top:0;padding-top:4px}.class-monogram{letter-spacing:-.03em;border-radius:11px;flex:none;justify-content:center;align-items:center;width:40px;height:40px;font-size:10px;font-weight:700;display:inline-flex}.class-progress-main{flex:1;min-width:0}.class-progress-top{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.class-progress-top>div{align-items:baseline;gap:8px;min-width:0;display:flex}.class-progress-top strong{white-space:nowrap;font-size:11px}.class-progress-top span{color:#9aa49a;white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:9px;overflow:hidden}.class-progress-top b{color:#4e6254;font-family:var(--t-mono);font-size:10px}.class-progress-main .progress-track{height:5px;margin-top:8px}.class-progress-main p{color:#9ba59b;text-overflow:ellipsis;white-space:nowrap;margin:6px 0 0;font-size:9px;overflow:hidden}.progress-count{color:#5e6c61;font-family:var(--t-mono);text-align:right;flex:none;font-size:11px}.progress-count small{color:#a2aca1;font-family:var(--t-font);margin-top:2px;font-size:8px;display:block}.plaza-mini-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;display:grid}.plaza-mini{min-height:104px;color:var(--t-ink);background:#f8faf5;border:1px solid #edf1e9;border-radius:12px;flex-direction:column;padding:13px;transition:transform .16s,border-color .16s,box-shadow .16s;display:flex;position:relative;overflow:hidden}.plaza-mini:hover{border-color:#d9e2d3;text-decoration:none;transform:translateY(-2px);box-shadow:0 10px 24px #0d1f1b12}.plaza-mini:after{content:"";background:#ffffff8c;border-radius:50%;width:80px;height:80px;position:absolute;bottom:-28px;right:-24px}.plaza-mini.tone-lime{background:#f3fadf;border-color:#e3efc6}.plaza-mini.tone-coral{background:#fdf2ec;border-color:#f5e0d7}.plaza-mini.tone-violet{background:#f4f1fc;border-color:#e7e1f7}.plaza-mini-type{color:#8a958b;align-self:flex-start;font-size:8px;font-weight:600}.plaza-mini strong{z-index:1;letter-spacing:-.01em;margin-top:7px;font-size:11px;line-height:1.5;position:relative}.plaza-mini-foot{z-index:2;color:#89958a;justify-content:space-between;align-items:center;margin-top:auto;padding-top:12px;font-size:8px;display:flex;position:relative}.plaza-mini-foot span{align-items:center;gap:3px;display:inline-flex}.plaza-mini-foot span:first-child{color:#5f745c;font-weight:600}.week-count{color:var(--t-green);font-family:var(--t-mono);font-size:12px;font-weight:700}.week-rhythm{border-bottom:1px solid #eef2ea;justify-content:space-between;align-items:flex-end;gap:6px;height:120px;padding:8px 2px 0;display:flex}.rhythm-day{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:6px;height:100%;display:flex}.rhythm-bar{background:#e6ece2;border-radius:5px 5px 2px 2px;width:100%;max-width:22px;transition:background .2s}.rhythm-day.active .rhythm-bar{background:var(--t-lime)}.rhythm-day strong{color:#7c887d;font-size:9px;font-weight:500}.rhythm-day.active strong{color:var(--t-ink);font-weight:700}.rhythm-day small{color:#a8b1a7;font-family:var(--t-mono);font-size:7px}.week-summary{color:#7e8a7f;border-bottom:1px solid #f0f3ec;align-items:center;gap:16px;padding:12px 0;font-size:9px;display:flex}.week-summary span{align-items:center;gap:5px;display:inline-flex}.dot-done,.dot-todo,.dot-leave{border-radius:50%;width:6px;height:6px;display:inline-block}.dot-done{background:var(--t-green)}.dot-todo{background:#dbe3d6}.dot-leave{background:#d5a143}.today-list{padding-top:12px}.today-list-label{color:#8b978c;margin:0 0 10px;font-size:9px;font-weight:600}.today-lesson{grid-template-columns:34px 2px minmax(0,1fr);align-items:center;gap:8px;padding:5px 0;display:grid}.today-lesson .today-time{color:#647267;width:auto;font-family:var(--t-mono);font-size:9px;font-weight:600}.today-line{background:var(--t-lime);border-radius:9px;width:2px;height:24px}.today-lesson>div{flex-direction:column;min-width:0;display:flex}.today-lesson strong{white-space:nowrap;text-overflow:ellipsis;font-size:10px;font-weight:600;overflow:hidden}.today-lesson small{color:#9ca69b;margin-top:2px;font-size:8px}.rank-class{color:#52664f;background:#f4f7ef;border-radius:6px;align-items:center;height:22px;padding:0 8px;font-size:8px;font-weight:600;display:inline-flex}.leader-list{flex-direction:column;display:flex}.leader-row{border-top:1px solid #f2f5ef;align-items:center;gap:8px;padding:8px 0;display:flex}.leader-row:first-child{border-top:0}.leader-index{color:#a3ada2;width:18px;font-family:var(--t-mono);flex:none;font-size:8px}.leader-index.rank-1{color:#b8872c;font-weight:700}.leader-index.rank-2{color:#8792a0}.leader-index.rank-3{color:#b17950}.leader-name{flex-direction:column;flex:1;min-width:0;display:flex}.leader-name strong{font-size:10px;font-weight:600}.leader-name small{color:#a0aaa0;margin-top:1px;font-size:8px}.leader-points{color:#506451;font-family:var(--t-mono);font-size:10px;font-weight:600}.leader-points small{color:#a0aaa0;font-family:var(--t-font);margin-left:1px;font-size:7px;font-weight:400}.panel-bottom-link{color:var(--t-green);border-top:1px solid #f0f3ec;justify-content:center;align-items:center;gap:5px;margin-top:10px;padding-top:12px;font-size:9px;font-weight:600;display:flex}.panel-bottom-link:hover{color:var(--t-green-dark);text-decoration:none}.insight-card{border-radius:var(--t-radius);color:#e8f2ec;background:radial-gradient(120% 100% at 100% 0%, #c9f16926, transparent 55%), var(--t-ink);padding:20px;position:relative;overflow:hidden}.insight-card .panel-eyebrow{color:#7e9a8d}.insight-icon{color:#193025;background:var(--t-lime);border-radius:9px;justify-content:center;align-items:center;width:34px;height:34px;margin-bottom:14px;display:inline-flex}.insight-card h3{letter-spacing:-.02em;margin:0 0 9px;font-size:16px;line-height:1.45}.insight-card>p:not(.panel-eyebrow){color:#91aa9e;margin:0;font-size:10px;line-height:1.8}.insight-link{color:var(--t-lime);align-items:center;gap:4px;margin-top:15px;font-size:9px;font-weight:600;display:inline-flex}.insight-link:hover{color:var(--t-lime-bright);text-decoration:none}.student-dash-layout{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:20px;display:grid}.student-dash-main,.student-dash-side{flex-direction:column;gap:18px;min-width:0;display:flex}.student-today-card{color:#10241c;background:radial-gradient(80% 120% at 100% 0,#ffffff8c,#0000 45%),linear-gradient(118deg,#c9f169 0%,#dcfa8d 58%,#d0f374 100%);border-radius:22px;gap:16px;min-height:238px;padding:26px 28px;display:flex;position:relative;overflow:hidden;box-shadow:0 20px 48px #96c13929}.student-today-card:after{content:"";border:1px solid #10241c1f;border-radius:50%;width:260px;height:260px;position:absolute;bottom:-100px;right:-70px}.today-card-copy{z-index:2;flex-direction:column;flex:1;min-width:0;display:flex;position:relative}.today-card-top{justify-content:space-between;align-items:center;gap:12px;display:flex}.today-label{font-family:var(--t-mono);letter-spacing:.1em;color:#49672a;align-items:center;gap:6px;font-size:8px;display:inline-flex}.today-card-top .today-time{color:#1b3829;font-family:var(--t-mono);letter-spacing:-.04em;font-size:21px;font-weight:700}.today-card-top .today-time small{color:#5a7736;font-family:var(--t-font);margin-left:4px;font-size:8px;font-weight:500}.today-class-pill{color:#f2f8f3;background:#143128;border-radius:6px;align-self:flex-start;margin-top:18px;padding:5px 9px;font-size:9px;font-weight:600}.student-today-card h2{letter-spacing:-.045em;max-width:520px;margin:11px 0 6px;font-size:26px;line-height:1.28}.student-today-card p{color:#4b6732;margin:0;font-size:10px}.today-card-actions{gap:8px;margin-top:auto;padding-top:18px;display:flex}.dark-btn,.light-btn{cursor:pointer;border-radius:9px;justify-content:center;align-items:center;gap:6px;height:37px;padding:0 14px;font-family:inherit;font-size:11px;font-weight:600;display:inline-flex}.dark-btn{color:#f0f7f2;background:#10251c;border:1px solid #10251c}.dark-btn:hover{background:#1a3b2e}.light-btn{color:#2e4b21;background:#ffffff8a;border:1px solid #18302224}.light-btn:hover{background:#ffffffc7}.today-card-art{justify-content:flex-end;align-items:center;width:36%;min-width:220px;display:flex;position:relative}.turtle-spiral{width:250px;height:250px;position:absolute;top:-5px;right:-55px}.spiral-ring{border:1px solid #10241c33;border-radius:50%;position:absolute;inset:0}.spiral-ring.r2{border-color:#10241c24;inset:28px}.spiral-ring.r3{border-color:#10241c1f;inset:58px}.spiral-ring.r4{border-color:#10241c1a;inset:88px}.spiral-dot{background:#15392a;border-radius:50%;width:13px;height:13px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.today-card-art pre{z-index:2;color:#eff7e0;font-family:var(--t-mono);background:#143128;border-radius:10px;margin:0;padding:12px 14px;font-size:8.5px;line-height:1.9;position:relative;transform:rotate(3deg);box-shadow:0 16px 36px #203c1633}.today-card-art pre span{color:var(--t-lime)}.today-art-label{z-index:3;color:#426125;font-family:var(--t-mono);letter-spacing:.13em;font-size:7px;position:absolute;bottom:13px;right:16px}.student-stat-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:11px;display:grid}.student-stat-grid article{background:var(--t-surface);border:1px solid var(--t-border);box-shadow:var(--t-shadow-sm);border-radius:14px;align-items:flex-start;gap:9px;padding:14px 13px;display:flex;position:relative}.student-stat-icon{border-radius:9px;flex:none;justify-content:center;align-items:center;width:32px;height:32px;display:inline-flex}.student-stat-grid article>div{flex-direction:column;min-width:0;display:flex}.student-stat-grid article>div span{color:#8a958a;font-size:8px}.student-stat-grid article strong{letter-spacing:-.04em;margin-top:2px;font-size:20px;line-height:1.1}.student-stat-grid article strong small{color:#859187;letter-spacing:0;margin-left:2px;font-size:8px;font-weight:500}.student-stat-grid article em{color:#94a091;font-size:7px;font-style:normal;position:absolute;bottom:9px;right:10px}.continue-panel{align-items:stretch;gap:16px;padding:16px;display:flex}.continue-cover{color:#13251d;background:#d9f08a;border-radius:13px;flex-direction:column;flex:none;justify-content:space-between;width:150px;min-height:126px;padding:13px;display:flex;position:relative;overflow:hidden}.continue-cover-kicker{font-family:var(--t-mono);letter-spacing:.12em;color:#537231;font-size:7px}.continue-cover-icon{z-index:2;width:42px;height:42px;color:var(--t-lime);background:#153128;border-radius:11px;justify-content:center;align-items:center;display:inline-flex;position:relative}.continue-cover-title{z-index:2;font-size:11px;font-weight:700;line-height:1.4;position:relative}.continue-cover-grid{background-image:linear-gradient(#13251d0f 1px,#0000 1px),linear-gradient(90deg,#13251d0f 1px,#0000 1px);background-size:18px 18px;position:absolute;inset:0}.continue-copy{flex-direction:column;flex:1;justify-content:center;min-width:0;display:flex}.continue-kicker{color:var(--t-green);justify-content:space-between;align-items:center;gap:12px;font-size:9px;font-weight:600;display:flex}.continue-kicker b{color:#93a08f;font-family:var(--t-mono);font-size:8px;font-weight:500}.continue-copy h3{letter-spacing:-.02em;margin:6px 0 4px;font-size:14px}.continue-copy p{color:#8a958a;max-width:480px;margin:0;font-size:9px;line-height:1.65}.continue-progress{align-items:center;gap:10px;margin-top:11px;display:flex}.continue-progress .progress-track{flex:1;height:5px}.continue-progress>span{color:#9aa59a;font-family:var(--t-mono);white-space:nowrap;font-size:8px}.continue-btn{color:#10241c;background:var(--t-lime);cursor:pointer;border:0;border-radius:12px;flex:none;justify-content:center;align-items:center;width:48px;transition:background .16s,transform .16s;display:inline-flex}.continue-btn:hover{background:var(--t-lime-bright);transform:translate(2px)}.student-activity-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;display:grid}.student-activity{min-height:92px;color:var(--t-ink);background:#fafbf7;border:1px solid #edf1e9;border-radius:11px;flex-direction:column;padding:12px;transition:transform .16s,border-color .16s;display:flex}.student-activity:hover{border-color:#dce5d6;text-decoration:none;transform:translateY(-2px)}.student-activity.tone-lime{background:#f6fbe8}.student-activity.tone-coral{background:#fdf4ef}.student-activity.tone-violet{background:#f6f3fd}.student-activity-top{color:#8b968b;justify-content:space-between;align-items:center;gap:8px;font-size:8px;display:flex}.student-activity-top b{color:#5e7355;font-family:var(--t-mono);align-items:center;gap:2px;font-size:8px;display:inline-flex}.student-activity>strong{margin-top:7px;font-size:10px;line-height:1.45}.student-activity-foot{color:#9da79c;align-items:center;gap:3px;margin-top:auto;padding-top:8px;font-size:8px;display:inline-flex}.mini-seat-map{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.mini-seat-map span{color:#6f7c70;background:#f6f8f2;border:1px solid #eef2e9;border-radius:8px;justify-content:center;align-items:center;height:40px;font-size:10px;font-weight:600;display:flex}.mini-seat-map span.me{color:#163226;background:var(--t-lime);border-color:#b4dd55;box-shadow:0 5px 14px #b2d74c29}.mini-seat-foot{color:#c0c9bd;border-top:1px solid #f0f3ec;justify-content:space-between;align-items:center;gap:10px;margin-top:12px;padding-top:11px;display:flex}.mini-seat-foot>div{flex-direction:column;display:flex}.mini-seat-foot strong{color:var(--t-ink);font-size:11px}.mini-seat-foot span{color:#9aa59a;margin-top:2px;font-size:8px}.mall-preview-card{border-radius:var(--t-radius);color:#eef6f0;background:radial-gradient(90% 100% at 100% 0,#c9f1692b,#0000 56%),#0c231d;padding:18px;position:relative;overflow:hidden}.mall-preview-label{color:#8ea89b;font-family:var(--t-mono);letter-spacing:.12em;align-items:center;gap:5px;font-size:7px;display:inline-flex}.mall-preview-product{align-items:center;gap:9px;margin-top:13px;display:flex}.mall-preview-icon{color:#16291f;background:var(--t-lime);border-radius:11px;justify-content:center;align-items:center;width:42px;height:42px;display:inline-flex}.mall-preview-product>div{flex-direction:column;display:flex}.mall-preview-product strong{font-size:11px}.mall-preview-product span{color:#90a99c;margin-top:2px;font-size:8px}.mall-preview-progress{margin-top:13px}.mall-preview-progress .progress-track{background:#ffffff17;height:5px}.mall-preview-progress .progress-track span{background:var(--t-lime)}.mall-preview-progress p{color:#8ca498;margin:6px 0 0;font-size:8px}.mall-preview-progress b{color:var(--t-lime);font-family:var(--t-mono)}.mall-preview-link{color:var(--t-lime);border-top:1px solid #ffffff17;justify-content:space-between;align-items:center;margin-top:12px;padding-top:11px;font-size:9px;font-weight:600;display:flex}.mall-preview-link:hover{color:var(--t-lime-bright);text-decoration:none}.mini-rank-list{flex-direction:column;display:flex}.mini-rank-row{border-top:1px solid #f2f5ef;align-items:center;gap:8px;padding:7px 0;display:flex}.mini-rank-row:first-child{border-top:0}.mini-rank-row.me{background:#f5fae9;border:0;border-radius:8px;margin-top:4px;padding:8px}.mini-rank-index{color:#a2aca1;width:16px;font-family:var(--t-mono);font-size:8px}.mini-rank-row strong{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:10px;font-weight:500;overflow:hidden}.mini-rank-row strong i{color:#40620f;background:#dff3ad;border-radius:4px;margin-left:3px;padding:1px 4px;font-size:7px;font-style:normal}.mini-rank-row>span:last-child{color:#61705f;font-family:var(--t-mono);font-size:9px;font-weight:600}.student-quote-card{border-radius:var(--t-radius);color:#e7f1e9;background:radial-gradient(100% 100% at 0 0,#c9f16921,#0000 55%),#14382c;padding:26px 20px 20px;position:relative;overflow:hidden}.quote-mark{color:var(--t-lime);opacity:.8;font-family:Georgia,serif;font-size:46px;line-height:.7;display:block}.student-quote-card p{z-index:2;letter-spacing:-.02em;margin:8px 0 12px;font-size:16px;line-height:1.55;position:relative}.quote-foot{color:#87a294;font-size:8px}.quote-grid{background-image:linear-gradient(#ffffff0b 1px,#0000 1px),linear-gradient(90deg,#ffffff0b 1px,#0000 1px);background-size:14px 14px;width:120px;height:120px;position:absolute;bottom:-20px;right:-20px;transform:rotate(8deg)}@media (width<=1380px){.dash-layout{grid-template-columns:minmax(0,1fr) 300px}.student-dash-layout{grid-template-columns:minmax(0,1fr) 290px}.mini-stat-grid,.student-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=1060px){.dash-layout,.student-dash-layout{grid-template-columns:1fr}.dash-aside{grid-template-columns:1fr 1fr;align-items:start;display:grid}.insight-card{grid-column:span 2}.student-dash-side{grid-template-columns:1fr 1fr;align-items:start;display:grid}.student-quote-card{grid-column:span 2}}@media (width<=900px){.next-class-art,.today-card-art{display:none}.next-class-card,.student-today-card{min-height:230px}.next-class-card h2,.student-today-card h2{font-size:22px}.plaza-mini-grid,.student-activity-list{grid-template-columns:1fr}.plaza-mini{min-height:80px}}@media (width<=760px){.next-class-card,.student-today-card{border-radius:18px;padding:22px 20px}.next-class-time,.next-class-card h2,.student-today-card h2{font-size:21px}.next-class-class{flex-wrap:wrap;margin-top:17px}.mini-stat-grid,.student-stat-grid{grid-template-columns:1fr 1fr}.mini-stat{padding:13px 12px}.continue-panel{flex-direction:column}.continue-cover{width:100%;min-height:102px}.continue-cover-icon{position:absolute;top:12px;right:12px}.continue-btn{width:100%;height:40px}.dash-aside,.student-dash-side{align-items:stretch;display:flex}.insight-card,.student-quote-card{grid-column:auto}}.seat-summary-strip{background:var(--t-surface);border:1px solid var(--t-border);box-shadow:var(--t-shadow-sm);border-radius:15px;align-items:center;gap:0;margin-bottom:18px;padding:10px 8px;display:flex}.seat-summary-item{border-left:1px solid #eef2ea;flex:1;align-items:center;gap:9px;padding:3px 16px;display:flex}.seat-summary-item:first-child{border-left:0}.seat-summary-item>div{flex-direction:column;display:flex}.seat-summary-item small{color:#8e998e;font-size:8px}.seat-summary-item strong{letter-spacing:-.03em;margin-top:1px;font-size:16px;line-height:1.2}.seat-summary-item strong em{color:#9ba59b;font-family:var(--t-mono);font-size:8px;font-style:normal;font-weight:400}.seat-summary-note{color:#97a297;flex:none;align-items:center;gap:5px;margin-left:auto;padding:0 12px;font-size:8px;display:flex}.seat-layout{grid-template-columns:minmax(0,1fr) 310px;align-items:start;gap:18px;display:grid}.seat-board-card{background:var(--t-surface);border:1px solid var(--t-border);box-shadow:var(--t-shadow-sm);border-radius:20px;overflow:hidden}.seat-board-head{border-bottom:1px solid #eef2ea;justify-content:space-between;align-items:center;gap:15px;padding:16px 20px;display:flex}.seat-board-head>div{align-items:center;gap:8px;display:flex}.board-class-dot{background:currentColor;border-radius:50%;width:8px;height:8px}.seat-board-head strong{font-size:12px}.seat-board-head span{color:#9ba59b;font-size:9px}.board-status{color:#7c8a7e;align-items:center;gap:5px;font-size:8px;display:inline-flex}.board-status i{background:#4d9c69;border-radius:50%;width:5px;height:5px;box-shadow:0 0 0 3px #4d9c691a}.classroom-stage{background:radial-gradient(#0d1f1b12 .7px,#0000 .7px) 0 0/14px 14px,linear-gradient(#f6f8f1 0%,#f2f5ed 100%);padding:26px 28px 18px;position:relative}.blackboard{color:#e3eee7;background:linear-gradient(#ffffff0b,#0000),#193e33;border:5px solid #c4a87c;border-radius:7px;flex-direction:column;justify-content:center;align-items:center;width:min(62%,420px);height:96px;margin:0 auto;padding:14px 22px;display:flex;position:relative;overflow:hidden;box-shadow:0 12px 26px #21352329,inset 0 0 30px #0003}.blackboard:after{content:"";background:linear-gradient(110deg,#0000 30%,#ffffff0f 55%,#0000 70%);position:absolute;inset:0}.blackboard-kicker{font-family:var(--t-mono);letter-spacing:.15em;color:#7fa595;font-size:7px}.blackboard strong{letter-spacing:.04em;margin-top:4px;font-size:19px;font-weight:600}.blackboard small{color:#9cbaad;margin-top:3px;font-size:8px}.blackboard-code{color:#c9f1692e;font-family:var(--t-mono);font-size:23px;position:absolute;bottom:6px;right:12px}.podium{color:#8a978c;justify-content:center;align-items:center;gap:7px;margin:12px auto 18px;font-size:9px;display:flex}.podium span{background:#dce4d5;border:1px solid #ccd8c5;border-radius:2px 2px 5px 5px;width:42px;height:11px;box-shadow:0 3px #c7d2c0}.seat-rows{flex-direction:column;gap:9px;display:flex}.seat-row{align-items:stretch;gap:10px;display:flex}.seat-row-label{color:#9ba69b;width:30px;font-family:var(--t-mono);flex:none;justify-content:flex-end;align-items:center;font-size:7px;display:flex}.seat-row-cells{flex:1;gap:7px;display:flex}.seat-cell{-webkit-user-select:none;user-select:none;color:#516054;cursor:pointer;background:#ffffffeb;border:1px solid #e3e9dd;border-radius:10px;flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;gap:3px;width:auto;min-width:0;height:80px;padding:5px 3px;font-family:inherit;transition:transform .15s,border-color .15s,box-shadow .15s,background .15s;display:flex;position:relative}.seat-cell:hover{z-index:2;border-color:#b8cbb3;transform:translateY(-2px);box-shadow:0 8px 20px #0d1f1b14}.seat-cell[draggable=true]{cursor:grab}.seat-cell[draggable=true]:active{cursor:grabbing}.seat-cell.is-dragging{z-index:1;opacity:.34;box-shadow:none;border-style:dashed;transform:scale(.96)}.seat-cell.is-drop-target{z-index:3;background:#f7fce9;border-color:#91bf42;transform:translateY(-2px);box-shadow:0 0 0 2px #91bf4247,0 10px 24px #698f2b21}.seat-cell.is-empty.is-drop-target{background:#f5fae9;border-style:dashed;border-color:#a4cb58}.seat-cell.is-empty.is-drop-target .empty-plus{color:#729333}.seat-cell.is-empty.is-drop-target .seat-name{color:#77933e}.seat-drag-dots{opacity:0;pointer-events:none;background:#9baa9b;border-radius:50%;width:2px;height:2px;transition:opacity .15s;position:absolute;top:7px;left:7px;box-shadow:4px 0 #9baa9b,0 4px #9baa9b,4px 4px #9baa9b}.seat-cell:hover .seat-drag-dots,.seat-cell.is-selected .seat-drag-dots{opacity:.55}.seat-cell.is-selected{border-color:var(--t-green);background:#fbfdf6;box-shadow:0 0 0 2px #0f6b5a21,0 10px 22px #0f6b5a1a}.seat-cell.is-me{background:var(--t-lime);border-color:#a9d34c;box-shadow:0 8px 20px #a9d34c30}.seat-cell.is-empty{color:#aeb8ad;background:0 0;border-style:dashed;border-color:#d6dfd1;justify-content:center}.seat-cell.is-leave{opacity:.64}.seat-cell.is-me .seat-name{color:#183022;font-weight:700}.seat-cell.is-me .seat-meta{color:#4d6c2b}.seat-name{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:10px;font-weight:600;overflow:hidden}.seat-meta{color:#9ba69b;font-family:var(--t-mono);font-size:7px}.empty-plus{color:#c2ccc0;font-size:16px;line-height:1}.seat-cell.is-empty .seat-name{color:#b0bab0;font-size:8px;font-weight:400}.seat-badge{border-radius:50%;justify-content:center;align-items:center;width:14px;height:14px;font-size:7px;display:inline-flex;position:absolute;top:4px;right:4px}.seat-badge.late{color:#805b15;background:#f5dfaa}.seat-me-pin{color:#f7fff9;background:#153529;border-radius:50%;justify-content:center;align-items:center;width:15px;height:15px;display:inline-flex;position:absolute;top:4px;right:4px}.seat-aisle{flex:none;width:15px}.seat-legend{color:#8f9b90;border-top:1px solid #e2e9dc;align-items:center;gap:13px;margin-top:18px;padding-top:13px;font-size:8px;display:flex}.seat-legend span{align-items:center;gap:5px;display:inline-flex}.legend-dot{background:#dbe3d7;border-radius:2px;width:7px;height:7px}.legend-dot.me{background:var(--t-lime);border:1px solid #a9cf4b}.legend-dot.leave{background:#d5a143}.legend-dot.late{background:#e4b85f}.legend-dot.empty-seat{background:0 0;border:1px dashed #bdc8ba}.legend-hint{color:#aab3a9;margin-left:auto}.seat-empty-state{text-align:center;flex-direction:column;align-items:center;padding:54px 20px;display:flex}.empty-illustration{color:#9aa69b;background:#eef2e9;border-radius:18px;justify-content:center;align-items:center;width:68px;height:68px;display:inline-flex}.seat-empty-state h3{margin:14px 0 5px;font-size:14px}.seat-empty-state p{color:#8d998e;max-width:330px;margin:0 0 16px;font-size:10px;line-height:1.7}.seat-side{flex-direction:column;gap:16px;display:flex}.seat-detail-panel{padding:20px}.seat-person-head{align-items:center;gap:12px;display:flex}.seat-person-group{color:#7f8d81;margin-bottom:3px;font-size:8px;display:inline-flex}.seat-person-head h2{letter-spacing:-.03em;margin:0;font-size:18px;line-height:1.2}.seat-person-head p{color:#9aa59a;font-family:var(--t-mono);margin:3px 0 0;font-size:8px}.seat-person-metrics{grid-template-columns:repeat(3,1fr);gap:6px;margin:15px 0 12px;display:grid}.seat-person-metrics>div{background:#f7f9f3;border-radius:9px;flex-direction:column;padding:9px;display:flex}.seat-person-metrics span{color:#95a095;font-size:7px}.seat-person-metrics strong{letter-spacing:-.03em;margin-top:3px;font-size:14px;line-height:1.2}.seat-person-metrics strong small{color:#909b90;margin-left:1px;font-size:7px;font-weight:400}.seat-attendance-row{color:#7f8b80;border-top:1px solid #f0f3ec;border-bottom:1px solid #f0f3ec;justify-content:space-between;align-items:center;padding:9px 0;font-size:9px;display:flex}.seat-note{color:#657455;background:#f6fae9;border-radius:9px;gap:6px;margin-top:11px;padding:9px 10px;display:flex}.seat-note svg{color:#86a33e;flex:none;margin-top:1px}.seat-note p{margin:0;font-size:9px;line-height:1.65}.seat-person-actions{gap:7px;margin-top:13px;display:flex}.seat-person-actions>*{flex:1}.seat-detail-empty{text-align:center;color:#a3aea3;flex-direction:column;align-items:center;padding:24px 8px;display:flex}.seat-detail-empty h3{color:var(--t-ink);margin:10px 0 4px;font-size:13px}.seat-detail-empty p{color:#939e94;margin:0;font-size:9px;line-height:1.7}.seat-overview-panel{padding:18px 20px}.overview-ring-row{align-items:center;gap:18px;display:flex}.overview-ring{background:conic-gradient(var(--t-green) var(--ring), #edf2e8 0);border-radius:50%;flex:none;justify-content:center;align-items:center;width:82px;height:82px;display:flex;position:relative}.overview-ring:before{content:"";background:#fff;border-radius:50%;position:absolute;inset:7px}.overview-ring>span{z-index:1;flex-direction:column;align-items:center;display:flex;position:relative}.overview-ring strong{letter-spacing:-.04em;font-size:19px;line-height:1}.overview-ring strong small{font-size:8px;font-weight:500}.overview-ring>span>small{color:#9ba59b;margin-top:3px;font-size:7px}.overview-legend{flex-direction:column;gap:6px;display:flex}.overview-legend p{color:#7d897e;align-items:center;gap:6px;margin:0;font-size:9px;display:flex}.overview-groups{gap:5px;margin-top:14px;display:flex}.group-chip{color:#7b887d;text-align:center;background:#f7f9f3;border-radius:8px;flex:1;padding:7px 8px;font-size:8px}.group-chip b{color:#526050;font-family:var(--t-mono);margin-left:2px}.outline-wide-btn{border:1px solid var(--t-border);color:#556359;cursor:pointer;background:#fff;border-radius:9px;justify-content:center;align-items:center;gap:6px;width:100%;height:36px;margin-top:13px;font-family:inherit;font-size:10px;font-weight:500;display:flex}.outline-wide-btn:hover{background:var(--t-surface-soft);text-decoration:none}.seat-me-card{padding:20px}.seat-me-card h2{margin:0 0 13px;font-size:16px}.seat-me-visual{background:#f6fae9;border:1px solid #e7f0d3;border-radius:12px;align-items:center;gap:12px;padding:13px;display:flex}.seat-me-number{color:#173125;background:var(--t-lime);width:48px;height:48px;font-family:var(--t-mono);border-radius:11px;flex:none;justify-content:center;align-items:baseline;gap:2px;font-size:17px;font-weight:700;line-height:48px;display:flex}.seat-me-number span{color:#638138;font-size:9px}.seat-me-visual strong{font-size:11px}.seat-me-visual p{color:#8b978c;margin:3px 0 0;font-size:8px;line-height:1.5}.seat-me-meta{color:#95a095;border-top:1px solid #f0f3ec;flex-wrap:wrap;gap:8px 14px;margin-top:13px;padding-top:12px;font-size:8px;display:flex}.seat-me-meta b{color:#5e6c61;margin-left:3px;font-weight:600}@media (width<=1300px){.seat-layout{grid-template-columns:minmax(0,1fr) 286px}.classroom-stage{padding-left:20px;padding-right:20px}}@media (width<=1060px){.seat-layout{grid-template-columns:1fr}.seat-side{grid-template-columns:1fr 1fr;align-items:start;display:grid}.seat-me-card{grid-column:span 2}}@media (width<=820px){.seat-summary-strip{flex-wrap:wrap;gap:10px;padding:12px}.seat-summary-item{border-left:0;flex:40%;padding:3px 8px}.seat-summary-note{flex-basis:100%;margin-left:0;padding:2px 8px}.seat-board-card{overflow:hidden}.classroom-stage{padding:22px 14px 15px}.seat-rows{gap:7px}.seat-row{gap:6px}.seat-row-label{width:24px;font-size:6px}.seat-row-cells{gap:4px}.seat-cell{border-radius:8px;gap:2px;height:70px;padding:4px 2px;overflow:hidden}.seat-cell .t-avatar{width:30px!important;height:30px!important;font-size:11px!important}.seat-name{font-size:9px}.seat-meta{font-size:6px}.seat-aisle{width:10px}.seat-badge{width:12px;height:12px;font-size:6px;top:3px;right:3px}.seat-me-pin{width:13px;height:13px;top:3px;right:3px}.empty-plus{font-size:14px}.blackboard{width:min(72%,390px);height:86px;padding:10px 14px}.blackboard strong{font-size:17px}}@media (width<=760px){.seat-side{align-items:stretch;display:flex}.seat-me-card{grid-column:auto}.seat-legend{flex-wrap:wrap;gap:8px 12px}.legend-hint{width:100%;margin-left:0}}@media (width<=560px){.classroom-stage{padding:18px 8px 13px}.seat-rows{gap:6px}.seat-row{gap:4px}.seat-row-label{width:18px;font-size:5px}.seat-row-cells{gap:3px}.seat-cell{border-radius:7px;gap:1px;height:62px;padding:3px 1px}.seat-cell .t-avatar{width:25px!important;height:25px!important;font-size:9px!important}.seat-name{font-size:8px}.seat-meta{font-size:5.5px}.seat-aisle{width:7px}.seat-badge,.seat-me-pin{top:2px;right:2px}.blackboard{width:min(78%,360px);height:76px;padding:8px 12px}.blackboard strong{font-size:15px}.blackboard small{font-size:7px}.podium{margin:9px auto 12px}.seat-legend{gap:6px 10px;margin-top:12px;padding-top:10px;font-size:7px}}@media (width<=420px){.seat-row-label{display:none}.seat-cell{height:56px}.seat-cell .t-avatar{width:22px!important;height:22px!important;font-size:8px!important}.seat-name{font-size:7.5px}.seat-meta{display:none}.seat-aisle{width:5px}.empty-plus{font-size:12px}.seat-cell.is-empty .seat-name{font-size:7px}}.seat-points-editor{background:#fbfcf8;border:1px solid #edf1e9;border-radius:10px;margin-top:13px;padding:10px}.seat-points-head{color:#7c897d;justify-content:space-between;align-items:center;gap:8px;margin-bottom:7px;font-size:8px;display:flex}.seat-points-balance{color:#526c38;height:18px;font-family:var(--t-mono);background:#eff6e2;border-radius:4px;align-items:center;padding:0 6px;font-size:7px;display:inline-flex}.seat-points-row{grid-template-columns:29px minmax(0,1fr) 29px 56px;align-items:stretch;gap:5px;display:grid}.points-step{color:#647267;cursor:pointer;background:#fff;border:1px solid #e1e8dd;border-radius:7px;justify-content:center;align-items:center;height:32px;padding:0;font-family:inherit;font-size:16px;line-height:1;transition:background .15s,border-color .15s;display:inline-flex}.points-step:hover{color:var(--t-ink);background:#f6faf1;border-color:#c7d7bd}.points-input{background:#fff;border:1px solid #e1e8dd;border-radius:7px;align-items:center;min-width:0;display:flex;position:relative}.points-input:focus-within{border-color:#a6c38f;box-shadow:0 0 0 2px #0f6b5a0f}.points-input input{width:100%;min-width:0;height:30px;color:var(--t-ink);font-family:var(--t-mono);text-align:center;-moz-appearance:textfield;background:0 0;border:0;outline:0;padding:0 17px 0 6px;font-size:13px;font-weight:600}.points-input input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.points-input input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.points-input>span{color:#a1aba0;pointer-events:none;font-size:7px;position:absolute;right:6px}.points-apply{color:#f3f9f5;background:var(--t-ink);cursor:pointer;border:0;border-radius:7px;height:32px;padding:0 5px;font-family:inherit;font-size:9px;font-weight:600;transition:background .15s,opacity .15s}.points-apply:hover:not(:disabled){background:#1b3b30}.points-apply:disabled{opacity:.35;cursor:not-allowed}.seat-points-hint{color:#a1aba0;text-align:center;margin:6px 0 0;font-size:7px;line-height:1.4}.seat-profile-btn{gap:5px}@media (width<=360px){.seat-points-row{grid-template-columns:27px minmax(0,1fr) 27px 50px;gap:4px}.points-apply{font-size:8px}}@media (width>=1061px){.seat-detail-panel{z-index:10;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#dbe4d6 transparent;max-height:calc(100vh - 102px);position:sticky;top:86px;overflow-y:auto}.seat-detail-panel::-webkit-scrollbar{width:4px}.seat-detail-panel::-webkit-scrollbar-thumb{background:#dbe4d6;border-radius:99px}}.seat-mode-bar{border:1px solid var(--t-border);background:#ffffffa8;border-radius:12px;justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px;padding:6px 12px 6px 6px;display:flex}.seat-mode-tabs{background:#e9eee4;border-radius:9px;align-items:center;gap:4px;padding:4px;display:flex}.seat-mode-tabs button{color:#6f7c71;cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;gap:5px;height:30px;padding:0 11px;font-family:inherit;font-size:10px;font-weight:500;display:inline-flex}.seat-mode-tabs button.active{color:var(--t-ink);background:#fff;font-weight:600;box-shadow:0 1px 4px #0d1f1b14}.seat-mode-tabs button>span{color:#60704f;min-width:16px;height:15px;font-family:var(--t-mono);background:#eef5df;border-radius:99px;justify-content:center;align-items:center;padding:0 4px;font-size:7px;display:inline-flex}.seat-mode-current{color:#8f9b90;align-items:center;gap:6px;font-size:8px;display:flex}.seat-mode-current strong{color:#536253;font-size:9px;font-weight:600}.seat-mode-current>span:last-child{color:#a2aca1}.seat-board-head-right{align-items:center;gap:10px;display:flex}.board-template-chip{color:#5a6d50;white-space:nowrap;background:#f3f8e8;border:1px solid #e7efd8;border-radius:5px;align-items:center;gap:4px;height:22px;padding:0 7px;font-size:7px;display:inline-flex}.plan-mini-info{border-top:1px solid #f0f3ec;justify-content:space-between;align-items:flex-end;gap:8px;margin-top:12px;padding-top:11px;display:flex}.plan-mini-info>div{flex-direction:column;display:flex}.plan-mini-info span{color:#98a398;font-size:7px}.plan-mini-info strong{color:#4e5c52;margin-top:2px;font-size:10px}.plan-mini-info>span{font-family:var(--t-mono);white-space:nowrap}.t-seat-preview{--preview-seat:#10231c2b;border:1px solid #10231c0d;border-radius:9px;flex-direction:column;gap:3px;width:100%;padding:11px 10px 9px;display:flex}.t-seat-preview.tone-lime{background:linear-gradient(145deg,#eef8d9,#f7fbe9)}.t-seat-preview.tone-sky{background:linear-gradient(145deg,#e8f2fb,#f4f9fd)}.t-seat-preview.tone-coral{background:linear-gradient(145deg,#fceee8,#fdf6f2)}.t-seat-preview.tone-violet{background:linear-gradient(145deg,#f0edfc,#f8f6fd)}.t-seat-preview.tone-sand{background:linear-gradient(145deg,#fbf3df,#fdf9ee)}.tsp-board{background:#10231c52;border-radius:99px;width:52%;height:3px;margin:0 auto 4px}.tsp-row{gap:3px;width:100%;display:flex}.tsp-seat{background:var(--preview-seat);border-radius:2px;flex:1;height:9px}.tsp-seat.aisle{margin-right:7px}.tsp-seat.group-start{box-shadow:-2px 0 #10231c1f}.t-seat-preview.compact{gap:2px;padding:8px 7px 7px}.t-seat-preview.compact .tsp-board{height:2px;margin-bottom:3px}.t-seat-preview.compact .tsp-seat{height:6px}.template-overview-strip{background:var(--t-surface);border:1px solid var(--t-border);box-shadow:var(--t-shadow-sm);border-radius:14px;align-items:center;gap:0;margin-bottom:18px;padding:10px 8px;display:flex}.template-overview-item{border-left:1px solid #eef2ea;flex:1;align-items:center;gap:9px;padding:2px 16px;display:flex}.template-overview-item:first-child{border-left:0}.template-overview-item>div{flex-direction:column;display:flex}.template-overview-item strong{letter-spacing:-.03em;font-size:16px;line-height:1.2}.template-overview-item strong small{color:#8f9b90;font-size:8px;font-weight:400}.template-overview-item span:last-child{color:#9aa59a;margin-top:2px;font-size:8px}.template-overview-note{color:#8b978c;border-left:1px solid #eef2ea;flex:0 330px;align-items:center;gap:6px;margin-left:auto;padding:3px 12px;font-size:8px;line-height:1.55;display:flex}.template-overview-note svg{color:#8aa540;flex:none}.template-library-panel{padding:22px}.template-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;display:grid}.template-card{border:1px solid var(--t-border);background:#fff;border-radius:14px;flex-direction:column;min-width:0;transition:transform .18s,box-shadow .18s;display:flex;overflow:hidden}.template-card:hover{transform:translateY(-2px);box-shadow:0 14px 30px #0d1f1b14}.template-card-preview{background:#f8faf5;border-bottom:1px solid #eef2ea;padding:13px}.template-card-preview .t-seat-preview{border:0;border-radius:7px;padding:9px 9px 8px}.template-card-preview .tsp-seat{background:#10231c24;height:8px}.template-card-preview .tsp-board{background:#10231c40}.template-card-body{flex:1;padding:12px 13px 11px}.template-title-row{align-items:center;gap:7px;display:flex}.template-title-row h3{letter-spacing:-.01em;margin:0;font-size:12px}.template-badge{color:#7e8d70;white-space:nowrap;background:#f3f6ed;border-radius:4px;align-items:center;height:17px;padding:0 5px;font-size:6px;display:inline-flex}.template-badge.custom{color:#526e2f;background:#eef7dc}.template-card-body>p{color:#929e93;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:5px 0 0;font-size:8px;line-height:1.6;display:-webkit-box;overflow:hidden}.template-meta{color:#758476;flex-wrap:wrap;align-items:center;gap:7px;margin-top:9px;font-size:7px;display:flex}.template-meta span{align-items:center;gap:3px;display:inline-flex}.template-meta span+span:before{content:"·";color:#c1c9bf;margin-right:3px}.template-card-foot{background:#fbfcf8;border-top:1px solid #f1f4ee;justify-content:space-between;align-items:center;gap:8px;padding:9px 13px;display:flex}.template-card-foot>span{color:#9ba59b;font-size:7px}.template-card-foot .text-link{font-size:8px}.new-template-card{color:#8c998e;text-align:center;cursor:pointer;background:#fbfcf8;border:1px dashed #d3decb;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:5px;min-height:236px;padding:20px;font-family:inherit;transition:background .16s,border-color .16s;display:flex}.new-template-card:hover{background:#f5f9ef;border-color:#b8cbaa}.new-template-icon{color:#61784e;background:#edf4e2;border-radius:14px;justify-content:center;align-items:center;width:48px;height:48px;margin-bottom:3px;display:inline-flex}.new-template-card strong{color:#5d6b5f;font-size:11px}.new-template-card>span:not(.new-template-icon){color:#9aa59a;max-width:190px;font-size:8px;line-height:1.6}.new-template-card small{color:#b0b9ae;font-size:7px}.class-plan-panel{margin-top:17px;padding:22px}.class-plan-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;display:grid}.class-plan-card{background:#fbfcf8;border:1px solid #edf1e9;border-radius:13px;padding:13px}.class-plan-card>header{align-items:center;gap:8px;display:flex}.class-plan-name{flex-direction:column;flex:1;min-width:0;display:flex}.class-plan-name strong{font-size:10px}.class-plan-name span{color:#99a499;margin-top:2px;font-size:8px}.class-plan-body{border-top:1px solid #eef2ea;align-items:center;gap:13px;margin-top:11px;padding-top:10px;display:flex}.class-plan-body .t-seat-preview{border:0;flex:none;width:130px}.class-plan-info{flex-direction:column;min-width:0;display:flex}.class-plan-info>span{color:#a0aaa0;font-size:7px}.class-plan-info strong{color:#526153;margin-top:2px;font-size:10px}.class-plan-info p{color:#99a499;font-family:var(--t-mono);margin:3px 0 0;font-size:7px}.class-plan-card>footer{border-top:1px solid #eef2ea;justify-content:space-between;align-items:center;gap:8px;margin-top:10px;padding-top:9px;display:flex}.class-plan-card>footer>span{color:#a1aba0;font-size:7px}.builder-layout{grid-template-columns:minmax(0,1fr) 258px;gap:20px;display:grid}.builder-form{flex-direction:column;gap:14px;display:flex}.builder-two-col{grid-template-columns:1fr 1fr;gap:10px;display:grid}.builder-preview-panel{background:#f8faf5;border:1px solid #e8eee4;border-radius:14px;align-self:start;padding:15px}.builder-preview-head{justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:10px;display:flex}.builder-preview-head strong{margin-top:2px;font-size:12px;display:block}.capacity-chip{color:#4f671f;background:var(--t-lime);height:22px;font-family:var(--t-mono);border-radius:5px;align-items:center;padding:0 8px;font-size:8px;font-weight:600;display:inline-flex}.builder-preview-stage{background:#fff;border:1px solid #edf1e9;border-radius:10px;padding:11px}.builder-preview-stage .t-seat-preview{justify-content:center;min-height:128px}.builder-preview-meta{flex-wrap:wrap;gap:7px 12px;margin-top:10px;display:flex}.builder-preview-meta span{color:#849186;align-items:center;gap:4px;font-size:8px;display:inline-flex}.builder-preview-note{color:#909c91;border-top:1px solid #e7ede2;align-items:flex-start;gap:5px;margin:11px 0 0;padding-top:10px;font-size:8px;line-height:1.65;display:flex}.builder-preview-note svg{flex:none;margin-top:1px}.switch-row{border:1px solid var(--t-border);text-align:left;cursor:pointer;background:#fbfcf8;border-radius:9px;align-items:center;gap:10px;width:100%;padding:9px 10px;font-family:inherit;display:flex}.switch-row>span{flex-direction:column;flex:1;display:flex}.switch-row strong{color:#5b695e;font-size:9px;font-weight:500}.switch-row small{color:#9aa59a;margin-top:1px;font-size:7px}.t-switch{background:#dce4d7;border-radius:99px;flex:none;width:30px;height:17px;transition:background .18s;position:relative}.t-switch b{background:#fff;border-radius:50%;width:13px;height:13px;transition:transform .18s;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #0d1f1b2e}.switch-row.active .t-switch{background:var(--t-green)}.switch-row.active .t-switch b{transform:translate(13px)}.arrange-layout{flex-direction:column;gap:12px;display:flex}.arrange-section{background:#fbfcf8;border:1px solid #edf1e9;border-radius:12px;padding:13px}.arrange-section-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:9px;display:flex}.arrange-section-head>div{align-items:center;gap:8px;display:flex}.arrange-step{color:#5e762e;width:23px;height:23px;font-family:var(--t-mono);background:#eef7db;border-radius:6px;justify-content:center;align-items:center;font-size:7px;font-weight:600;display:inline-flex}.arrange-section-head strong{color:#4f5e51;font-size:10px;display:block}.arrange-section-head small{color:#9aa59a;margin-top:1px;font-size:7px;display:block}.arrange-class-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;display:grid}.arrange-class{text-align:left;cursor:pointer;background:#fff;border:1px solid #e8eee3;border-radius:8px;align-items:center;gap:7px;min-width:0;padding:7px;font-family:inherit;display:flex}.arrange-class:hover{border-color:#cad9c1}.arrange-class.active{background:#f8fce9;border-color:#b2d268;box-shadow:inset 0 0 0 1px #b2d268}.arrange-class .class-monogram{border-radius:8px;width:30px;height:30px;font-size:8px}.arrange-class-name{flex-direction:column;flex:1;min-width:0;display:flex}.arrange-class-name strong{color:#536154;white-space:nowrap;text-overflow:ellipsis;font-size:8px;font-weight:600;overflow:hidden}.arrange-class-name small{color:#9ba59b;margin-top:1px;font-size:7px}.arrange-check{color:#1f3b2a;background:var(--t-lime);border-radius:50%;flex:none;justify-content:center;align-items:center;width:15px;height:15px;display:inline-flex}.arrange-template-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;display:grid}.arrange-template{text-align:left;cursor:pointer;background:#fff;border:1px solid #e8eee3;border-radius:8px;min-width:0;padding:7px;font-family:inherit;position:relative}.arrange-template:hover{border-color:#cad9c1}.arrange-template.active{background:#fbfdf3;border-color:#b2d268;box-shadow:inset 0 0 0 1px #b2d268}.arrange-template.disabled{opacity:.56}.arrange-template .t-seat-preview{border:0;padding:5px 5px 4px}.arrange-template-body{flex-direction:column;margin-top:5px;display:flex}.arrange-template-body strong{color:#536154;font-size:8px}.arrange-template-body span{color:#849085;font-family:var(--t-mono);margin-top:1px;font-size:7px}.arrange-template-body small{color:#a0aaa0;margin-top:2px;font-size:6px}.arrange-template .arrange-check{position:absolute;top:5px;right:5px}.capacity-alert{color:#a74a2d;background:#fbe8e0;border-radius:3px;padding:1px 4px;font-size:6px;position:absolute;top:5px;left:5px}.capacity-hint{color:#879487;font-family:var(--t-mono);white-space:nowrap;font-size:7px}.sort-options{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;display:grid}.sort-option{color:#7a877b;text-align:left;cursor:pointer;background:#fff;border:1px solid #e8eee3;border-radius:8px;align-items:center;gap:7px;padding:8px;font-family:inherit;display:flex}.sort-option:hover{border-color:#cad9c1}.sort-option.active{background:#f8fce9;border-color:#b2d268}.sort-option>span{flex-direction:column;flex:1;min-width:0;display:flex}.sort-option strong{color:#5a685c;font-size:8px;font-weight:600}.sort-option small{color:#9ba59b;white-space:nowrap;text-overflow:ellipsis;margin-top:1px;font-size:6px;overflow:hidden}.sort-option .radio-dot{width:12px;height:12px}.sort-option.active .radio-dot{border:3px solid var(--t-green)}.arrange-summary{background:#f5fae8;border:1px solid #e5efcf;border-radius:10px;padding:11px 12px}.arrange-summary.danger{background:#fdf2ed;border-color:#f3dcd1}.arrange-summary-class{align-items:center;gap:8px;display:flex}.arrange-summary-class>div{flex-direction:column;display:flex}.arrange-summary-class strong{font-size:9px}.arrange-summary-class span{color:#8b978c;margin-top:1px;font-size:7px}.arrange-summary-flow{color:#73836c;border-top:1px solid #0d1f1b0f;align-items:center;gap:7px;margin-top:7px;padding-top:7px;font-size:8px;display:flex}.arrange-summary-flow b{color:#53702f;font-family:var(--t-mono);margin-left:auto;font-size:8px}.arrange-summary.danger .arrange-summary-flow b{color:#a05a40}.arrange-warning{color:#9b573e;align-items:flex-start;gap:5px;margin:7px 0 0;font-size:7px;line-height:1.55;display:flex}.arrange-warning svg{flex:none;margin-top:1px}.btn-primary:disabled{opacity:.46;cursor:not-allowed;box-shadow:none;transform:none}@media (width<=1180px){.template-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.class-plan-grid{grid-template-columns:1fr}}@media (width<=900px){.seat-mode-bar{flex-wrap:wrap;padding:6px}.seat-mode-current{width:100%;padding:0 6px 4px}.template-overview-strip{flex-wrap:wrap;gap:8px;padding:12px}.template-overview-item{border-left:0;flex:40%;padding:3px 8px}.template-overview-note{border-top:1px solid #eef2ea;border-left:0;flex-basis:100%;margin-left:0;padding:7px 8px}.builder-layout{grid-template-columns:1fr}.builder-preview-panel{order:-1}.arrange-class-grid,.arrange-template-grid,.sort-options{grid-template-columns:1fr 1fr}}@media (width<=760px){.seat-mode-tabs{width:100%}.seat-mode-tabs button{flex:1;justify-content:center}.seat-board-head-right .board-status{display:none}.template-grid{grid-template-columns:1fr}.new-template-card{min-height:170px}.class-plan-body{flex-direction:column;align-items:flex-start}.class-plan-body .t-seat-preview{width:100%}.class-plan-card>footer{flex-wrap:wrap}.arrange-template-grid{grid-template-columns:1fr 1fr}.arrange-section{padding:10px}}@media (width<=520px){.sort-options,.builder-two-col{grid-template-columns:1fr}}.schedule-toolbar{background:var(--t-surface);border:1px solid var(--t-border);box-shadow:var(--t-shadow-sm);border-radius:14px;align-items:center;gap:24px;margin-bottom:15px;padding:11px 14px;display:flex}.week-switcher{align-items:center;gap:10px;display:flex}.week-switcher>div{flex-direction:column;min-width:112px;display:flex}.week-switcher strong{font-size:11px}.week-switcher span{color:#9ba59b;font-family:var(--t-mono);margin-top:2px;font-size:8px}.schedule-stats{border-left:1px solid #edf1e9;align-items:center;gap:18px;padding-left:20px;display:flex}.schedule-stats span{color:#8c988d;white-space:nowrap;font-size:9px}.schedule-stats b{color:#4f5c52;font-family:var(--t-mono);margin-right:2px;font-size:11px}.schedule-stats .today-stat{color:#526b37;align-items:center;gap:5px;display:inline-flex}.today-stat i{background:#84ae3e;border-radius:50%;width:5px;height:5px}.schedule-legend{align-items:center;gap:11px;margin-left:auto;display:flex}.schedule-legend span{color:#869287;white-space:nowrap;align-items:center;gap:4px;font-size:8px;display:inline-flex}.schedule-legend i{border-radius:2px;width:7px;height:7px}.schedule-legend .tone-lime{background:#b7dd64}.schedule-legend .tone-sky{background:#86b9e9}.schedule-legend .tone-coral{background:#f09474}.schedule-legend .tone-violet{background:#a99ae7}.timetable-panel{padding:0;overflow:hidden}.timetable-scroll{width:100%;overflow-x:auto}.timetable{grid-template-columns:105px repeat(5,minmax(145px,1fr));min-width:900px;display:grid}.tt-corner{color:#96a197;background:#f8faf5;border-bottom:1px solid #e8ede4;border-right:1px solid #e8ede4;justify-content:center;align-items:center;gap:5px;height:56px;font-size:8px;display:flex}.tt-day-head{background:#f8faf5;border-bottom:1px solid #e8ede4;border-right:1px solid #eef2ea;justify-content:center;align-items:center;gap:7px;height:56px;display:flex;position:relative}.tt-day-head:last-child{border-right:0}.tt-day-head span{color:#566359;font-size:11px;font-weight:600}.tt-day-head strong{color:#9ba69b;font-family:var(--t-mono);font-size:8px;font-weight:500}.tt-day-head.today{background:#eff7db}.tt-day-head.today span{color:#3f5e20}.tt-day-head i{color:#446b18;background:var(--t-lime);border-radius:99px;padding:1px 5px;font-size:6px;font-style:normal;font-weight:700;position:absolute;top:7px;right:8px}.tt-time{background:#fbfcf8;border-bottom:1px solid #eef2ea;border-right:1px solid #e8ede4;flex-direction:column;justify-content:center;align-items:center;gap:3px;min-height:70px;display:flex}.tt-time strong{color:#69766b;font-size:9px;font-weight:500}.tt-time span{color:#a5afa4;font-family:var(--t-mono);font-size:7px}.tt-time.break{background:#f7f9f3;min-height:30px}.tt-time.break strong{color:#b0b9ae;font-size:8px}.tt-time.break span{display:none}.tt-cell{background:#fff;border-bottom:1px solid #f1f4ed;border-right:1px solid #f1f4ed;min-height:70px;padding:5px}.tt-cell:nth-child(6n){border-right:0}.tt-cell.today{background:#fbfdf4}.tt-cell.break{background:repeating-linear-gradient(135deg,#0000,#0000 7px,#0d1f1b06 7px 14px),#fbfcf8;min-height:30px;padding:3px 5px}.tt-cell.editable{cursor:pointer}.tt-cell.editable:hover{background:#fbfdf5}.tt-cell.today.editable:hover{background:#f7fce9}.tt-empty{color:#b4bfb3;opacity:.58;pointer-events:none;border:1px dashed #0000;border-radius:7px;justify-content:center;align-items:center;gap:4px;width:100%;height:100%;min-height:58px;font-size:8px;transition:opacity .15s,border-color .15s,background .15s;display:flex}.tt-cell.editable:hover .tt-empty{color:#748a61;opacity:1;background:#fbfdf6;border-color:#dbe6d2}.tt-empty-plus{color:#7e9761;background:#eef6df;border-radius:5px;justify-content:center;align-items:center;width:17px;height:17px;display:inline-flex}.tt-course{color:#304125;text-align:left;cursor:pointer;background:#f2f8e1;border:0;border-left:3px solid #b7dd64;border-radius:6px;flex-direction:column;align-items:flex-start;gap:3px;width:100%;height:100%;min-height:58px;padding:7px 8px;font-family:inherit;transition:transform .15s,box-shadow .15s,filter .15s;display:flex}.tt-course:hover{z-index:2;filter:brightness(.98);transform:translateY(-1px);box-shadow:0 8px 18px #0d1f1b1a}.tt-course.tone-lime{color:#3f5a1f;background:#f1f8dd;border-left-color:#9ecb42}.tt-course.tone-sky{color:#2d5475;background:#edf5fc;border-left-color:#6ea9d9}.tt-course.tone-coral{color:#7c3f2c;background:#fdf1ec;border-left-color:#e88364}.tt-course.tone-violet{color:#4f4387;background:#f4f1fc;border-left-color:#9887de}.tt-course.ongoing{box-shadow:0 0 0 1px #85b1384d,0 8px 18px #85b1381f}.tt-course-top{justify-content:space-between;align-items:center;gap:5px;width:100%;display:flex}.tt-course-top b{opacity:.72;font-size:7px;font-weight:600}.tt-course-top i{background:#ffffffb3;border-radius:99px;padding:1px 4px;font-size:6px;font-style:normal;font-weight:600}.tt-course>strong{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:9px;font-weight:600;line-height:1.45;display:-webkit-box;overflow:hidden}.tt-course>small{opacity:.6;margin-top:auto;font-size:7px}.progress-overview{margin-top:24px}.progress-overview>.panel-head{align-items:flex-end;margin-bottom:14px}.class-progress-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.progress-class-card{background:var(--t-surface);border:1px solid var(--t-border);box-shadow:var(--t-shadow-sm);border-radius:15px;padding:16px;transition:transform .17s,box-shadow .17s}.progress-class-card:hover{transform:translateY(-2px);box-shadow:0 14px 34px #0d1f1b14}.progress-class-card>header{align-items:center;gap:8px;display:flex}.progress-class-card>header>div{flex-direction:column;min-width:0;display:flex}.progress-class-card>header strong{white-space:nowrap;font-size:10px}.progress-class-card>header span{color:#9aa59a;margin-top:2px;font-size:8px}.progress-class-card>header b{color:#52664e;font-family:var(--t-mono);margin-left:auto;font-size:12px}.progress-ring-row{align-items:center;gap:12px;margin-top:14px;display:flex}.mini-ring{background:conic-gradient(var(--t-green) var(--ring), #eef2e9 0);border-radius:50%;flex:none;justify-content:center;align-items:center;width:60px;height:60px;display:flex;position:relative}.mini-ring:before{content:"";background:#fff;border-radius:50%;position:absolute;inset:6px}.mini-ring>span{z-index:1;color:#445444;font-family:var(--t-mono);font-size:11px;font-weight:600;position:relative}.mini-ring small{color:#a0aaa0;font-size:7px;font-weight:400}.progress-class-info{flex:1;min-width:0}.progress-class-info p{color:#8d998e;white-space:nowrap;text-overflow:ellipsis;margin:0 0 3px;font-size:8px;overflow:hidden}.progress-class-info strong{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:9px;font-weight:600;line-height:1.45;display:-webkit-box;overflow:hidden}.progress-class-info .progress-track{height:4px;margin-top:7px}.progress-class-card>footer{border-top:1px solid #f0f3ec;justify-content:space-between;align-items:center;gap:8px;margin-top:12px;padding-top:10px;display:flex}.progress-class-card>footer span{color:#9aa59a;align-items:center;gap:4px;font-size:7px;display:inline-flex}.progress-class-card>footer button{color:var(--t-green);cursor:pointer;background:0 0;border:0;align-items:center;gap:3px;padding:0;font-family:inherit;font-size:8px;display:inline-flex}.lesson-detail-tags{flex-wrap:wrap;align-items:center;gap:7px;margin-bottom:15px;display:flex}.lesson-detail-list{border-top:1px solid #f0f3ec;flex-direction:column;display:flex}.lesson-detail-list>div{border-bottom:1px solid #f3f5f0;justify-content:space-between;align-items:center;gap:16px;padding:11px 0;display:flex}.lesson-detail-list span{color:#8d998e;font-size:10px}.lesson-detail-list strong{text-align:right;font-size:10px;font-weight:600}.lesson-detail-list em{color:#7b8c54;margin-left:4px;font-size:8px;font-style:normal}.lesson-detail-note{color:#647455;background:#f6fae9;border-radius:9px;gap:7px;margin-top:15px;padding:11px;display:flex}.lesson-detail-note svg{color:#8aa53f;flex:none;margin-top:1px}.lesson-detail-note p{margin:0;font-size:9px;line-height:1.7}@media (width<=1280px){.class-progress-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.schedule-toolbar{flex-wrap:wrap;gap:12px}.schedule-legend{border-top:1px solid #eef2ea;width:100%;margin-left:0;padding-top:8px}}@media (width<=760px){.schedule-toolbar{padding:12px}.schedule-stats{border-left:0;gap:12px;width:100%;padding-left:0;overflow-x:auto}.class-progress-grid{grid-template-columns:1fr}}.schedule-editor-slot{background:#f8faf5;border:1px solid #edf1e9;border-radius:12px;align-items:center;gap:11px;margin-bottom:16px;padding:13px;display:flex}.slot-calendar{color:#1e3829;background:var(--t-lime);border-radius:11px;flex-direction:column;flex:none;justify-content:center;align-items:center;width:52px;height:52px;display:flex}.slot-calendar strong{font-size:12px;line-height:1.2}.slot-calendar span{font-family:var(--t-mono);margin-top:2px;font-size:7px}.schedule-editor-slot-info{flex-direction:column;flex:1;min-width:0;display:flex}.schedule-editor-slot-info span{color:#8b978c;font-family:var(--t-mono);font-size:8px}.schedule-editor-slot-info strong{color:#4c5b4f;text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:12px;font-weight:600;overflow:hidden}.slot-state{color:#7c8d5f;background:#eef6df;border-radius:5px;flex:none;align-items:center;gap:5px;height:22px;padding:0 7px;font-size:7px;display:inline-flex}.slot-state i{background:#8db348;border-radius:50%;width:5px;height:5px}.slot-state.filled{color:#2f6b4b;background:#e9f5ed}.slot-state.filled i{background:#469764}.schedule-teacher-row{background:#fbfcf8;border:1px solid #edf1e9;border-radius:9px;align-items:center;gap:8px;padding:9px 10px;display:flex}.schedule-teacher-row>div{flex-direction:column;flex:1;display:flex}.schedule-teacher-row span{color:#99a499;font-size:7px}.schedule-teacher-row strong{color:#5b695e;margin-top:1px;font-size:9px;font-weight:600}.btn-danger-ghost{color:#a7553d;cursor:pointer;background:#fdf4f0;border:1px solid #f0d9cf;border-radius:11px;height:40px;margin-right:auto;padding:0 12px;font-family:inherit;font-size:11px;font-weight:500}.btn-danger-ghost:hover{background:#fbeae3}@media (width<=760px){.tt-empty{font-size:7px}.schedule-editor-slot{padding:10px}}.classroom-summary{background:var(--t-surface);border:1px solid var(--t-border);box-shadow:var(--t-shadow-sm);border-radius:15px;align-items:center;gap:0;margin-bottom:4px;padding:10px 8px;display:flex}.classroom-stat{border-left:1px solid #eef2ea;flex:1;align-items:center;gap:9px;padding:3px 16px;display:flex}.classroom-stat:first-child{border-left:0}.classroom-stat>div{flex-direction:column;display:flex}.classroom-stat strong{letter-spacing:-.03em;font-size:17px;line-height:1.2}.classroom-stat small{color:#909b90;margin-top:2px;font-size:8px}.classroom-notice{border-left:1px solid #eef2ea;flex:none;align-items:center;gap:9px;max-width:350px;margin-left:auto;padding:2px 12px;display:flex}.notice-lock{color:#6d7e52;background:#f2f8e2;border-radius:8px;flex:none;justify-content:center;align-items:center;width:30px;height:30px;display:inline-flex}.classroom-notice.teacher .notice-lock{color:#55697c;background:#eef4f9}.classroom-notice p{color:#8c988d;margin:0;font-size:8px;line-height:1.55}.classroom-notice strong{color:#59665c;font-size:9px}.course-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.course-card{background:var(--t-surface);border:1px solid var(--t-border);min-width:0;box-shadow:var(--t-shadow-sm);border-radius:17px;transition:transform .2s,box-shadow .2s;overflow:hidden}.course-card:hover{transform:translateY(-3px);box-shadow:0 18px 40px #0d1f1b17}.course-cover-wrap{position:relative}.course-cover{color:#10231c;flex-direction:column;justify-content:space-between;width:100%;padding:16px;display:flex;position:relative;overflow:hidden}.cover-lime{background:radial-gradient(100% 130% at 100% 0,#ffffff8f,#0000 50%),linear-gradient(130deg,#c8ee72,#e2f9a4)}.cover-sky{background:radial-gradient(100% 130% at 100% 0,#ffffff7a,#0000 50%),linear-gradient(130deg,#c5dff6,#e1effa)}.cover-coral{background:radial-gradient(100% 130% at 100% 0,#ffffff75,#0000 50%),linear-gradient(130deg,#f8c9b7,#fbe2d7)}.cover-violet{background:radial-gradient(100% 130% at 100% 0,#ffffff75,#0000 50%),linear-gradient(130deg,#d7cef6,#e9e3fb)}.cover-sand{background:radial-gradient(100% 130% at 100% 0,#ffffff75,#0000 50%),linear-gradient(130deg,#f0dda9,#f8eccd)}.cover-kicker{z-index:3;color:#10231c8f;font-family:var(--t-mono);letter-spacing:.15em;align-self:flex-start;font-size:7px;position:relative}.cover-ring{border:1px solid #10231c29;border-radius:50%;width:180px;height:180px;position:absolute;top:-65px;right:-55px}.cover-ring.ring-two{border-color:#10231c14;width:250px;height:250px;top:-20px;right:-110px}.cover-dot{background:#10231c57;border-radius:50%;width:7px;height:7px;position:absolute}.cover-dot.dot-one{top:22px;right:66px}.cover-dot.dot-two{opacity:.6;width:4px;height:4px;top:38px;right:45px}.cover-symbol{z-index:2;color:#eaf5ec;background:#10231cd4;border-radius:14px;justify-content:center;align-items:center;width:52px;height:52px;display:inline-flex;position:absolute;top:42px;right:16px;box-shadow:0 10px 24px #10231c2e}.cover-title{z-index:3;letter-spacing:-.03em;max-width:78%;margin-bottom:20px;font-size:15px;font-weight:700;line-height:1.35;position:relative}.cover-axis{font-family:var(--t-mono);letter-spacing:.1em;opacity:.4;font-size:6px;position:absolute;bottom:10px;right:12px}.visibility-badge{z-index:5;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);border-radius:6px;align-items:center;gap:4px;height:22px;padding:0 7px;font-size:8px;font-weight:600;display:inline-flex;position:absolute;top:10px;right:10px}.visibility-badge.public{color:#e9f6ec;background:#0e2b21c2}.visibility-badge.private{color:#5e4a20;background:#fff8e6d6}.visibility-badge.inline{-webkit-backdrop-filter:none;backdrop-filter:none;height:23px;padding:0 8px;position:static}.visibility-badge.inline.public{color:#2c6242;background:#e9f5ed}.visibility-badge.inline.private{color:#87631f;background:#fbf2dc}.course-status{z-index:5;color:#eaf4ed;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#10231cb8;border-radius:5px;align-items:center;height:20px;padding:0 7px;font-size:7px;font-weight:500;display:inline-flex;position:absolute;bottom:10px;left:10px}.course-status.draft{color:#6e5323;background:#fff8e3db}.course-status.ended{color:#ecf2ee;background:#10231c8c}.course-body{padding:14px 15px 15px}.course-class-line{color:#8e9a8f;justify-content:space-between;align-items:center;gap:8px;font-size:8px;display:flex}.course-class-line span:first-child{color:#65724f;background:#f4f8ea;border-radius:4px;align-items:center;height:19px;padding:0 6px;font-weight:500;display:inline-flex}.course-body h3{letter-spacing:-.02em;white-space:nowrap;text-overflow:ellipsis;margin:8px 0 4px;font-size:13px;line-height:1.45;overflow:hidden}.course-desc{color:#8d998e;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:9px;line-height:1.65;display:-webkit-box;overflow:hidden}.course-progress-row{color:#939f94;justify-content:space-between;align-items:center;margin-top:12px;font-size:8px;display:flex}.course-progress-row b{color:#60705e;font-family:var(--t-mono);font-size:9px}.course-body .progress-track{height:4px;margin-top:5px}.course-foot{border-top:1px solid #f0f3ec;justify-content:space-between;align-items:center;gap:10px;margin-top:12px;padding-top:11px;display:flex}.course-teacher{align-items:center;gap:7px;min-width:0;display:flex}.course-teacher>span{color:#57655b;flex-direction:column;min-width:0;font-size:9px;font-weight:500;display:flex}.course-teacher small{color:#a0aaa0;margin-top:1px;font-size:7px;font-weight:400}.course-actions{align-items:center;gap:5px;display:flex}.icon-action{color:#7d8a7f;cursor:pointer;background:#f7f9f3;border:1px solid #edf1e9;border-radius:7px;justify-content:center;align-items:center;width:28px;height:28px;display:inline-flex}.icon-action:hover{color:var(--t-ink);background:#f0f4ea}.course-enter{color:#f2f8f3;background:var(--t-ink);cursor:pointer;border:0;border-radius:7px;align-items:center;gap:4px;height:29px;padding:0 9px;font-family:inherit;font-size:8px;font-weight:500;display:inline-flex}.course-enter:hover{background:#1a3a2f}.course-modal-cover{border-radius:13px;margin-bottom:14px;overflow:hidden}.course-modal-desc{color:#758277;margin:0 0 15px;font-size:11px;line-height:1.7}.course-modal-progress{background:#f7f9f3;border:1px solid #eef2e9;border-radius:11px;padding:13px}.course-modal-progress>div:first-child{justify-content:space-between;align-items:center;gap:10px;display:flex}.course-modal-progress span{color:#8b978c;font-size:9px}.course-modal-progress strong{color:#53644f;font-family:var(--t-mono);font-size:12px}.course-modal-progress .progress-track{height:5px;margin:7px 0}.course-modal-progress small{color:#9ba59b;font-size:8px}.module-list{flex-direction:column;gap:5px;margin-top:15px;display:flex}.module-row{background:#fafbf7;border:1px solid #f0f3ec;border-radius:9px;align-items:center;gap:9px;padding:9px 10px;display:flex}.module-row.done{background:#f7faf3}.module-row.current{background:#f5fae8;border-color:#e4efcc}.module-index{color:#a3ada2;width:22px;font-family:var(--t-mono);flex:none;font-size:8px}.module-row>div{flex-direction:column;flex:1;display:flex}.module-row strong{font-size:10px;font-weight:500}.module-row small{color:#9ba59b;margin-top:1px;font-size:7px}.module-row>svg{color:#b4beb3}.module-row.done>svg{color:#5e9c71}.module-row.current>svg{color:#72982c}@media (width<=1320px){.course-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=900px){.classroom-summary{flex-wrap:wrap;gap:8px;padding:12px}.classroom-stat{border-left:0;flex:40%;padding:3px 8px}.classroom-notice{border-top:1px solid #eef2ea;border-left:0;flex-basis:100%;max-width:none;margin-left:0;padding:8px}}@media (width<=760px){.course-grid{grid-template-columns:1fr}}.classroom-player{flex-direction:column;gap:14px;min-width:0;display:flex}.player-topbar{background:var(--t-surface);border:1px solid var(--t-border);box-shadow:var(--t-shadow-sm);border-radius:15px;justify-content:space-between;align-items:center;gap:20px;padding:12px 15px;display:flex}.player-topbar-left{align-items:center;gap:10px;min-width:0;display:flex}.player-back{border:1px solid var(--t-border);color:#667368;cursor:pointer;background:#fbfcf8;border-radius:8px;flex:none;align-items:center;gap:5px;height:32px;padding:0 9px;font-family:inherit;font-size:9px;display:inline-flex}.player-back:hover{color:var(--t-ink);background:#f3f7ee}.player-divider{background:#eef2ea;flex:none;width:1px;height:26px}.player-title-block{flex-direction:column;min-width:0;display:flex}.player-title-block>span{color:#99a499;font-size:8px}.player-title-block strong{color:#3b4a3e;text-overflow:ellipsis;white-space:nowrap;max-width:360px;margin-top:2px;font-size:12px;font-weight:600;overflow:hidden}.player-topbar-actions{flex:none;align-items:center;gap:7px;display:flex}.player-progress-text{color:#99a499;margin-right:5px;font-size:8px}.player-progress-text b{color:#52624f;font-family:var(--t-mono);font-size:10px}.player-layout{grid-template-columns:minmax(0,1fr) 306px;align-items:start;gap:14px;display:grid}.player-main{flex-direction:column;gap:12px;min-width:0;display:flex}.player-stage{background:#0f2f26;border-radius:16px;width:100%;height:clamp(330px,37vw,470px);min-height:330px;position:relative;overflow:hidden;box-shadow:0 20px 46px #091e182e}.stage-chalk{color:#e8f1e9;background:radial-gradient(80% 100% at 50% 0,#ffffff0f,#0000 60%),#173f33;border:6px solid #b78a56;border-radius:12px;flex-direction:column;height:100%;padding:20px 24px;display:flex;position:relative;overflow:hidden}.stage-chalk:before{content:"";pointer-events:none;background-image:radial-gradient(#ffffff0b .6px,#0000 .6px),linear-gradient(110deg,#0000 20%,#ffffff08 45%,#0000 62%);background-size:18px 18px,100% 100%;position:absolute;inset:0}.stage-chalk-top{z-index:2;color:#e6f0e9a8;font-family:var(--t-mono);letter-spacing:.12em;justify-content:space-between;align-items:center;gap:12px;font-size:8px;display:flex;position:relative}.stage-chalk-top span:first-child{color:#e9f2e9;font-family:var(--t-font);letter-spacing:.02em;background:#ffffff14;border-radius:4px;padding:4px 7px;font-size:9px}.stage-chalk-center{z-index:2;text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;display:flex;position:relative}.stage-chalk-center p{color:#9ec1af;letter-spacing:.04em;margin:0 0 8px;font-size:9px}.stage-chalk-center h2{color:#edf5e9;letter-spacing:.02em;text-shadow:0 2px 2px #00000038;max-width:90%;margin:0;font-size:clamp(24px,3.5vw,40px);line-height:1.25}.stage-play{color:#eff7f0;cursor:pointer;background:#0f1a16d1;border:0;border-radius:50%;justify-content:center;align-items:center;width:62px;height:62px;margin:18px 0 10px;padding-left:3px;transition:transform .18s,background .18s;display:inline-flex;box-shadow:0 0 0 9px #ffffff0b,0 12px 30px #00000040}.stage-play:hover{background:#0c241c;transform:scale(1.06)}.stage-chalk-center>span{color:#deebe294;font-family:var(--t-mono);font-size:8px}.stage-chalk-meta{z-index:2;color:#e4f0e8b8;border-top:1px solid #ffffff14;flex-wrap:wrap;gap:9px 28px;padding-top:12px;font-size:9px;display:flex;position:relative}.chalk-stick{z-index:1;border-radius:99px;width:44px;height:5px;position:absolute;transform:rotate(16deg)}.chalk-stick.stick-one{background:#e5b3a2;bottom:19%;left:18%}.chalk-stick.stick-two{background:#a9cfdf;width:35px;bottom:16%;left:21%;transform:rotate(-12deg)}.chalk-cup{opacity:.55;background:#d6b177;border-radius:5px 5px 2px 2px;width:58px;height:34px;position:absolute;bottom:10%;right:2%;box-shadow:0 8px #00000026}.player-stage.kind-slides,.player-stage.kind-doc,.player-stage.kind-task,.player-stage.kind-homework{box-shadow:var(--t-shadow-sm);background:#e9eee4;border:1px solid #dfe7da}.stage-paper{background:radial-gradient(#0d1f1b09 .6px,#0000 .6px) 0 0/16px 16px,#eef2e9;flex-direction:column;height:100%;padding:16px;display:flex}.stage-paper-top{color:#7f8d80;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;font-size:8px;display:flex}.stage-paper-top span:first-child{color:#506348;background:#e1ebd4;border-radius:4px;padding:3px 7px;font-weight:600}.paper-sheet{background:#fff;border-radius:4px;flex:1;padding:28px 34px;position:relative;overflow:auto;box-shadow:0 12px 30px #0d1f1b21}.paper-kicker{color:#8c9a8d;font-family:var(--t-mono);letter-spacing:.1em;text-transform:uppercase;font-size:7px}.paper-head h3{color:#263c2d;letter-spacing:-.035em;margin:11px 0 7px;font-size:clamp(20px,2.4vw,29px);line-height:1.3}.paper-head>p{color:#7f8c80;max-width:90%;margin:0;font-size:10px;line-height:1.7}.paper-lines{flex-direction:column;gap:8px;margin-top:20px;display:flex}.paper-line{background:#f7f9f3;border-radius:6px;align-items:center;gap:10px;padding:8px 10px;display:flex}.paper-line>span{color:#92a388;font-family:var(--t-mono);font-size:8px}.paper-line>p{color:#5f6d61;margin:0;font-size:9px}.paper-stamp{color:#0f6b5a24;font-family:var(--t-mono);letter-spacing:.14em;font-size:9px;position:absolute;bottom:16px;right:22px}.player-footbar{background:var(--t-surface);border:1px solid var(--t-border);box-shadow:var(--t-shadow-sm);border-radius:13px;justify-content:space-between;align-items:center;gap:14px;padding:11px 14px;display:flex}.player-source{flex-direction:column;gap:2px;display:flex}.player-source span{color:#859185;font-size:8px}.player-source small{color:#a3ada2;font-size:7px}.player-foot-actions{flex:none;align-items:center;gap:7px;display:flex}.player-resources{background:var(--t-surface);border:1px solid var(--t-border);box-shadow:var(--t-shadow-sm);border-radius:15px;flex-direction:column;padding:16px;display:flex}.resource-head{border-bottom:1px solid #eef2ea;justify-content:space-between;align-items:flex-start;gap:10px;padding-bottom:12px;display:flex}.resource-head h3{letter-spacing:-.02em;margin:0;font-size:15px}.resource-head>span{color:#6c7a69;width:22px;height:22px;font-family:var(--t-mono);background:#f1f5eb;border-radius:6px;justify-content:center;align-items:center;font-size:8px;display:inline-flex}.resource-list{flex-direction:column;gap:3px;padding:9px 0;display:flex}.resource-item{color:#a2aca1;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:9px;height:48px;padding:0 8px;font-family:inherit;transition:background .15s,border-color .15s;display:flex;position:relative}.resource-item:hover{background:#f8faf5}.resource-item.active{color:#3f6450;background:#eef6ec;border-color:#e0eddb}.resource-icon{border-radius:8px;flex:none;justify-content:center;align-items:center;width:30px;height:30px;display:inline-flex}.resource-info{flex-direction:column;flex:1;min-width:0;display:flex}.resource-info strong{color:#5d6a5f;text-overflow:ellipsis;white-space:nowrap;font-size:9px;font-weight:500;overflow:hidden}.resource-item.active .resource-info strong{color:#2e4f3c;font-weight:600}.resource-info small{color:#a0aaa0;margin-top:2px;font-size:7px}.resource-item.active .resource-info small{color:#779079}.resource-tip{color:#8c998d;background:#f7f9f3;border-radius:7px;align-items:flex-start;gap:5px;padding:8px;font-size:7px;line-height:1.6;display:flex}.resource-tip svg{flex:none;margin-top:1px}.resource-actions{flex-direction:column;gap:6px;margin-top:10px;display:flex}.resource-actions .outline-wide-btn{height:32px;margin-top:0;font-size:9px}.stage-exit-fullscreen{z-index:12;color:#eef6ef;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);cursor:pointer;background:#0818129e;border:1px solid #fff3;border-radius:8px;align-items:center;gap:5px;height:34px;padding:0 11px;font-family:inherit;font-size:10px;transition:background .15s;display:inline-flex;position:absolute;top:14px;right:14px}.stage-exit-fullscreen:hover{background:#081812d1}.player-stage:fullscreen{width:100vw;height:100vh;min-height:0;max-height:none;box-shadow:none;background:#0f2f26;border-radius:0}.player-stage:fullscreen .stage-chalk{border-width:8px;border-radius:0;padding:34px 46px}.player-stage:fullscreen .stage-chalk-top{font-size:12px}.player-stage:fullscreen .stage-chalk-top span:first-child{font-size:15px}.player-stage:fullscreen .stage-chalk-center p{font-size:15px}.player-stage:fullscreen .stage-chalk-center h2{font-size:clamp(46px,5.2vw,82px)}.player-stage:fullscreen .stage-chalk-center>span{font-size:13px}.player-stage:fullscreen .stage-play{width:104px;height:104px;margin:28px 0 15px}.player-stage:fullscreen .stage-chalk-meta{gap:18px 52px;padding-top:20px;font-size:14px}.player-stage:fullscreen .stage-paper{padding:34px}.player-stage:fullscreen .paper-sheet{width:min(1180px,100%);margin:0 auto;padding:48px 58px}.player-stage:fullscreen .paper-head h3{font-size:clamp(34px,4vw,58px)}.player-stage:fullscreen .paper-head>p{font-size:15px}.player-stage:fullscreen .paper-line>p{font-size:13px}.player-stage:fullscreen .paper-line>span{font-size:11px}@media (width<=1280px){.player-layout{grid-template-columns:minmax(0,1fr) 280px}.player-title-block strong{max-width:250px}}@media (width<=1060px){.player-layout{grid-template-columns:1fr}.player-resources{grid-template-columns:1fr 1fr;gap:0 16px;display:grid}.resource-head,.resource-tip,.resource-actions{grid-column:span 2}.resource-list{grid-column:span 2;grid-template-columns:1fr 1fr;display:grid}.resource-actions{flex-direction:row}.resource-actions .outline-wide-btn{flex:1;margin-top:0}}@media (width<=900px){.player-topbar{flex-wrap:wrap;align-items:flex-start}.player-topbar-actions{border-top:1px solid #eef2ea;justify-content:flex-end;width:100%;padding-top:8px}.player-progress-text{margin-right:auto}.player-stage{height:360px}}@media (width<=760px){.player-topbar{padding:10px}.player-title-block strong{max-width:190px;font-size:10px}.player-back{font-size:8px}.player-topbar-actions .btn-secondary,.player-topbar-actions .btn-primary{height:34px;padding:0 9px;font-size:9px}.player-stage{height:310px;min-height:310px}.stage-chalk{border-width:4px;padding:14px}.stage-chalk-center h2{font-size:24px}.stage-chalk-meta{gap:5px 12px;font-size:7px}.stage-play{width:50px;height:50px;margin:12px 0 8px}.paper-sheet{padding:18px}.lesson-chips button{height:28px;font-size:7px}.player-footbar{flex-direction:column;align-items:flex-start}.player-foot-actions{width:100%}.player-foot-actions .btn-secondary,.player-foot-actions .btn-primary{flex:1;font-size:9px}.player-resources,.resource-list{display:flex}}.stage-annotation{z-index:7;pointer-events:none;touch-action:none;width:100%;height:100%;position:absolute;inset:0}.stage-annotation.is-drawing{pointer-events:auto;cursor:crosshair}.stage-spotlight{z-index:9;pointer-events:none;border-radius:50%;width:240px;height:240px;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 0 9999px #030d099e}.board-tools{z-index:20;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#081812e0;border:1px solid #ffffff24;border-radius:13px;align-items:center;gap:2px;max-width:calc(100vw - 28px);padding:5px;display:flex;position:absolute;bottom:18px;left:50%;overflow-x:auto;transform:translate(-50%);box-shadow:0 14px 36px #00000057}.board-tools::-webkit-scrollbar{display:none}.board-tool-group{align-items:center;gap:2px;display:flex}.board-tool,.board-icon-btn,.board-exit{color:#e7f1e9ad;cursor:pointer;background:0 0;border:0;border-radius:8px;flex:none;height:36px;font-family:inherit;transition:background .15s,color .15s}.board-tool{align-items:center;gap:4px;padding:0 8px;font-size:9px;display:inline-flex}.board-icon-btn{justify-content:center;align-items:center;width:36px;padding:0;display:inline-flex}.board-tool:hover,.board-icon-btn:hover{color:#f2f8ef;background:#ffffff17}.board-tool.active,.board-icon-btn.active{color:#1d3a28;background:var(--t-lime)}.board-tool.active:hover,.board-icon-btn.active:hover{color:#1d3a28;background:#d5f47c}.board-sep{background:#ffffff24;flex:none;width:1px;height:22px;margin:0 4px}.board-colors{align-items:center;gap:4px;padding:0 3px;display:flex}.board-color{cursor:pointer;border:2px solid #ffffff29;border-radius:50%;flex:none;width:17px;height:17px;padding:0;transition:transform .15s,box-shadow .15s}.board-color:hover{transform:scale(1.1)}.board-color.active{border-color:#f3f8ef;box-shadow:0 0 0 2px #e7ff9c8c}.board-widths{align-items:center;gap:1px;padding:0 2px;display:flex}.board-width{cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;width:22px;height:32px;padding:0;display:inline-flex}.board-width>span{background:#d8e4d8;border-radius:50%}.board-width.active{background:#ffffff1f}.board-width.active>span{background:var(--t-lime)}.board-exit{color:#ffd8cd;background:#be583e33;align-items:center;gap:4px;padding:0 9px;font-size:9px;display:inline-flex}.board-exit:hover{color:#fff3ef;background:#be583e5c}.timer-float{z-index:18;color:#e9f2e9;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);touch-action:none;background:#081812f0;border:1px solid #ffffff26;border-radius:16px;width:300px;max-width:calc(100vw - 20px);padding:16px;position:absolute;box-shadow:0 22px 56px #00000061}.timer-head{cursor:grab;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.timer-head:active{cursor:grabbing}.timer-title{align-items:center;gap:9px;display:flex}.timer-grip{opacity:.5;background-image:radial-gradient(circle,#e7f1e9d9 1.3px,#0000 1.3px);background-size:5px 5px;flex:none;width:10px;height:24px}.timer-title>div{flex-direction:column;display:flex}.timer-title strong{color:#f1f8ef;font-size:12px;font-weight:600}.timer-title small{color:#e5f0e77a;margin-top:2px;font-size:7px}.timer-close{color:#e7f1e999;cursor:pointer;background:#ffffff0f;border:0;border-radius:7px;flex:none;justify-content:center;align-items:center;width:26px;height:26px;padding:0;display:inline-flex}.timer-close:hover{color:#f6fbf4;background:#ffffff1f}.timer-body{margin-top:12px}.timer-clock-row{justify-content:space-between;align-items:flex-end;gap:10px;display:flex}.timer-clock-row>strong{color:#f5faf2;font-family:var(--t-mono);letter-spacing:-.02em;font-size:46px;line-height:1}.timer-state{color:#e7f1e994;background:#ffffff12;border-radius:5px;align-items:center;gap:5px;height:22px;margin-bottom:3px;padding:0 7px;font-size:8px;display:inline-flex}.timer-state:before{content:"";background:#9aa99b;border-radius:50%;width:5px;height:5px}.timer-state.running{color:#d8ff8f;background:#c9f16921}.timer-state.running:before{background:var(--t-lime);animation:1.2s ease-in-out infinite timer-pulse;box-shadow:0 0 0 3px #c9f16929}.timer-state.done{color:#ffb7a4;background:#ef7a5924}.timer-state.done:before{background:#ef7a59}@keyframes timer-pulse{0%,to{opacity:1}50%{opacity:.35}}.timer-progress{background:#ffffff17;border-radius:99px;height:5px;margin:10px 0 12px;overflow:hidden}.timer-progress>span{border-radius:inherit;background:linear-gradient(90deg, #9ed33c, var(--t-lime));height:100%;transition:width .25s linear;display:block}.timer-presets{grid-template-columns:repeat(5,1fr);gap:4px;margin-bottom:10px;display:grid}.timer-presets button{color:#e7f1e999;cursor:pointer;background:0 0;border:1px solid #ffffff1c;border-radius:6px;height:29px;padding:0;font-family:inherit;font-size:8px}.timer-presets button:hover{color:#eef7ec;background:#ffffff12}.timer-presets button.active{color:#1d3a28;background:var(--t-lime);border-color:var(--t-lime);font-weight:600}.timer-actions{grid-template-columns:1fr 1.35fr 1fr 1fr;gap:4px;display:grid}.timer-actions button{color:#e7f1e9bd;cursor:pointer;background:#ffffff0f;border:1px solid #ffffff1f;border-radius:7px;height:33px;padding:0 4px;font-family:inherit;font-size:8px}.timer-actions button:hover{background:#ffffff1c}.timer-actions .timer-primary{color:#1d3a28;background:var(--t-lime);border-color:var(--t-lime);font-size:9px;font-weight:600}.timer-actions .timer-primary:hover{background:#d5f47c}.player-stage:fullscreen .stage-chalk{padding-bottom:96px}.player-stage:fullscreen .stage-paper{padding-bottom:90px}@media (width<=1100px){.board-tool span{display:none}.board-tool{justify-content:center;width:36px;padding:0}}@media (width<=760px){.board-tools{gap:1px;padding:4px;bottom:10px}.board-tool,.board-icon-btn{width:33px;height:33px}.board-sep{margin:0 2px}.board-colors{gap:3px}.board-widths{display:none}.board-exit{height:33px;padding:0 7px}.player-stage:fullscreen .stage-chalk{padding:14px 12px 96px}.player-stage:fullscreen .stage-chalk-top span:first-child{white-space:nowrap;font-size:12px}.player-stage:fullscreen .stage-chalk-top span:last-child{display:none}.player-stage:fullscreen .stage-chalk-center h2{font-size:34px}.player-stage:fullscreen .stage-chalk-center p{font-size:11px}.player-stage:fullscreen .stage-chalk-center>span{font-size:10px}.player-stage:fullscreen .stage-play{width:64px;height:64px;margin:16px 0 10px}.player-stage:fullscreen .stage-chalk-meta{gap:5px 16px;padding-top:12px;font-size:10px}.board-tools{overflow:visible}.board-colors{background:#081812e6;border:1px solid #ffffff24;border-radius:20px;padding:6px 10px;position:absolute;bottom:46px;left:50%;transform:translate(-50%);box-shadow:0 10px 24px #00000047}.board-color{width:17px;height:17px}}@media (width<=360px){.board-exit{display:none}.board-tool,.board-icon-btn{width:30px;height:31px}}.stage-annotation.tool-pen{cursor:url(/cursors/pen.png) 4 29,crosshair}.stage-annotation.tool-highlighter{cursor:url(/cursors/highlighter.png) 4 29,crosshair}.stage-annotation.tool-eraser{cursor:url(/cursors/eraser.png) 5 24,crosshair}.resource-empty{border:1px dashed var(--t-border);color:var(--t-faint);text-align:center;border-radius:9px;padding:16px 12px;font-size:9px}.picker-overlay{z-index:19;color:#edf5ee;-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);background:radial-gradient(80% 80% at 50% 10%,#1a4a3959,#0000 70%),#05120dc2;justify-content:center;align-items:center;padding:24px;animation:.2s ease-out both picker-fade;display:flex;position:absolute;inset:0;overflow:hidden}.picker-close{z-index:30;color:#e9f2e9;cursor:pointer;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#081812b3;border:1px solid #ffffff29;border-radius:9px;justify-content:center;align-items:center;width:36px;height:36px;padding:0;display:inline-flex;position:absolute;top:18px;right:18px}.picker-close:hover{background:#081812e6}@keyframes picker-fade{0%{opacity:0}to{opacity:1}}.picker-setup{color:#263b2d;background:#fbfcf8;border-radius:18px;flex-direction:column;width:min(900px,100%);max-height:100%;padding:22px;display:flex;overflow:hidden;box-shadow:0 34px 90px #0000005c}.picker-setup-head{border-bottom:1px solid #e9eee4;justify-content:space-between;align-items:flex-start;gap:20px;padding-bottom:15px;display:flex}.picker-setup-head h2{color:#1d3327;letter-spacing:-.04em;margin:5px 0 0;font-size:26px;line-height:1.15}.picker-setup-head p:not(.panel-eyebrow){color:#839084;margin:6px 0 0;font-size:9px;line-height:1.6}.picker-total{background:#f0f6e7;border-radius:10px;flex:none;align-items:baseline;gap:4px;padding:9px 12px;display:flex}.picker-total b{color:#4e6d36;font-family:var(--t-mono);font-size:23px;line-height:1}.picker-total small{color:#83927f;font-size:8px}.picker-setup-body{flex:1;grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);gap:16px;min-height:0;padding-top:15px;display:grid}.picker-roster{background:#f7f9f3;border:1px solid #e9eee4;border-radius:12px;flex-direction:column;min-height:0;display:flex;overflow:hidden}.picker-roster>header{border-bottom:1px solid #e9eee4;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;display:flex}.picker-roster>header strong{font-size:10px}.picker-roster>header>div{gap:4px;display:flex}.picker-roster>header button{color:#6f7f6d;cursor:pointer;background:#fff;border:1px solid #e0e8da;border-radius:5px;height:23px;padding:0 8px;font-family:inherit;font-size:8px}.picker-roster>header button:hover{color:#36513f;border-color:#c8d8bd}.picker-roster-list{scrollbar-width:thin;scrollbar-color:#d7e0d2 transparent;flex-direction:column;flex:1;gap:2px;min-height:0;padding:7px;display:flex;overflow-y:auto}.picker-student{cursor:pointer;border:1px solid #0000;border-radius:8px;align-items:center;gap:8px;padding:6px 8px;transition:background .14s,border-color .14s;display:flex}.picker-student:hover{background:#eef4e8}.picker-student.checked{background:#f1f8e6;border-color:#e4eedb}.picker-student.picked{opacity:.68}.picker-student input{accent-color:#467a3d;cursor:pointer;flex:none;width:14px;height:14px;margin:0}.picker-student-info{flex-direction:column;flex:1;min-width:0;display:flex}.picker-student-info strong{color:#445446;font-size:9px;font-weight:500}.picker-student-info small{color:#98a297;margin-top:1px;font-size:7px}.picker-student em{color:#a87842;background:#fbf1df;border-radius:4px;flex:none;padding:2px 5px;font-size:7px;font-style:normal}.picker-empty{color:#98a297;text-align:center;padding:24px;font-size:9px}.picker-settings{flex-direction:column;gap:10px;min-height:0;display:flex}.picker-setting>span{color:#7f8c80;margin-bottom:5px;font-size:8px;display:block}.picker-round-sizes{grid-template-columns:repeat(5,1fr);gap:4px;display:grid}.picker-round-sizes button{color:#718071;cursor:pointer;background:#fff;border:1px solid #e1e8dc;border-radius:6px;height:30px;font-family:inherit;font-size:8px}.picker-round-sizes button:hover{border-color:#c8d8bd}.picker-round-sizes button.active{color:#1f3a29;background:var(--t-lime);border-color:#b6d957;font-weight:600}.picker-switch{cursor:pointer;background:#fff;border:1px solid #e7ede1;border-radius:9px;align-items:center;gap:8px;padding:9px 10px;display:flex}.picker-switch>input{accent-color:#467a3d;flex:none;width:14px;height:14px;margin:0}.picker-switch>span{flex-direction:column;display:flex}.picker-switch strong{color:#5a695b;font-size:8px;font-weight:600}.picker-switch small{color:#9aa49a;margin-top:1px;font-size:7px}.picker-pool{color:#6e7d6e;background:#f3f7ee;border-radius:8px;justify-content:space-between;align-items:center;padding:8px 10px;font-size:8px;display:flex}.picker-pool strong{color:#46703b;font-family:var(--t-mono);font-size:20px;line-height:1}.picker-pool small{font-family:var(--t-font);font-size:7px;font-weight:400}.picker-start{color:#1d3a28;background:var(--t-lime);cursor:pointer;border:0;border-radius:9px;justify-content:center;align-items:center;gap:6px;height:40px;font-family:inherit;font-size:10px;font-weight:600;transition:background .15s,opacity .15s;display:inline-flex}.picker-start:hover:not(:disabled){background:#d5f47c}.picker-start:disabled{opacity:.4;cursor:not-allowed}.picker-history{flex-direction:column;flex:1;min-height:0;padding-top:2px;display:flex}.picker-history>header{justify-content:space-between;align-items:center;margin-bottom:5px;display:flex}.picker-history>header strong{color:#6d7b6d;font-size:8px}.picker-history>header span{color:#a3aca2;font-family:var(--t-mono);font-size:7px}.picker-history-list{scrollbar-width:thin;scrollbar-color:#d7e0d2 transparent;border-top:1px solid #edf1e9;min-height:0;max-height:156px;overflow-y:auto}.picker-history-row{border-bottom:1px solid #f0f3ec;align-items:flex-start;gap:7px;padding:6px 2px;display:flex}.picker-history-row>span{color:#b2bbb1;font-family:var(--t-mono);font-size:7px}.picker-history-row>div{flex-direction:column;flex:1;min-width:0;display:flex}.picker-history-row strong{color:#657465;text-overflow:ellipsis;white-space:nowrap;font-size:8px;font-weight:500;overflow:hidden}.picker-history-row small{color:#a0aaa0;margin-top:1px;font-size:7px}.picker-history-row em{color:#6e923d;font-family:var(--t-mono);font-size:7px;font-style:normal}.picker-history-empty{color:#a0aaa0;margin:4px 0 0;font-size:8px}.picker-rolling{flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;padding:34px 44px;display:flex}.rolling-head{text-align:center;flex:none}.rolling-head h2{color:#f2f8ef;letter-spacing:-.03em;margin:7px 0 0;font-size:clamp(28px,3.2vw,44px);line-height:1.15}.rolling-head>p:not(.panel-eyebrow){color:#e2eee38a;margin:7px 0 0;font-size:10px}.rolling-name-grid{flex:1;grid-template-rows:repeat(4,minmax(0,1fr));grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;width:min(1120px,100%);min-height:0;margin:24px 0 20px;display:grid}.rolling-name{color:#eaf5eac7;letter-spacing:.02em;text-align:center;text-overflow:ellipsis;white-space:nowrap;background:#ffffff0b;border:1px solid #ffffff14;border-radius:10px;justify-content:center;align-items:center;min-height:0;padding:6px;font-size:clamp(17px,2vw,29px);font-weight:500;animation:.42s ease-in-out infinite alternate rolling-flicker;display:flex;overflow:hidden}.rolling-name:nth-child(3n){color:#e6ffa1;background:#c9f16913}.rolling-name:nth-child(4n){color:#b8dcff;background:#8cc8f012}.rolling-name:nth-child(5n){color:#ffc6b4;background:#ff9a7812}@keyframes rolling-flicker{0%{opacity:.58;transform:translateY(1px)scale(.985)}to{opacity:1;transform:translateY(0)scale(1)}}.rolling-stop{color:#1b3827;background:var(--t-lime);cursor:pointer;border:0;border-radius:999px;flex:none;align-items:center;gap:9px;height:48px;padding:0 24px;font-family:inherit;font-size:12px;font-weight:600;transition:transform .15s,background .15s;display:inline-flex;box-shadow:0 12px 30px #6e9b2447}.rolling-stop:hover{background:#d5f47c;transform:translateY(-1px)}.rolling-stop>span{background:#17372b1f;border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;display:inline-flex}.picker-result{flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;padding:30px 40px;display:flex;position:relative;overflow:hidden}.result-head{z-index:2;text-align:center;position:relative}.result-head h2{color:#f6fbf2;letter-spacing:-.04em;text-shadow:0 3px 24px #b1ff6424;margin:7px 0 0;font-size:clamp(32px,4vw,52px);line-height:1.08}.result-head>p:not(.panel-eyebrow){color:#e4f0e58c;margin:7px 0 0;font-size:10px}.result-name-grid{z-index:2;flex-wrap:wrap;justify-content:center;align-items:stretch;gap:12px;width:min(1040px,100%);margin:26px 0 18px;display:flex;position:relative}.result-name-card{background:radial-gradient(100% 100% at 50% 0,#c9f16929,#0000 70%),#091e16c7;border:1px solid #c9f16966;border-radius:16px;flex-direction:column;flex:170px;justify-content:center;align-items:center;gap:5px;min-width:150px;max-width:240px;padding:20px 14px;animation:.62s cubic-bezier(.16,1.3,.3,1) both result-pop;display:flex;overflow:hidden;box-shadow:0 0 #c9f16900,0 20px 40px #00000038}.result-name-card strong{color:#f4fbea;letter-spacing:.01em;text-shadow:0 2px 16px #c9f1692e;margin-top:2px;font-size:clamp(20px,2vw,28px);line-height:1.2}.result-name-card span{color:#dcebde7a;font-size:8px}.result-name-grid.count-1 .result-name-card{flex-basis:300px;max-width:340px;padding:34px 24px;animation-duration:.75s}.result-name-grid.count-1 .result-name-card strong{font-size:clamp(32px,4vw,48px)}@keyframes result-pop{0%{opacity:0;filter:blur(3px);transform:scale(.52)rotate(-4deg)}65%{opacity:1;filter:blur();transform:scale(1.04)rotate(.5deg)}to{opacity:1;transform:scale(1)rotate(0);box-shadow:0 0 0 8px #c9f16912,0 20px 40px #00000038}}.result-confetti{z-index:1;pointer-events:none;position:absolute;inset:0}.result-confetti span{opacity:.8;border-radius:2px;width:7px;height:13px;animation:1.9s ease-in forwards confetti-fall;position:absolute;top:-8%}@keyframes confetti-fall{0%{opacity:0;transform:translateY(-10vh)rotate(0)}10%{opacity:.9}to{transform:translate3d(var(--drift,0), 110vh, 0) rotate(540deg);opacity:0}}.result-award{z-index:2;background:#081812b8;border:1px solid #ffffff1c;border-radius:12px;align-items:center;gap:12px;width:min(640px,100%);padding:10px 12px;display:flex;position:relative}.award-label{flex-direction:column;flex:1;min-width:0;display:flex}.award-label span{color:#e9f2e9;font-size:9px}.award-label small{color:#e2eee370;margin-top:2px;font-size:7px}.award-stepper{align-items:stretch;gap:4px;display:flex}.award-stepper>button{color:#d8e8d8;cursor:pointer;background:#ffffff12;border:1px solid #ffffff24;border-radius:6px;width:27px;height:30px;padding:0;font-family:inherit;font-size:13px}.award-stepper>label{width:70px;position:relative}.award-stepper input{color:#f3f8ef;width:100%;height:30px;font-family:var(--t-mono);text-align:center;-moz-appearance:textfield;background:#ffffff0d;border:1px solid #ffffff24;border-radius:6px;outline:0;padding:0 16px 0 8px;font-size:12px}.award-stepper input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.award-stepper input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.award-stepper label>span{color:#e2eee36b;pointer-events:none;font-size:7px;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.award-button{color:#1d3a28;background:var(--t-lime);cursor:pointer;border:0;border-radius:6px;flex:none;align-items:center;gap:4px;height:30px;padding:0 11px;font-family:inherit;font-size:8px;font-weight:600;display:inline-flex}.award-button:disabled{opacity:.5;cursor:not-allowed}.result-actions{z-index:2;align-items:center;gap:8px;margin-top:14px;display:flex;position:relative}.result-actions button{cursor:pointer;border-radius:8px;align-items:center;gap:5px;height:34px;padding:0 13px;font-family:inherit;font-size:9px;display:inline-flex}.result-secondary{color:#ebf4ebcc;background:#ffffff0f;border:1px solid #ffffff29}.result-secondary:hover:not(:disabled){background:#ffffff1c}.result-secondary:disabled{opacity:.35;cursor:not-allowed}.result-primary{border:1px solid var(--t-lime);color:#1d3a28;background:var(--t-lime);font-weight:600}.result-primary:hover{background:#d5f47c}@media (width<=900px){.picker-overlay{padding:14px}.picker-setup{padding:16px}.picker-setup-head h2{font-size:22px}.picker-setup-body{grid-template-columns:1fr;overflow-y:auto}.picker-roster{min-height:220px;max-height:250px}.picker-settings{flex:none}.picker-history-list{max-height:110px}.rolling-name-grid{grid-template-rows:repeat(4,minmax(0,1fr));grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin:18px 0 16px}.rolling-name{font-size:18px}.picker-result{padding:24px 18px}.result-award{flex-wrap:wrap}.award-label{flex-basis:100%}}@media (width<=560px){.picker-setup-head{gap:8px}.picker-setup-head p:not(.panel-eyebrow){max-width:220px}.picker-total{padding:7px 9px}.picker-total b{font-size:18px}.picker-roster{min-height:190px;max-height:210px}.picker-round-sizes button{height:28px;font-size:7px}.rolling-head h2{font-size:24px}.rolling-name-grid{grid-template-rows:repeat(4,minmax(0,1fr));grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.rolling-name{font-size:17px}.rolling-stop{height:42px;font-size:10px}.result-name-grid{gap:8px;margin:18px 0 14px}.result-name-card{flex-basis:130px;min-width:125px;padding:14px 10px}.result-name-card strong{font-size:18px}.result-award{gap:8px}.award-label{flex-basis:100%}.award-stepper,.award-stepper>label{flex:1}.result-actions{flex-wrap:wrap;justify-content:center}}@media (width<=900px){.picker-setup{padding-top:52px}.picker-close{top:12px;right:12px}}.points-pill{color:#1d3629;background:var(--t-lime);border:1px solid #b9e25a;border-radius:11px;align-items:center;gap:5px;height:40px;padding:0 13px;font-size:11px;display:inline-flex}.points-pill strong{font-family:var(--t-mono);letter-spacing:-.03em;font-size:14px}.points-pill small{color:#597635;font-size:8px}.points-pill.small{color:#526b2d;background:#f2f9e0;border-color:#e3efc6;border-radius:6px;height:23px;padding:0 8px;font-size:9px}.plaza-hero{color:#eff7f2;background:radial-gradient(90% 120% at 100% 0,#c9f16929,#0000 50%),radial-gradient(80% 100% at 0 100%,#4c8fce1f,#0000 45%),#0d251f;border-radius:22px;gap:24px;min-height:246px;padding:28px 30px;display:flex;position:relative;overflow:hidden;box-shadow:0 20px 48px #091e1829}.plaza-hero-copy{z-index:3;flex-direction:column;flex:1;align-items:flex-start;min-width:0;display:flex;position:relative}.plaza-hero-tag{color:#1c3327;background:var(--t-lime);border-radius:5px;align-items:center;gap:5px;padding:5px 8px;font-size:8px;font-weight:700;display:inline-flex}.plaza-hero h2{letter-spacing:-.045em;max-width:570px;margin:15px 0 8px;font-size:30px;line-height:1.25}.plaza-hero-copy>p{color:#91aa9d;max-width:520px;margin:0;font-size:11px;line-height:1.7}.plaza-hero-meta{flex-wrap:wrap;gap:13px;margin-top:18px;display:flex}.plaza-hero-meta span{color:#9bb1a6;align-items:center;gap:5px;font-size:9px;display:inline-flex}.plaza-hero-meta .plaza-points{color:var(--t-lime);font-weight:600}.plaza-hero-actions{align-items:center;gap:12px;margin-top:auto;padding-top:20px;display:flex}.hero-progress{color:#7e998c;font-size:8px}.plaza-hero-art{justify-content:center;align-items:center;width:32%;min-width:250px;display:flex;position:relative}.hero-coin{z-index:4;color:#172d22;background:var(--t-lime);border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:1px;width:76px;height:76px;display:flex;position:absolute;top:8px;right:10px;transform:rotate(7deg);box-shadow:0 0 0 9px #c9f16914,0 0 0 20px #c9f1690a,0 16px 36px #00000029}.hero-coin b{font-family:var(--t-mono);font-size:13px;line-height:1}.hero-chart{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffff09;border:1px solid #ffffff1a;border-radius:14px;align-items:flex-end;gap:9px;width:220px;height:150px;padding:16px 16px 12px;display:flex;transform:rotate(-2deg)}.hero-chart span{background:linear-gradient(180deg, var(--t-lime), #c9f16942);border-radius:4px 4px 2px 2px;flex:1}.hero-chart span:nth-child(2n){background:linear-gradient(#83b8e2,#83b8e233)}.hero-art-label{color:#537366;font-family:var(--t-mono);letter-spacing:.16em;font-size:6px;position:absolute;bottom:5px;right:18px}.plaza-summary-strip{background:var(--t-surface);border:1px solid var(--t-border);box-shadow:var(--t-shadow-sm);border-radius:14px;align-items:center;gap:0;margin:16px 0 2px;padding:9px 8px;display:flex}.plaza-summary-strip>div:not(.plaza-summary-quote){border-left:1px solid #eef2ea;flex:1;align-items:center;gap:9px;padding:2px 16px;display:flex}.plaza-summary-strip>div:first-child{border-left:0}.plaza-summary-strip strong{letter-spacing:-.03em;align-items:baseline;gap:3px;font-size:17px;display:flex}.plaza-summary-strip strong small{color:#8f9b90;letter-spacing:0;font-size:8px;font-weight:400}.plaza-summary-quote{color:#8b978c;border-left:1px solid #eef2ea;flex:0 340px;align-items:center;gap:6px;margin-left:auto;padding:3px 12px;font-size:8px;line-height:1.55;display:flex}.plaza-summary-quote svg{color:#88a540;flex:none}.plaza-toolbar{margin-top:18px}.activity-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;display:grid}.activity-card{background:var(--t-surface);border:1px solid var(--t-border);min-width:0;box-shadow:var(--t-shadow-sm);border-radius:17px;transition:transform .2s,box-shadow .2s;overflow:hidden}.activity-card:hover{transform:translateY(-3px);box-shadow:0 18px 40px #0d1f1b17}.activity-visual{height:96px;padding:12px;position:relative;overflow:hidden}.activity-visual.tone-lime{color:#3b5b12;background:linear-gradient(125deg,#d6f38a,#edfbc5)}.activity-visual.tone-coral{color:#7e3e2a;background:linear-gradient(125deg,#f6c1ad,#fbe4da)}.activity-visual.tone-violet{color:#4e418e;background:linear-gradient(125deg,#d6cdf7,#ece7fc)}.activity-visual.tone-sky{color:#2e5677;background:linear-gradient(125deg,#c3def5,#e6f1fb)}.activity-visual.tone-sand{color:#76551d;background:linear-gradient(125deg,#efd9a5,#f9edce)}.activity-type{z-index:3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#ffffff94;border-radius:5px;align-items:center;gap:4px;height:21px;padding:0 7px;font-size:8px;font-weight:600;display:inline-flex;position:relative}.activity-type.solid{color:#5d6b53;background:#f4f7ef;height:23px}.activity-type.solid.tone-lime{color:#4b6e18;background:#f0f9dd}.activity-type.solid.tone-coral{color:#9a4d35;background:#fdf0ea}.activity-type.solid.tone-violet{color:#5e4ba7;background:#f2eefc}.activity-type.solid.tone-sky{color:#336386;background:#edf5fb}.featured-flag{z-index:3;color:#f4f9f5;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#0e2b21bd;border-radius:5px;align-items:center;height:20px;padding:0 7px;font-size:7px;font-weight:500;display:inline-flex;position:absolute;top:12px;right:12px}.activity-points{z-index:3;color:currentColor;font-family:var(--t-mono);letter-spacing:-.03em;align-items:center;gap:4px;font-size:14px;font-weight:700;display:inline-flex;position:absolute;bottom:11px;left:12px}.activity-visual-glyph{color:#10231c17;font-family:var(--t-mono);letter-spacing:-.1em;-webkit-user-select:none;user-select:none;font-size:82px;font-weight:700;line-height:1;position:absolute;bottom:-20px;right:11px}.activity-body{padding:14px 15px 15px}.activity-title-row{align-items:flex-start;gap:8px;display:flex}.activity-body h3{letter-spacing:-.02em;flex:1;margin:0;font-size:13px;line-height:1.45}.submitted-tag{color:#35704d;background:#eaf6ee;border-radius:4px;flex:none;align-items:center;gap:3px;height:19px;padding:0 6px;font-size:7px;font-weight:600;display:inline-flex}.activity-body>p{color:#8d998e;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:6px 0 0;font-size:9px;line-height:1.65;display:-webkit-box;overflow:hidden}.activity-meta{color:#99a499;align-items:center;gap:13px;margin-top:11px;font-size:8px;display:flex}.activity-meta span{align-items:center;gap:4px;display:inline-flex}.activity-capacity{background:#f0f3ec;border-radius:99px;height:3px;margin-top:8px;overflow:hidden}.activity-capacity span{border-radius:inherit;background:#bfd98b;height:100%;display:block}.activity-foot{border-top:1px solid #f0f3ec;justify-content:space-between;align-items:center;gap:10px;margin-top:11px;padding-top:10px;display:flex}.activity-teacher{color:#6d7a6f;align-items:center;gap:6px;font-size:9px;display:inline-flex}.activity-btn{color:var(--t-green);cursor:pointer;background:0 0;border:0;align-items:center;gap:4px;padding:0;font-family:inherit;font-size:9px;font-weight:600;display:inline-flex}.activity-btn:hover{color:var(--t-green-dark)}.type-picker{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.type-option{border:1px solid var(--t-border);color:#7f8c81;cursor:pointer;background:#fbfcf8;border-radius:9px;flex-direction:column;justify-content:center;align-items:center;gap:4px;height:54px;font-family:inherit;font-size:9px;transition:background .15s,border-color .15s,color .15s;display:flex}.type-option:hover{background:#f6f9f1}.type-option.active{color:#36551a;background:#f3f9e3;border-color:#bcd968;box-shadow:inset 0 0 0 1px #bcd968}.activity-detail-top{flex-wrap:wrap;align-items:center;gap:7px;margin-bottom:12px;display:flex}.activity-detail-desc{color:#6f7c71;margin:0 0 16px;font-size:11px;line-height:1.75}.requirement-box{background:#f7f9f3;border:1px solid #edf1e9;border-radius:11px;padding:15px}.requirement-box h3{margin:0 0 5px;font-size:12px}.requirement-box>p:last-child{color:#7e8a7f;margin:0;font-size:10px;line-height:1.75}.submission-box{margin-top:15px}.submission-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;display:flex}.submission-head h3{margin:0;font-size:12px}.upload-zone{color:#7b887d;text-align:left;cursor:pointer;background:#fbfcf8;border:1px dashed #d1dccb;border-radius:9px;align-items:center;gap:10px;width:100%;margin-top:8px;padding:12px;font-family:inherit;display:flex}.upload-zone:hover{background:#f7faf2;border-color:#b7cbb0}.upload-zone>span{flex-direction:column;display:flex}.upload-zone strong{color:#526052;font-size:10px;font-weight:600}.upload-zone small{color:#9ba59b;margin-top:2px;font-size:8px}.submission-done{color:#3d7250;background:#f0f8f2;border-radius:10px;align-items:center;gap:10px;padding:14px;display:flex}.submission-done strong{font-size:11px}.submission-done p{color:#6e8a76;margin:2px 0 0;font-size:9px}.teacher-submission-summary{grid-template-columns:repeat(3,1fr);gap:8px;margin-top:15px;display:grid}.submission-stat{background:#f7f9f3;border-radius:9px;flex-direction:column;padding:12px;display:flex}.submission-stat strong{letter-spacing:-.03em;font-size:18px}.submission-stat span{color:#929e93;margin-top:2px;font-size:8px}@media (width<=1320px){.activity-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=1060px){.plaza-hero-art{display:none}.plaza-summary-strip{flex-wrap:wrap;gap:8px;padding:12px}.plaza-summary-strip>div:not(.plaza-summary-quote){border-left:0;flex:40%;padding:3px 8px}.plaza-summary-quote{border-top:1px solid #eef2ea;border-left:0;flex-basis:100%;margin-left:0;padding:6px 8px}}@media (width<=760px){.plaza-hero{min-height:230px;padding:22px 20px}.plaza-hero h2{font-size:24px}.plaza-hero-actions{flex-wrap:wrap}.activity-grid{grid-template-columns:1fr}.type-picker{grid-template-columns:1fr 1fr}}.balance-hero{color:#eef7f0;background:radial-gradient(80% 120% at 100% 0,#c9f16933,#0000 55%),radial-gradient(80% 100% at 0 100%,#4c8fce26,#0000 42%),#0b231c;border-radius:22px;align-items:stretch;gap:24px;min-height:190px;padding:26px 30px;display:flex;position:relative;overflow:hidden;box-shadow:0 20px 48px #091e1829}.balance-main{z-index:2;flex-direction:column;flex:1;justify-content:center;min-width:0;display:flex;position:relative}.balance-top{align-items:center;gap:12px;display:flex}.balance-label{color:#9bb2a6;font-family:var(--t-mono);letter-spacing:.13em;align-items:center;gap:5px;font-size:7px;display:inline-flex}.level-chip{color:#1a3025;background:var(--t-lime);border-radius:5px;align-items:center;height:21px;padding:0 8px;font-size:7px;font-weight:700;display:inline-flex}.balance-number{font-family:var(--t-mono);letter-spacing:-.065em;margin-top:10px;font-size:52px;font-weight:700;line-height:1}.balance-number small{color:#90a89b;font-family:var(--t-font);letter-spacing:0;margin-left:5px;font-size:10px;font-weight:400}.balance-level{max-width:330px;margin-top:17px}.balance-level-text{color:#829c8e;justify-content:space-between;align-items:center;gap:10px;font-size:8px;display:flex}.balance-level-text b{color:var(--t-lime);font-family:var(--t-mono);font-size:9px}.balance-track{background:#ffffff17;border-radius:99px;height:5px;margin-top:6px;overflow:hidden}.balance-track span{border-radius:inherit;background:var(--t-lime);height:100%;display:block}.balance-side{z-index:2;border-left:1px solid #ffffff17;flex-direction:column;flex:none;justify-content:center;width:310px;padding-left:24px;display:flex;position:relative}.balance-side-label{color:#7e988a;font-size:8px}.next-reward{align-items:center;gap:10px;margin-top:9px;display:flex}.next-reward-icon{color:#172d22;background:var(--t-lime);border-radius:11px;flex:none;justify-content:center;align-items:center;width:46px;height:46px;display:inline-flex}.next-reward>div{flex-direction:column;display:flex}.next-reward strong{font-size:11px}.next-reward p{color:#8ba498;margin:3px 0 0;font-size:8px}.next-reward p b{color:var(--t-lime);font-family:var(--t-mono)}.balance-side-stats{color:#809a8d;border-top:1px solid #ffffff14;gap:16px;margin-top:15px;padding-top:12px;font-size:8px;display:flex}.balance-side-stats b{color:#d8e7de;font-family:var(--t-mono);margin-right:2px;font-size:11px}.balance-orbit{pointer-events:none;border:1px solid #c9f1691f;border-radius:50%;width:220px;height:220px;position:absolute;top:-110px;right:-80px}.balance-orbit.orbit-b{border-color:#c9f1690f;width:330px;height:330px;top:-165px;right:-135px}.mall-admin-hero{color:#eef7f0;background:radial-gradient(80% 130% at 100% 0,#c9f16926,#0000 52%),#0c231d;border-radius:22px;align-items:stretch;gap:28px;padding:26px 30px;display:flex;box-shadow:0 20px 48px #091e1824}.mall-admin-copy{flex:1;min-width:0}.mall-admin-copy h2{letter-spacing:-.045em;margin:9px 0 8px;font-size:27px;line-height:1.3}.mall-admin-copy>p{color:#8ba397;max-width:430px;margin:0;font-size:10px;line-height:1.75}.mall-admin-stats{background:#ffffff14;border-radius:12px;flex:none;grid-template-columns:1fr 1fr;gap:1px;width:330px;display:grid;overflow:hidden}.mall-admin-stats>div{background:#ffffff09;flex-direction:column;padding:14px;display:flex}.mall-admin-stats span{color:#8ba397;font-size:8px}.mall-admin-stats strong{font-family:var(--t-mono);letter-spacing:-.04em;margin-top:4px;font-size:22px}.mall-admin-stats strong small{color:#7f988b;font-family:var(--t-font);margin-left:2px;font-size:8px;font-weight:400}.mall-admin-alert{color:#e9dbb7;background:#ffffff0e;border:1px solid #ffffff14;border-radius:10px;flex:none;align-items:center;gap:9px;width:280px;padding:12px;display:flex}.mall-admin-alert>div{flex-direction:column;flex:1;display:flex}.mall-admin-alert strong{font-size:9px}.mall-admin-alert span{color:#a49370;margin-top:2px;font-size:7px}.mall-admin-alert button{color:var(--t-lime);cursor:pointer;background:0 0;border:0;padding:0;font-family:inherit;font-size:8px;font-weight:600}.mall-summary-strip{background:var(--t-surface);border:1px solid var(--t-border);box-shadow:var(--t-shadow-sm);border-radius:14px;align-items:center;gap:0;margin:16px 0 0;padding:9px 8px;display:flex}.mall-summary-strip>div:not(.mall-summary-quote){border-left:1px solid #eef2ea;flex:1;align-items:center;gap:9px;padding:2px 16px;display:flex}.mall-summary-strip>div:first-child{border-left:0}.mall-summary-strip strong{letter-spacing:-.03em;align-items:baseline;gap:3px;font-size:17px;display:flex}.mall-summary-strip strong small{color:#8f9b90;letter-spacing:0;font-size:8px;font-weight:400}.mall-summary-quote{color:#8b978c;border-left:1px solid #eef2ea;flex:0 350px;align-items:center;gap:6px;margin-left:auto;padding:3px 12px;font-size:8px;line-height:1.55;display:flex}.mall-summary-quote svg{color:#88a540;flex:none}.mall-toolbar{margin-top:18px}.product-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}.product-card{background:var(--t-surface);border:1px solid var(--t-border);min-width:0;box-shadow:var(--t-shadow-sm);border-radius:16px;transition:transform .2s,box-shadow .2s;overflow:hidden}.product-card:hover{transform:translateY(-3px);box-shadow:0 18px 40px #0d1f1b17}.product-card.soldout{opacity:.68}.product-visual{height:124px;padding:12px;position:relative;overflow:hidden}.product-visual.tone-lime{color:#385615;background:linear-gradient(130deg,#d4f18a,#eefbc9)}.product-visual.tone-sky{color:#2e5677;background:linear-gradient(130deg,#c3def5,#e9f3fb)}.product-visual.tone-coral{color:#7c3e2a;background:linear-gradient(130deg,#f6c1ad,#fbe5db)}.product-visual.tone-violet{color:#4e418e;background:linear-gradient(130deg,#d5ccf7,#ede8fc)}.product-visual.tone-sand{color:#76551d;background:linear-gradient(130deg,#efd9a5,#f9edcd)}.product-tag{z-index:3;color:#eef7f2;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#0c231db8;border-radius:5px;align-items:center;height:19px;padding:0 7px;font-size:7px;font-weight:600;display:inline-flex;position:absolute;top:10px;right:10px}.product-category{z-index:3;opacity:.58;font-size:7px;font-weight:600;position:relative}.product-art{z-index:2;color:#eef7ef;background:#0c231dd6;border-radius:17px;justify-content:center;align-items:center;width:62px;height:62px;display:inline-flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-38%);box-shadow:0 12px 30px #0c231d33}.product-grid-lines{opacity:.6;background-image:linear-gradient(#10231c0e 1px,#0000 1px),linear-gradient(90deg,#10231c0e 1px,#0000 1px);background-size:18px 18px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(110deg,#0000,#000 48%,#0000);mask-image:linear-gradient(110deg,#0000,#000 48%,#0000)}.product-serial{font-family:var(--t-mono);letter-spacing:.1em;opacity:.42;font-size:6px;position:absolute;bottom:8px;right:10px}.product-body{padding:12px 13px 13px}.product-body h3{letter-spacing:-.01em;white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:11px;line-height:1.4;overflow:hidden}.product-body>p{color:#929e93;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:4px 0 0;font-size:8px;line-height:1.55;display:-webkit-box;overflow:hidden}.product-price-row{border-top:1px solid #f2f5ef;justify-content:space-between;align-items:center;gap:8px;margin-top:10px;padding-top:9px;display:flex}.product-price{color:#506348;font-family:var(--t-mono);letter-spacing:-.03em;align-items:center;gap:3px;font-size:14px;font-weight:700;display:inline-flex}.product-price small{color:#9aa59a;font-family:var(--t-font);margin-left:1px;font-size:7px;font-weight:400}.product-stock{color:#9aa59a;font-size:7px}.product-stock.low{color:#b1763a}.product-action{color:#f1f8f3;background:var(--t-ink);cursor:pointer;border:0;border-radius:7px;justify-content:center;align-items:center;gap:5px;width:100%;height:31px;margin-top:9px;font-family:inherit;font-size:9px;font-weight:500;transition:background .15s;display:flex}.product-action:hover:not(:disabled){background:#1b3b30}.product-action:disabled{color:#9ea99d;cursor:not-allowed;background:#f1f4ed}.product-action.edit{color:#57655b;background:#f6f9f1;border:1px solid #eaf0e5}.product-action.edit:hover{background:#eef4e8}.redemption-panel{margin-top:18px}.redemption-list{flex-direction:column;display:flex}.redemption-row{border-top:1px solid #f2f5ef;align-items:center;gap:10px;padding:10px 0;display:flex}.redemption-row:first-child{border-top:0}.redemption-icon{color:#597051;background:#f4f8ec;border-radius:9px;flex:none;justify-content:center;align-items:center;width:33px;height:33px;display:inline-flex}.redemption-row>div{flex-direction:column;flex:1;display:flex}.redemption-row strong{font-size:10px}.redemption-row>div span{color:#9ba59b;margin-top:2px;font-size:8px}.redemption-points{color:#9b654b;font-family:var(--t-mono);font-size:9px}.empty-inline{color:#9aa59a;text-align:center;padding:20px 0;font-size:10px}.records-panel{margin-top:18px}.records-table{border-top:1px solid #eef1ea}.records-head,.records-row{grid-template-columns:1.2fr 1.7fr .7fr .9fr .9fr 90px;align-items:center;gap:12px;padding:0 8px;display:grid}.records-head{color:#9aa49a;border-bottom:1px solid #eef1ea;min-height:36px;font-size:8px}.records-row{color:#556359;border-bottom:1px solid #f2f5ef;min-height:51px;font-size:10px}.records-row:last-child{border-bottom:0}.record-student{color:var(--t-ink);align-items:center;gap:7px;font-weight:500;display:flex}.record-avatar{color:#436045;background:#e6f0da;border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;font-size:9px;font-weight:600;display:inline-flex}.record-points{color:#9b654b;font-family:var(--t-mono);font-weight:600}.record-action{border:1px solid var(--t-border);color:#647267;cursor:pointer;background:#fff;border-radius:6px;height:26px;font-family:inherit;font-size:8px}.record-action:hover{background:#f7f9f3}.redeem-preview{background:#f7f9f3;border-radius:12px;align-items:center;gap:13px;padding:13px;display:flex}.redeem-icon{border-radius:14px;flex:none;justify-content:center;align-items:center;width:58px;height:58px;display:inline-flex}.redeem-preview h3{margin:0;font-size:13px}.redeem-preview p{color:#8e9a8f;margin:3px 0 0;font-size:9px;line-height:1.55}.redeem-calc{border:1px solid #edf1e9;border-radius:11px;align-items:center;gap:12px;margin-top:15px;padding:14px;display:flex}.redeem-calc>div:not(.redeem-minus):not(.redeem-equals){flex-direction:column;flex:1;align-items:center;display:flex}.redeem-calc span{color:#95a095;font-size:8px}.redeem-calc strong{font-family:var(--t-mono);letter-spacing:-.03em;margin-top:3px;font-size:19px}.redeem-calc strong.coral{color:#b15a3e}.redeem-minus,.redeem-equals{color:#b1bbb0;font-family:var(--t-mono);font-size:13px}.redeem-note{color:#8d998e;align-items:flex-start;gap:5px;margin:12px 0 0;font-size:8px;line-height:1.6;display:flex}.redeem-note svg{flex:none;margin-top:1px}@media (width<=1380px){.product-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.mall-admin-hero{flex-wrap:wrap}.mall-admin-stats{width:260px}.mall-admin-alert{width:240px}}@media (width<=1180px){.balance-side{width:260px}.mall-admin-hero{gap:16px}.mall-admin-copy{flex-basis:100%}.mall-admin-stats{flex:1;width:auto}.mall-admin-alert{flex:0 0 280px}}@media (width<=980px){.balance-hero{flex-direction:column}.balance-side{border-top:1px solid #ffffff17;border-left:0;width:100%;padding:16px 0 0}.mall-summary-strip{flex-wrap:wrap;gap:8px;padding:12px}.mall-summary-strip>div:not(.mall-summary-quote){border-left:0;flex:40%;padding:3px 8px}.mall-summary-quote{border-top:1px solid #eef2ea;border-left:0;flex-basis:100%;margin-left:0;padding:6px 8px}.product-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){.balance-hero{padding:22px 20px}.balance-number{font-size:44px}.mall-admin-hero{padding:22px 20px}.mall-admin-copy h2{font-size:22px}.mall-admin-stats{flex-basis:100%;width:100%}.mall-admin-alert{flex:1;width:auto}.records-head,.records-row{grid-template-columns:1fr 1.2fr .6fr .8fr 80px}.records-head span:nth-child(4),.records-row>span:nth-child(4){display:none}.redeem-calc{gap:6px;padding:12px 8px}.redeem-calc strong{font-size:16px}}@media (width<=520px){.product-grid{grid-template-columns:1fr}}.mall-page .page-actions{flex-wrap:wrap;justify-content:flex-end}.product-manage-row{gap:6px;margin-top:9px;display:flex}.product-manage-row .product-action{flex:1;margin-top:0}.product-action.delete{color:#a7553d;background:#fdf4f0;border:1px solid #f0d9cf;flex:0 0 70px}.product-action.delete:hover{background:#fbeae3}.product-form{gap:14px}.product-form .t-textarea{min-height:82px}.product-tone-grid{flex-wrap:wrap;gap:6px;display:flex}.product-tone-option{color:#748075;cursor:pointer;background:#fbfcf8;border:1px solid #e5ebe1;border-radius:8px;align-items:center;gap:6px;height:34px;padding:0 10px 0 6px;font-family:inherit;font-size:9px;display:inline-flex}.product-tone-option i{border:1px solid #0d1f1b0f;border-radius:5px;width:20px;height:20px}.product-tone-option.tone-lime i{background:#cfee86}.product-tone-option.tone-sky i{background:#c9e0f5}.product-tone-option.tone-coral i{background:#f7c8b9}.product-tone-option.tone-violet i{background:#d9d1fa}.product-tone-option.tone-sand i{background:#efddb2}.product-tone-option.active{color:#405a3c;background:#f6faef;border-color:#9bbc85;box-shadow:0 0 0 2px #6b914d14}.product-icon-grid{flex-wrap:wrap;gap:6px;display:flex}.product-icon-option{color:#748075;cursor:pointer;background:#fbfcf8;border:1px solid #e5ebe1;border-radius:8px;justify-content:center;align-items:center;width:38px;height:38px;padding:0;display:inline-flex}.product-icon-option:hover{color:#3e5740;background:#f3f8ed}.product-icon-option.active{color:#2b4b37;background:var(--t-lime);border-color:#b6d957}.product-delete-confirm{text-align:center;padding:4px 8px 8px}.product-delete-icon{color:#b05e45;background:#fdf0eb;border-radius:15px;justify-content:center;align-items:center;width:54px;height:54px;margin:0 auto 12px;display:inline-flex}.product-delete-confirm h3{letter-spacing:-.02em;margin:0;font-size:15px}.product-delete-confirm p{color:#8a978b;max-width:280px;margin:7px auto 0;font-size:10px;line-height:1.7}.mall-delete-btn{color:#fff8f5;cursor:pointer;background:#b45f47;border:0;border-radius:10px;align-items:center;gap:5px;height:40px;padding:0 14px;font-family:inherit;font-size:11px;font-weight:500;display:inline-flex}.mall-delete-btn:hover{background:#9f5039}.category-manager{flex-direction:column;gap:10px;display:flex}.category-manager-tip{color:#7e8b7e;background:#f6f9f1;border-radius:8px;align-items:flex-start;gap:6px;margin:0;padding:9px 10px;font-size:9px;line-height:1.6;display:flex}.category-manager-tip svg{flex:none;margin-top:1px}.category-rows{scrollbar-width:thin;scrollbar-color:#d7e0d2 transparent;flex-direction:column;gap:6px;max-height:280px;display:flex;overflow-y:auto}.category-row{grid-template-columns:minmax(0,1fr) 48px 44px 30px;align-items:center;gap:6px;display:grid}.category-row .t-input{height:36px;min-height:36px;padding-top:7px;padding-bottom:7px}.category-count{color:#9aa49a;text-align:right;font-size:8px}.category-save{color:#5f7459;cursor:pointer;background:#f8fbf3;border:1px solid #e0e8da;border-radius:6px;height:32px;font-family:inherit;font-size:8px}.category-save:disabled{opacity:.35;cursor:not-allowed}.category-delete{color:#b05e45;cursor:pointer;background:#fdf7f4;border:1px solid #f0ddd7;border-radius:6px;justify-content:center;align-items:center;width:30px;height:32px;padding:0;display:inline-flex}.category-delete:disabled{opacity:.3;cursor:not-allowed}.category-add-row{border-top:1px solid #eef2ea;gap:7px;padding-top:10px;display:flex}.category-add-row .t-input{flex:1;min-width:0}.category-add-row .btn-secondary{flex:none;height:40px;padding:0 12px;font-size:10px}.mall-empty{margin-top:16px}.next-reward-empty{color:#9aa59a;margin:10px 0 0;font-size:9px}@media (width<=760px){.mall-page .page-actions{justify-content:flex-start}.product-manage-row .product-action.delete{flex-basis:60px}.category-row{grid-template-columns:minmax(0,1fr) 40px 40px 28px;gap:4px}.category-count{font-size:7px}}.product-kind-switch{grid-template-columns:1fr 1fr;gap:8px;display:grid}.product-kind-option{color:#7c887d;text-align:left;cursor:pointer;background:#fbfcf8;border:1px solid #e3eae0;border-radius:9px;align-items:center;gap:9px;min-height:52px;padding:8px 11px;font-family:inherit;display:flex}.product-kind-option>span{flex-direction:column;display:flex}.product-kind-option strong{color:#5c6a5e;font-size:9px;font-weight:600}.product-kind-option small{color:#9da79d;margin-top:2px;font-size:7px}.product-kind-option.active{color:#39573e;background:#f1f8e6;border-color:#a9c88d;box-shadow:0 0 0 2px #6b914d0f}.product-kind-option.active strong{color:#2f4b36}.digital-product-box{background:#f8fbf3;border:1px dashed #d4e2ca;border-radius:10px;flex-direction:column;gap:10px;padding:12px;display:flex}.digital-file-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.digital-upload-btn{color:#4f6b43;cursor:pointer;background:#fff;border:1px solid #d8e5ce;border-radius:7px;align-items:center;gap:5px;height:34px;padding:0 11px;font-family:inherit;font-size:9px;display:inline-flex}.digital-upload-btn:hover{background:#f1f8e7}.digital-file-input{display:none}.digital-file-row>small{color:#98a398;font-size:7px}.digital-file-chip{color:#4b654f;text-overflow:ellipsis;white-space:nowrap;background:#eaf4df;border-radius:6px;align-items:center;gap:5px;max-width:280px;height:32px;padding:0 6px 0 9px;font-size:8px;display:inline-flex;overflow:hidden}.digital-file-chip button{color:#7e927d;cursor:pointer;background:0 0;border:0;border-radius:4px;flex:none;justify-content:center;align-items:center;width:20px;height:20px;padding:0;display:inline-flex}.digital-file-chip button:hover{background:#3d5c341a}.digital-hint{color:#95a193;margin:0;font-size:7px;line-height:1.6}.product-digital-line{color:#4e7b50;align-items:center;gap:4px;margin:5px 0 0;font-size:7px;display:flex}.product-digital-line+p{margin-top:4px}.redemption-open{color:#3f6d4a;background:#eef7e7;border-radius:5px;flex:none;align-items:center;gap:2px;height:24px;padding:0 7px;font-size:8px;text-decoration:none;display:inline-flex}.redemption-open:hover{background:#e2f1d7}.progress-stat-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:11px;margin-bottom:17px;display:grid}.progress-stat{background:var(--t-surface);border:1px solid var(--t-border);box-shadow:var(--t-shadow-sm);border-radius:14px;align-items:flex-start;gap:10px;padding:15px;display:flex;position:relative}.progress-stat-icon{border-radius:9px;flex:none;justify-content:center;align-items:center;width:34px;height:34px;display:inline-flex}.progress-stat>div{flex-direction:column;min-width:0;display:flex}.progress-stat>div>span{color:#8d998e;font-size:8px}.progress-stat strong{letter-spacing:-.045em;margin-top:2px;font-size:21px;line-height:1.15}.progress-stat strong small{color:#8b978c;letter-spacing:0;margin-left:2px;font-size:8px;font-weight:400}.progress-stat em{color:#9ba59b;font-size:7px;font-style:normal;position:absolute;bottom:10px;right:11px}.progress-stat em.positive{color:#548a63}.progress-stat em.coral{color:#b36b50}.progress-overview-grid{grid-template-columns:1.12fr .88fr;gap:15px;margin-bottom:17px;display:grid}.distribution-panel{padding:20px}.distribution-body{align-items:center;gap:30px;padding:3px 2px 2px;display:flex}.donut-chart{border-radius:50%;flex:none;justify-content:center;align-items:center;width:150px;height:150px;display:flex;position:relative}.donut-chart:before{content:"";background:#fff;border-radius:50%;position:absolute;inset:20px;box-shadow:inset 0 0 0 1px #f3f5ef}.donut-chart>span{z-index:1;flex-direction:column;align-items:center;display:flex;position:relative}.donut-chart strong{font-family:var(--t-mono);letter-spacing:-.06em;font-size:28px;line-height:1}.donut-chart strong small{font-size:10px}.donut-chart>span>small{color:#9ca69b;margin-top:4px;font-size:8px}.distribution-legend{flex-direction:column;flex:1;min-width:0;display:flex}.distribution-legend>div{border-top:1px solid #f2f5ef;align-items:center;gap:8px;padding:7px 0;display:flex}.distribution-legend>div:first-child{border-top:0}.legend-swatch{border-radius:2px;flex:none;width:8px;height:8px}.distribution-legend>div>span:nth-child(2){color:#5a675d;flex-direction:column;flex:1;font-size:9px;display:flex}.distribution-legend small{color:#9da79c;margin-top:1px;font-size:7px}.distribution-legend b{color:#657267;font-family:var(--t-mono);font-size:9px;font-weight:500}.focus-panel{padding:20px}.focus-list{flex-direction:column;display:flex}.focus-row{border-top:1px solid #f2f5ef;align-items:center;gap:9px;padding:9px 0;display:flex}.focus-row:first-child{border-top:0}.focus-info{flex-direction:column;flex:1;min-width:0;display:flex}.focus-info strong{font-size:10px}.focus-info span{color:#99a499;white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:8px;overflow:hidden}.focus-row button{border:1px solid var(--t-border);color:#647267;cursor:pointer;background:#fff;border-radius:6px;height:25px;padding:0 8px;font-family:inherit;font-size:8px}.focus-row button:hover{background:#f7f9f3}.focus-note{color:#75824f;background:#f7fae9;border-radius:8px;align-items:flex-start;gap:5px;margin:12px 0 0;padding:9px;font-size:8px;line-height:1.6;display:flex}.focus-note svg{color:#8ca843;flex:none;margin-top:1px}.focus-note b{color:#52622f}.progress-table-panel{padding:20px}.progress-table-head{align-items:flex-end;margin-bottom:13px}.table-tools{align-items:center;gap:7px;display:flex}.progress-table .data-table-head,.progress-table .data-table-row{grid-template-columns:minmax(145px,1.35fr) 1.05fr 1.05fr .6fr .5fr .85fr .9fr 18px;gap:10px}.progress-table .data-table-row{min-height:54px}.unit-cell{color:#7c897d;white-space:nowrap;font-size:9px}.student-progress-hero{color:#edf6f0;background:radial-gradient(95% 130% at 100% 0,#c9f1692e,#0000 50%),radial-gradient(90% 110% at 0 100%,#4c8fce1f,#0000 44%),#0c241d;border-radius:22px;align-items:center;gap:34px;min-height:250px;padding:28px 32px;display:flex;position:relative;overflow:hidden;box-shadow:0 20px 48px #091e1829}.student-progress-ring-wrap{flex:none;justify-content:center;align-items:center;width:176px;height:176px;display:flex;position:relative}.student-progress-ring{background:conic-gradient(var(--t-lime) 0 93%, #ffffff1a 93% 100%);border-radius:50%;justify-content:center;align-items:center;width:158px;height:158px;display:flex;position:relative;transform:rotate(-28deg)}.student-progress-ring:before{content:"";background:#0c241d;border-radius:50%;position:absolute;inset:11px}.student-progress-ring>span{z-index:1;flex-direction:column;align-items:center;display:flex;position:relative;transform:rotate(28deg)}.student-progress-ring strong{font-family:var(--t-mono);letter-spacing:-.07em;font-size:36px;line-height:1}.student-progress-ring strong small{font-size:12px}.student-progress-ring>span>small{color:#8ea79a;margin-top:4px;font-size:8px}.ring-orbit{border:1px solid #c9f16926;border-radius:50%;position:absolute}.ring-orbit.orbit-one{inset:-6px}.ring-orbit.orbit-two{border-color:#c9f1690f;inset:-18px}.student-progress-copy{flex:1;min-width:0}.student-progress-tag{color:#1d3427;background:var(--t-lime);border-radius:5px;align-items:center;gap:5px;height:22px;padding:0 8px;font-size:8px;font-weight:600;display:inline-flex}.student-progress-copy h2{letter-spacing:-.05em;margin:13px 0 8px;font-size:30px;line-height:1.3}.student-progress-copy>p{color:#8da69a;max-width:440px;margin:0;font-size:10px;line-height:1.75}.student-progress-actions{align-items:center;gap:10px;margin-top:17px;display:flex}.student-progress-actions>span{color:#7c978a;font-size:8px}.student-progress-side{background:#ffffff17;border-radius:11px;flex:none;grid-template-columns:1fr 1fr;gap:1px;width:220px;display:grid;overflow:hidden}.student-progress-side>div{background:#ffffff0a;flex-direction:column;padding:11px;display:flex}.student-progress-side span{color:#839c8f;font-size:7px}.student-progress-side strong{font-family:var(--t-mono);letter-spacing:-.03em;margin-top:2px;font-size:17px}.student-progress-grid{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:18px;margin-top:18px;display:grid}.student-progress-main,.student-progress-side-col{flex-direction:column;gap:16px;min-width:0;display:flex}.learning-path-panel{padding:22px}.unit-path{flex-direction:column;display:flex}.unit-item{gap:13px;padding-bottom:22px;display:flex;position:relative}.unit-item:last-child{padding-bottom:0}.unit-item:not(:last-child):after{content:"";background:#e5ebe1;width:1px;position:absolute;top:38px;bottom:3px;left:16px}.unit-marker{z-index:2;color:#9ba69b;width:33px;height:33px;font-family:var(--t-mono);background:#f4f7f0;border:1px solid #e6ece1;border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:9px;font-weight:600;display:inline-flex;position:relative}.unit-item.done .unit-marker{color:#f3faf5;background:var(--t-green);border-color:var(--t-green)}.unit-item.current .unit-marker{color:#173126;background:var(--t-lime);border-color:#b8df5a;box-shadow:0 0 0 5px #c9f16924}.unit-content{flex:1;min-width:0;padding-top:2px}.unit-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.unit-kicker{color:#a1aba0;font-family:var(--t-mono);letter-spacing:.12em;font-size:7px}.unit-head h3{letter-spacing:-.02em;margin:3px 0 0;font-size:13px}.unit-state{color:#9aa59a;background:#f5f7f2;border-radius:5px;flex:none;align-items:center;height:21px;padding:0 7px;font-size:7px;display:inline-flex}.unit-state.done{color:#3b7350;background:#eef7f1}.unit-state.current{color:#4b6a16;background:#f1f9df;font-weight:600}.unit-content>p{color:#8d998e;margin:5px 0 0;font-size:9px;line-height:1.65}.unit-progress{align-items:center;gap:9px;margin-top:8px;display:flex}.unit-progress .progress-track{width:145px;height:4px}.unit-progress>span{color:#9ba59b;font-family:var(--t-mono);font-size:7px}.current-lessons{background:#fbfdf6;border:1px solid #edf3e3;border-radius:9px;margin-top:10px;padding:8px 10px}.current-lesson{color:#879288;align-items:center;gap:7px;padding:4px 0;font-size:9px;display:flex}.current-lesson.done{color:#7c887d}.current-lesson.current{color:#3e5d18;font-weight:600}.current-lesson small{color:#a6afa5;margin-left:auto;font-size:7px;font-weight:400}.lesson-dot{color:#a3ada2;background:#f0f3ec;border-radius:50%;flex:none;justify-content:center;align-items:center;width:17px;height:17px;display:inline-flex}.current-lesson.done .lesson-dot{color:#4c855e;background:#eaf5ed}.current-lesson.current .lesson-dot{color:#3c5c16;background:var(--t-lime)}.weekly-chart{border-bottom:1px solid #eef2ea;align-items:flex-end;gap:11px;height:120px;padding:0 2px;display:flex}.weekly-bar{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:4px;height:100%;display:flex}.weekly-value{color:#9ba59b;font-family:var(--t-mono);min-height:10px;font-size:7px}.weekly-column{background:#e8eee3;border-radius:4px 4px 1px 1px;width:100%;max-width:25px;transition:background .2s}.weekly-bar:nth-child(2) .weekly-column,.weekly-bar:nth-child(4) .weekly-column,.weekly-bar:nth-child(5) .weekly-column{background:#c8dcb0}.weekly-column.active{background:var(--t-lime)}.weekly-bar strong{color:#8e9a8f;font-size:8px;font-weight:500}.weekly-summary{color:#8c988d;justify-content:space-between;align-items:center;gap:10px;padding-top:12px;font-size:8px;display:flex}.weekly-summary b{color:#526050;font-family:var(--t-mono);margin-right:2px;font-size:11px}.skill-list{flex-direction:column;gap:11px;display:flex}.skill-row>div:first-child{color:#6d7a6e;justify-content:space-between;align-items:center;margin-bottom:5px;font-size:9px;display:flex}.skill-row b{color:#526050;font-family:var(--t-mono);font-size:9px}.skill-track{background:#eef2e9;border-radius:99px;height:5px;overflow:hidden}.skill-track span{border-radius:inherit;height:100%;display:block}.achievement-list{flex-direction:column;display:flex}.achievement-row{border-top:1px solid #f2f5ef;align-items:center;gap:9px;padding:8px 0;display:flex}.achievement-row:first-child{border-top:0}.achievement-icon{border-radius:9px;flex:none;justify-content:center;align-items:center;width:32px;height:32px;display:inline-flex}.achievement-row>div{flex-direction:column;display:flex}.achievement-row strong{font-size:9px}.achievement-row span{color:#9ba59b;margin-top:1px;font-size:7px}.teacher-note-card{border-radius:var(--t-radius);color:#e9f2ec;background:radial-gradient(100% 100% at 100% 0,#c9f16924,#0000 55%),#163b2d;padding:18px;position:relative;overflow:hidden}.teacher-note-head{align-items:center;gap:9px;display:flex}.teacher-note-head>div{flex-direction:column;display:flex}.teacher-note-head strong{font-size:10px}.teacher-note-head span{color:#89a294;margin-top:1px;font-size:7px}.teacher-note-card>p{color:#ccded4;margin:13px 0 9px;font-size:11px;line-height:1.75}.teacher-note-time{color:#7d9789;font-size:7px}.learning-log-panel{margin-top:18px}.learning-log-list{flex-direction:column;display:flex}.learning-log-row{border-top:1px solid #f2f5ef;align-items:center;gap:9px;padding:9px 0;display:flex}.learning-log-row:first-child{border-top:0}.log-dot{border-radius:50%;flex:none;width:8px;height:8px}.learning-log-row>div{flex-direction:column;flex:1;display:flex}.learning-log-row strong{font-size:10px;font-weight:500}.learning-log-row>div span{color:#9ba59b;margin-top:2px;font-size:8px}.learning-log-row time{color:#a0aaa0;font-family:var(--t-mono);font-size:7px}.student-detail-head{align-items:center;gap:12px;display:flex}.student-detail-head>div{flex:1;min-width:0}.student-detail-head h3{margin:0;font-size:16px}.student-detail-head p{color:#96a196;font-family:var(--t-mono);margin:3px 0 0;font-size:8px}.student-detail-progress{font-family:var(--t-mono);color:#4b6543;letter-spacing:-.05em;font-size:26px;font-weight:700}.student-detail-progress small{font-size:10px}.student-detail-metrics{grid-template-columns:repeat(3,1fr);gap:7px;margin:16px 0;display:grid}.student-detail-metrics>div{background:#f7f9f3;border-radius:9px;flex-direction:column;padding:10px;display:flex}.student-detail-metrics span{color:#95a095;font-size:7px}.student-detail-metrics strong{font-family:var(--t-mono);letter-spacing:-.02em;margin-top:3px;font-size:15px}.student-detail-metrics strong.text{font-family:var(--t-font);font-size:10px}.detail-section{padding-top:4px}.detail-unit-row{align-items:center;gap:8px;padding:6px 0;display:flex}.detail-unit-row>span{color:#748176;flex:none;width:80px;font-size:9px}.detail-unit-row .progress-track{flex:1;height:4px}.detail-unit-row b{color:#7a867b;width:32px;font-family:var(--t-mono);text-align:right;font-size:8px}@media (width<=1300px){.progress-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.student-progress-grid{grid-template-columns:minmax(0,1fr) 290px}.student-progress-hero{gap:24px}}@media (width<=1120px){.progress-overview-grid{grid-template-columns:1fr}.student-progress-hero{flex-wrap:wrap}.student-progress-side{grid-template-columns:repeat(4,1fr);width:100%}.student-progress-grid{grid-template-columns:1fr}.student-progress-side-col{grid-template-columns:1fr 1fr;align-items:start;display:grid}.teacher-note-card{grid-column:span 2}}@media (width<=900px){.distribution-body{gap:18px}.progress-table .data-table-head,.progress-table .data-table-row{grid-template-columns:minmax(140px,1.4fr) 1fr 1fr .8fr 18px}.progress-table .data-table-head span:nth-child(2),.progress-table .data-table-row>span:nth-child(2),.progress-table .data-table-head span:nth-child(4),.progress-table .data-table-row>span:nth-child(4),.progress-table .data-table-head span:nth-child(6),.progress-table .data-table-row>span:nth-child(6){display:none}}@media (width<=760px){.student-progress-hero{padding:24px 20px}.student-progress-ring-wrap{width:138px;height:138px}.student-progress-ring{width:126px;height:126px}.student-progress-ring strong{font-size:28px}.student-progress-copy h2{font-size:24px}.student-progress-side{grid-template-columns:1fr 1fr}.student-progress-side-col{align-items:stretch;display:flex}.teacher-note-card{grid-column:auto}.distribution-body{flex-direction:column;align-items:flex-start}.distribution-legend{width:100%}.progress-table-panel{padding:16px;overflow-x:auto}.progress-table{min-width:620px}.table-tools{flex-wrap:wrap}.weekly-summary{flex-wrap:wrap;gap:6px 12px}}.student-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:11px;margin-bottom:17px;display:grid}.student-summary-grid article{background:var(--t-surface);border:1px solid var(--t-border);box-shadow:var(--t-shadow-sm);border-radius:14px;align-items:flex-start;gap:10px;padding:15px;display:flex;position:relative}.student-summary-grid article>div{flex-direction:column;display:flex}.student-summary-grid article>div strong{letter-spacing:-.045em;font-size:21px;line-height:1.15}.student-summary-grid article>div span{color:#8d998e;margin-top:2px;font-size:8px}.student-summary-grid article em{color:#9ba59b;font-size:7px;font-style:normal;position:absolute;bottom:10px;right:11px}.student-summary-grid article em.positive{color:#548a63}.student-table-panel{padding:16px 20px 20px}.student-toolbar{justify-content:space-between;align-items:center;gap:16px;padding-bottom:14px;display:flex}.student-tools{align-items:center;gap:8px;display:flex}.batch-bar{color:#60744f;background:#f4f9e7;border:1px solid #e4efcf;border-radius:9px;justify-content:space-between;align-items:center;gap:14px;margin-bottom:12px;padding:9px 12px;font-size:9px;display:flex}.batch-bar b{color:#3e5a24;font-family:var(--t-mono)}.batch-bar>div{align-items:center;gap:6px;display:flex}.batch-bar button{color:#586d44;cursor:pointer;background:#fff;border:1px solid #dce8c8;border-radius:6px;align-items:center;gap:4px;height:26px;padding:0 8px;font-family:inherit;font-size:8px;display:inline-flex}.batch-bar button.muted{color:#96a18c;background:0 0;border-color:#0000}.batch-enter-active,.batch-leave-active{transition:opacity .16s,transform .16s}.batch-enter-from,.batch-leave-to{opacity:0;transform:translateY(-4px)}.students-table{overflow-x:auto}.students-table .data-table-head,.students-table .data-table-row{grid-template-columns:24px minmax(130px,1.35fr) .8fr .55fr .55fr .45fr 1.05fr .6fr .8fr 24px;gap:8px;min-width:930px}.students-table .data-table-row{min-height:54px}.checkbox-cell{justify-content:center;align-items:center;display:flex}.t-checkbox{color:#173226;cursor:pointer;background:#fff;border:1px solid #d4ddd0;border-radius:4px;justify-content:center;align-items:center;width:16px;height:16px;padding:0;transition:background .14s,border-color .14s;display:inline-flex}.t-checkbox:hover{border-color:#a9c29f}.t-checkbox.checked{background:var(--t-lime);border-color:#a9d044}.mono-cell{color:#7a877c;font-family:var(--t-mono);font-size:8px}.row-actions{justify-content:flex-end;display:flex}.row-action{color:#9ba59b;cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;width:26px;height:26px;display:inline-flex}.row-action:hover{color:var(--t-ink);background:#f2f5ee}.invite-note{color:#7d8c6a;background:#f7fae9;border-radius:8px;align-items:flex-start;gap:6px;padding:10px;display:flex}.invite-note svg{color:#8ca843;flex:none;margin-top:1px}.invite-note p{margin:0;font-size:9px;line-height:1.6}.invite-note b{color:#526b2b;font-family:var(--t-mono);font-size:8px}.import-template{background:#f7f9f3;border-radius:10px;align-items:center;gap:10px;padding:12px;display:flex}.import-icon{color:#58704f;background:#eaf2df;border-radius:9px;flex:none;justify-content:center;align-items:center;width:38px;height:38px;display:inline-flex}.import-template>div{flex-direction:column;flex:1;display:flex}.import-template strong{font-size:10px}.import-template p{color:#929e93;margin:2px 0 0;font-size:8px}.import-dropzone{color:#7b887d;cursor:pointer;background:#fbfcf8;border:1px dashed #cfdac9;border-radius:10px;flex-direction:column;align-items:center;gap:3px;width:100%;margin-top:11px;padding:24px;font-family:inherit;display:flex}.import-dropzone:hover{background:#f6faf1;border-color:#b4c9ac}.dropzone-icon{color:#87a056;background:#f1f7e3;border-radius:12px;justify-content:center;align-items:center;width:48px;height:48px;margin-bottom:5px;display:inline-flex}.import-dropzone strong{font-size:10px;font-weight:600}.import-dropzone small{color:#9ba59b;font-size:8px}.import-hint{color:#98a398;align-items:flex-start;gap:5px;margin:11px 0 0;font-size:8px;line-height:1.6;display:flex}.import-hint svg{flex:none;margin-top:1px}.student-action-list{flex-direction:column;gap:5px;margin-top:13px;display:flex}.student-action-list>button{color:#b1bbb0;text-align:left;cursor:pointer;background:#fbfcf8;border:1px solid #f0f3ec;border-radius:9px;align-items:center;gap:9px;width:100%;padding:9px;font-family:inherit;display:flex}.student-action-list>button:hover{background:#f7faf2;border-color:#e5ecdf}.student-action-list>button>span:nth-child(2){flex-direction:column;flex:1;display:flex}.student-action-list strong{color:#58665b;font-size:10px;font-weight:500}.student-action-list small{color:#9ba59b;margin-top:1px;font-size:7px}@media (width<=1300px){.student-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=980px){.student-toolbar{flex-direction:column;align-items:stretch;gap:10px}.student-tools{flex-wrap:wrap}.student-tools .inline-search{flex:1}.student-tools .inline-search input{width:100%}}@media (width<=760px){.student-table-panel{padding:14px;overflow:hidden}.student-toolbar{padding-bottom:10px}.batch-bar{flex-direction:column;align-items:flex-start}.students-table{margin:0 -14px;padding:0 14px}}
