@import "https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Geist:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&family=Caveat:wght@400;600&display=swap";:root{--ink-900:#14253f;--ink-700:#1e3a5f;--ink-500:#2e5887;--ink-300:#6a85a8;--sky-500:#29b6e6;--sky-300:#7fd2ee;--sand-50:#faf6ef;--sand-100:#f4ecdf;--sand-200:#e8dcc6;--ember-500:#c97b4a;--ember-300:#e2a77e;--ember-50:#f8e8da;--paper:#fffcf7;--ash-500:#5a5750;--ash-400:#7a766d;--ash-300:#98948a;--ash-200:#c8c3b8;--good-500:#3f6b5a;--good-50:#e6eeec;--warn-500:#c97b4a;--warn-50:#f8e8da;--info-500:#2e5887;--info-50:#e3eaf4;--radius-input:10px;--radius-card:14px;--radius-pill:999px;--font-display:"Instrument Serif", "Cormorant Garamond", Georgia, serif;--font-body:"Geist", system-ui, -apple-system, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;--font-script:"Caveat", cursive;--ease-out:cubic-bezier(.2, .7, .1, 1);--shadow-card:0 12px 32px -16px #14253f2e}*{box-sizing:border-box}body{font-family:var(--font-body);color:var(--ink-900);margin:0}.display{font-family:var(--font-display);letter-spacing:-.02em;font-weight:400}.script{font-family:var(--font-script)}.mono{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase}.tt-btn{font-family:var(--font-body);letter-spacing:.01em;border-radius:var(--radius-input);cursor:pointer;background:var(--ink-700);color:var(--paper);transition:all .2s var(--ease-out);border:none;justify-content:center;align-items:center;gap:10px;padding:15px 22px;font-size:15px;font-weight:500;display:inline-flex;box-shadow:0 12px 28px -16px #14253f73}.tt-btn:hover{background:var(--ink-900);transform:translateY(-1px);box-shadow:0 16px 32px -16px #14253f99}.tt-btn:active{transform:translateY(0)}.tt-btn:disabled{opacity:.55;cursor:default;box-shadow:none;transform:none}.tt-btn.ghost{color:var(--ink-700);box-shadow:inset 0 0 0 1px var(--sand-200);background:0 0}.tt-btn.ghost:hover{background:var(--sand-100)}.text-link{color:var(--ink-700);transition:all .18s var(--ease-out);border-bottom:1px solid #0000;font-weight:500;text-decoration:none}.text-link:hover{color:var(--ember-500);border-bottom-color:var(--ember-500)}@keyframes fadeUp{to{opacity:1;transform:translateY(0)}}.anim-in{opacity:0;animation:fadeUp .7s var(--ease-out) forwards;transform:translateY(12px)}@keyframes spin{to{transform:rotate(360deg)}}.spin{animation:.9s linear infinite spin}html,body,#root{width:100%;height:100%}body{background:var(--sand-50);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}a{color:var(--ink-700);text-decoration:none}input,textarea,select,button{font-family:var(--font-body)}input[type=date],input[type=month],input[type=time],input[type=datetime-local]{color:var(--ink-900);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;accent-color:var(--ink-700)}input[type=date]::-webkit-datetime-edit{color:var(--ink-900)}input[type=month]::-webkit-datetime-edit{color:var(--ink-900)}input[type=time]::-webkit-datetime-edit{color:var(--ink-900)}input[type=datetime-local]::-webkit-datetime-edit{color:var(--ink-900)}input[type=date]::-webkit-calendar-picker-indicator{cursor:pointer;background-color:var(--ash-400);transition:background-color .18s var(--ease-out);-webkit-mask:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23000'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Crect%20x='3'%20y='4'%20width='18'%20height='18'%20rx='2'/%3E%3Cpath%20d='M3%2010h18'/%3E%3Cpath%20d='M8%202v4'/%3E%3Cpath%20d='M16%202v4'/%3E%3C/svg%3E") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23000'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Crect%20x='3'%20y='4'%20width='18'%20height='18'%20rx='2'/%3E%3Cpath%20d='M3%2010h18'/%3E%3Cpath%20d='M8%202v4'/%3E%3Cpath%20d='M16%202v4'/%3E%3C/svg%3E") 50%/contain no-repeat}input[type=month]::-webkit-calendar-picker-indicator{cursor:pointer;background-color:var(--ash-400);transition:background-color .18s var(--ease-out);-webkit-mask:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23000'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Crect%20x='3'%20y='4'%20width='18'%20height='18'%20rx='2'/%3E%3Cpath%20d='M3%2010h18'/%3E%3Cpath%20d='M8%202v4'/%3E%3Cpath%20d='M16%202v4'/%3E%3C/svg%3E") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23000'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Crect%20x='3'%20y='4'%20width='18'%20height='18'%20rx='2'/%3E%3Cpath%20d='M3%2010h18'/%3E%3Cpath%20d='M8%202v4'/%3E%3Cpath%20d='M16%202v4'/%3E%3C/svg%3E") 50%/contain no-repeat}input[type=datetime-local]::-webkit-calendar-picker-indicator{cursor:pointer;background-color:var(--ash-400);transition:background-color .18s var(--ease-out);-webkit-mask:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23000'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Crect%20x='3'%20y='4'%20width='18'%20height='18'%20rx='2'/%3E%3Cpath%20d='M3%2010h18'/%3E%3Cpath%20d='M8%202v4'/%3E%3Cpath%20d='M16%202v4'/%3E%3C/svg%3E") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23000'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Crect%20x='3'%20y='4'%20width='18'%20height='18'%20rx='2'/%3E%3Cpath%20d='M3%2010h18'/%3E%3Cpath%20d='M8%202v4'/%3E%3Cpath%20d='M16%202v4'/%3E%3C/svg%3E") 50%/contain no-repeat}input[type=time]::-webkit-calendar-picker-indicator{cursor:pointer;background-color:var(--ash-400);transition:background-color .18s var(--ease-out);-webkit-mask:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23000'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Ccircle%20cx='12'%20cy='12'%20r='9'/%3E%3Cpath%20d='M12%207v5l3%202'/%3E%3C/svg%3E") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23000'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Ccircle%20cx='12'%20cy='12'%20r='9'/%3E%3Cpath%20d='M12%207v5l3%202'/%3E%3C/svg%3E") 50%/contain no-repeat}input[type=date]:hover::-webkit-calendar-picker-indicator{background-color:var(--ember-500)}input[type=month]:hover::-webkit-calendar-picker-indicator{background-color:var(--ember-500)}input[type=time]:hover::-webkit-calendar-picker-indicator{background-color:var(--ember-500)}input[type=datetime-local]:hover::-webkit-calendar-picker-indicator{background-color:var(--ember-500)}.app-canvas{width:100%;min-height:100%}.page-head{margin-bottom:22px}.page-head .crumb{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ash-400);align-items:center;gap:6px;margin-bottom:12px;font-size:10.5px;display:flex}.page-head .crumb .sep{color:var(--ash-200)}.page-head .crumb .here{color:var(--ash-500)}.page-head h1{color:var(--ink-900);margin:0;font-size:44px;line-height:1.05}.page-head .sub{color:var(--ash-500);max-width:56ch;margin:6px 0 0;font-size:14px}.stage{grid-template-columns:1.05fr 1fr;height:100dvh;display:grid;overflow:hidden}.brand{color:var(--paper);isolation:isolate;background:radial-gradient(120% 80% at 10% 110%,#25456e 0%,#14253f 55%,#0e1b30 100%);flex-direction:column;justify-content:space-between;padding:40px 56px 24px;display:flex;position:relative;overflow:hidden}.rays{z-index:0;background:conic-gradient(#0000 0deg,#7fd2ee1a 4deg,#0000 8deg 22deg,#7fd2ee1a 26deg,#0000 30deg 44deg,#7fd2ee14 48deg,#0000 52deg 70deg,#7fd2ee1a 74deg,#0000 78deg 100deg,#7fd2ee12 104deg,#0000 108deg 130deg,#7fd2ee1a 134deg,#0000 138deg 160deg,#7fd2ee14 164deg,#0000 168deg 360deg);border-radius:50%;width:880px;height:880px;animation:60s linear infinite drift;position:absolute;inset:auto auto -380px -380px;-webkit-mask-image:radial-gradient(circle,#000 30%,#0000 72%);mask-image:radial-gradient(circle,#000 30%,#0000 72%)}.rays:after{content:"";border:1px solid #7fd2ee2e;border-radius:50%;width:220px;height:220px;position:absolute;inset:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 40px #7fd2ee0a,0 0 0 100px #7fd2ee06}@keyframes drift{to{transform:rotate(360deg)}}.brand:before{content:"";opacity:.5;pointer-events:none;z-index:1;background-image:radial-gradient(#ffffff0a 1px,#0000 1px);background-size:3px 3px;position:absolute;inset:0}.brand>*{z-index:2;position:relative}.brand-top{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:#fffcf78c;align-items:center;gap:14px;font-size:11px;display:flex}.brand-top .dot{background:var(--ember-500);border-radius:50%;width:8px;height:8px;box-shadow:0 0 0 4px #c97b4a2e}.hero{max-width:520px;margin-top:auto}.hero .eyebrow{font-family:var(--font-mono);letter-spacing:.22em;text-transform:uppercase;color:var(--sky-300);border:1px solid #7fd2ee4d;border-radius:999px;margin-bottom:22px;padding:6px 10px;font-size:11px;display:inline-block}.hero h1{font-family:var(--font-display);letter-spacing:-.02em;color:var(--paper);margin:0 0 14px;font-size:clamp(44px,4.6vw,68px);font-weight:400;line-height:1.02}.hero h1 em{color:var(--sky-300);font-style:italic}.hero .tagline{font-family:var(--font-script);color:var(--ember-300);transform-origin:0;margin:0 0 28px;font-size:32px;line-height:1;display:inline-block;transform:rotate(-2deg)}.hero p.lead{color:#fffcf7b8;max-width:44ch;margin:0;font-size:16px;line-height:1.6}.accreditations{max-width:460px;margin-top:36px;margin-bottom:28px}.accred-label{font-family:var(--font-mono);letter-spacing:.2em;text-transform:uppercase;color:#7fd2eeb3;margin-bottom:14px;font-size:10px;display:block}.accred-row{flex-wrap:wrap;gap:12px;display:flex}.accred-card{background:#fffcf70a;border:1px solid #fffcf71f;border-radius:12px;flex-direction:column;flex:1 1 0;gap:4px;min-width:180px;padding:16px 18px;display:flex}.accred-card strong{font-family:var(--font-display);letter-spacing:-.01em;color:var(--paper);font-size:22px;font-weight:400}.accred-card span{color:#fffcf799;font-size:12px;line-height:1.4}.brand-foot{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:#fffcf773;justify-content:space-between;align-items:center;padding-top:12px;font-size:11px;display:flex}.form-side{background:var(--sand-50);flex-direction:column;height:100%;min-height:0;padding:24px 56px;display:flex;position:relative;overflow-y:auto}.form-top{justify-content:space-between;align-items:center;display:flex}.form-wrap{flex:1;justify-content:center;align-items:flex-end;min-height:0;padding:16px 0;display:flex}.form{width:100%;max-width:420px}.welcome{margin-bottom:20px}.welcome .greeting-tr{font-family:var(--font-display);letter-spacing:-.02em;color:var(--ink-900);margin:0 0 4px;font-size:clamp(32px,3.4vw,42px);font-weight:400;line-height:1.05}.welcome .sub{color:var(--ash-500);max-width:38ch;margin:0;font-size:14px;line-height:1.5}.row{color:var(--ash-500);justify-content:space-between;align-items:center;margin:12px 0 18px;font-size:13.5px;display:flex}.remember{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:9px;display:inline-flex}.remember input{opacity:0;pointer-events:none;position:absolute}.remember .box{border:1.5px solid var(--sand-200);background:var(--paper);width:18px;height:18px;transition:all .18s var(--ease-out);border-radius:5px;place-items:center;display:grid}.remember input:checked~.box{background:var(--ink-700);border-color:var(--ink-700)}.remember .box svg{width:12px;height:12px;color:var(--paper);opacity:0;transition:opacity .15s}.remember input:checked~.box svg{opacity:1}.signup-prompt{text-align:center;color:var(--ash-500);margin-top:16px;font-size:14px}.form-foot{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ash-300);justify-content:space-between;align-items:center;padding-top:12px;font-size:11px;display:flex}.form-foot a{color:var(--ash-500);text-decoration:none}.form-foot a:hover{color:var(--ink-700)}.alert{color:#8a2a20;background:#c97b4a1f;border-radius:10px;margin-bottom:12px;padding:10px 14px;font-size:13px}.notice{color:var(--ink-700);background:#29b6e61a;border:1px solid #29b6e640;border-radius:10px;padding:14px 16px;font-size:14px;line-height:1.5}.toggle-pw{cursor:pointer;color:var(--ash-500);background:0 0;border:0;border-radius:8px;padding:8px;line-height:0}.toggle-pw:hover{color:var(--ink-700);background:var(--sand-100)}.toggle-pw svg{width:18px;height:18px}@media (width<=980px){.stage{grid-template-columns:1fr;height:auto;min-height:100dvh;overflow:visible}.brand{min-height:300px;padding:36px 28px}.brand .accreditations{display:none}.hero h1{font-size:42px}.form-side{padding:28px 24px;overflow-y:visible}}@media (width<=520px){.welcome .greeting-tr{font-size:36px}.form-foot{flex-direction:column;align-items:flex-start;gap:8px}}.dash{--ash-400:#7a766d;--ash-200:#c8c3b8;--ember-50:#f8e8da;--shadow-warm:0 12px 32px -16px #14253f2e;width:100%;min-height:100vh;font-size:14px;line-height:1.5;display:flex}.dash .sidebar{background:var(--paper);border-right:1px solid var(--sand-200);flex-direction:column;flex:0 0 260px;height:100vh;padding:24px 16px 20px;display:flex;position:sticky;top:0;overflow-y:auto}.dash .dash-brand{color:inherit;isolation:auto;background:0 0;flex-direction:row;justify-content:flex-start;align-items:center;gap:10px;padding:4px 8px 22px;display:flex;position:static;overflow:visible}.dash .dash-brand:before{content:none}.dash .dash-brand img{mix-blend-mode:normal;width:auto;height:32px;display:block}.dash .brand-meta{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ash-400);margin-left:auto;font-size:10px}.dash .nav-section{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ash-300);padding:14px 8px 6px;font-size:10px}.dash .nav{flex-direction:column;gap:2px;display:flex}.dash .nav a{color:var(--ash-500);transition:all .18s var(--ease-out);cursor:pointer;border-radius:10px;align-items:center;gap:12px;padding:10px 12px;font-size:14px;font-weight:500;display:flex;position:relative}.dash .nav a .ico{width:18px;height:18px;color:var(--ash-400);flex:0 0 18px}.dash .nav a:hover{background:var(--sand-100);color:var(--ink-700)}.dash .nav a:hover .ico{color:var(--ink-700)}.dash .nav a.active{background:var(--ink-700);color:var(--paper)}.dash .nav a.active .ico{color:var(--paper)}.dash .nav a.active:before{content:"";background:var(--ember-500);border-radius:0 3px 3px 0;width:3px;height:22px;position:absolute;top:50%;left:-16px;transform:translateY(-50%)}.dash .sidebar-foot{border-top:1px solid var(--sand-200);margin-top:auto;padding-top:16px}.dash .help-card{background:var(--ink-900);color:var(--paper);border-radius:12px;margin-bottom:14px;padding:16px;position:relative;overflow:hidden}.dash .help-card:after{content:"";pointer-events:none;background:radial-gradient(circle,#7fd2ee26,#0000 70%);border-radius:50%;width:120px;height:120px;position:absolute;top:-30px;right:-30px}.dash .help-card h4{font-family:var(--font-display);letter-spacing:-.01em;margin:0 0 6px;font-size:20px;font-weight:400;line-height:1.1}.dash .help-card p{color:#fffcf7a6;margin:0 0 12px;font-size:12px;line-height:1.45}.dash .help-card .help-cta{appearance:none;background:var(--ember-500);color:var(--ink-900);letter-spacing:.02em;cursor:pointer;transition:all .18s var(--ease-out);border:0;border-radius:8px;padding:8px 12px;font-size:12px;font-weight:600;text-decoration:none;display:inline-block}.dash .help-card .help-cta:hover{background:var(--ember-300)}.dash .user-chip{cursor:pointer;text-align:left;background:0 0;border:0;border-radius:10px;align-items:center;gap:10px;width:100%;padding:8px;transition:background .15s;display:flex}.dash .user-chip:hover{background:var(--sand-100)}.dash .user-chip .avatar{background:linear-gradient(135deg, var(--ember-300), var(--ember-500));width:34px;height:34px;color:var(--ink-900);font-family:var(--font-display);border-radius:50%;flex:0 0 34px;place-items:center;font-size:18px;display:grid}.dash .user-chip .who{line-height:1.2}.dash .user-chip .who .name{color:var(--ink-900);font-size:13.5px;font-weight:500}.dash .user-chip .who .role{color:var(--ash-400);font-size:11px;font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase}.dash .user-chip .chev{color:var(--ash-300);margin-left:auto}.dash .main{flex:1;min-width:0;padding:24px 32px 48px;container-type:inline-size}.dash .topbar{z-index:20;align-items:center;gap:14px;margin-bottom:32px;display:flex;position:relative}.dash .search{background:var(--paper);border:1px solid var(--sand-200);max-width:520px;transition:all .18s var(--ease-out);border-radius:12px;flex:1;align-items:center;gap:10px;padding:11px 14px;display:flex}.dash .search:focus-within{border-color:var(--ink-700);box-shadow:0 0 0 4px #1e3a5f14}.dash .search .ico{color:var(--ash-400)}.dash .search input{font:400 14px var(--font-body);color:var(--ink-900);background:0 0;border:0;outline:none;flex:1}.dash .search .kbd{font-family:var(--font-mono);color:var(--ash-400);border:1px solid var(--sand-200);background:var(--sand-50);letter-spacing:.04em;border-radius:5px;padding:2px 6px;font-size:10px}.dash .topbar .actions{align-items:center;gap:10px;margin-left:auto;display:flex}.dash .dash-hero{grid-template-columns:1.4fr 1fr;gap:24px;width:100%;max-width:none;margin-top:0;margin-bottom:28px;display:grid}.dash .greet{background:radial-gradient(120% 90% at 90% 0%, #25456e 0%, var(--ink-700) 50%, var(--ink-900) 100%);color:var(--paper);isolation:isolate;border-radius:16px;padding:32px 36px;position:relative;overflow:hidden}.dash .greet:before{content:"";z-index:0;background:conic-gradient(#0000 0deg,#7fd2ee29 4deg,#0000 8deg 30deg,#7fd2ee24 34deg,#0000 38deg 60deg,#7fd2ee1f 64deg,#0000 68deg 95deg,#7fd2ee1a 99deg,#0000 103deg 130deg,#7fd2ee1f 134deg,#0000 138deg 360deg);border-radius:50%;width:360px;height:360px;animation:80s linear infinite drift;position:absolute;top:-120px;right:-120px;-webkit-mask-image:radial-gradient(circle,#000 25%,#0000 70%);mask-image:radial-gradient(circle,#000 25%,#0000 70%)}.dash .greet>*{z-index:1;position:relative}.dash .greet .date{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--sky-300);margin-bottom:14px;font-size:11px}.dash .greet h1{font-family:var(--font-display);letter-spacing:-.02em;margin:0;font-size:clamp(34px,3.4vw,46px);font-weight:400;line-height:1.05}.dash .greet h1 em{color:var(--sky-300);font-style:italic}.dash .greet .progress-line{color:#fffcf7d9;max-width:46ch;margin:0 0 22px;font-size:14.5px;line-height:1.55}.dash .greet .progress-line strong{color:var(--ember-300);font-weight:600}.dash .greet-stats{border-top:1px solid #fffcf71a;gap:28px;padding-top:16px;display:flex}.dash .greet-stats .stat .v{font-family:var(--font-display);color:var(--paper);font-size:32px;line-height:1}.dash .greet-stats .stat .v em{color:var(--sky-300);font-style:italic}.dash .greet-stats .stat .l{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:#fffcf78c;margin-top:6px;font-size:10px}.dash .continue{background:var(--paper);border:1px solid var(--sand-200);box-shadow:var(--shadow-card);border-radius:16px;flex-direction:column;padding:24px;display:flex}.dash .continue .label{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ember-500);margin-bottom:10px;font-size:11px}.dash .continue h3{font-family:var(--font-display);letter-spacing:-.01em;margin:0 0 4px;font-size:26px;font-weight:400;line-height:1.15}.dash .continue .course-meta{color:var(--ash-400);font-size:12.5px;font-family:var(--font-mono);letter-spacing:.04em;margin:0 0 18px}.dash .continue .module{color:var(--ash-500);margin:0 0 20px;font-size:13.5px;line-height:1.5}.dash .continue .module em{color:var(--ink-700);font-style:normal;font-weight:500}.dash .progress{margin-top:auto}.dash .progress .pct-row{font-family:var(--font-mono);color:var(--ash-400);letter-spacing:.06em;text-transform:uppercase;justify-content:space-between;margin-bottom:10px;font-size:11px;display:flex}.dash .progress .pct-row .v{color:var(--ink-700);font-weight:500}.dash .bar{background:var(--sand-100);border-radius:999px;height:6px;overflow:hidden}.dash .bar>span{background:linear-gradient(90deg, var(--ember-500), var(--ember-300));border-radius:999px;height:100%;display:block}.dash .continue .cta{appearance:none;background:var(--ink-700);color:var(--paper);font:500 14px var(--font-body);cursor:pointer;transition:all .2s var(--ease-out);border:0;border-radius:10px;align-self:flex-start;align-items:center;gap:10px;margin-top:16px;padding:12px 18px;display:inline-flex}.dash .continue .cta:hover{background:var(--ink-900);transform:translateY(-1px)}.dash .section-head{justify-content:space-between;align-items:baseline;margin:36px 0 16px;display:flex}.dash .section-head h2{font-family:var(--font-display);letter-spacing:-.01em;margin:0;font-size:28px;font-weight:400}.dash .courses{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;width:100%;display:grid}.dash .course{background:var(--paper);border:1px solid var(--sand-200);transition:box-shadow .25s var(--ease-out), transform .25s var(--ease-out), border-color .2s;will-change:transform;border-radius:14px;flex-direction:column;display:flex;overflow:hidden}.dash .course:hover{border-color:var(--ash-200);transform:translateY(-3px);box-shadow:0 2px #14253f0a,0 20px 40px -16px #14253f38}.dash .course .cover{height:110px;color:var(--paper);transition:transform .35s var(--ease-out);justify-content:space-between;align-items:flex-start;padding:14px;display:flex;position:relative;overflow:hidden}.dash .course:hover .cover{transform:scale(1.04)}.dash .course .cover.c1{background:radial-gradient(120% 90% at 100% 0%, #4a6fa5 0%, var(--ink-700) 80%)}.dash .course .cover.c2{background:radial-gradient(120% 90% at 100% 0%, var(--ember-500) 0%, #8e4f2a 80%)}.dash .course .cover.c3{background:radial-gradient(120% 90% at 100% 0%, #5f7f8e 0%, var(--ink-500) 80%)}.dash .course .cover .glyph{font-family:var(--font-display);letter-spacing:-.02em;font-size:38px;line-height:1}.dash .course .cover .glyph em{font-style:italic}.dash .course .cover .chip{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#fffcf729;border-radius:999px;padding:4px 8px;font-size:10px}.dash .course .body{padding:16px 16px 14px}.dash .course h4{font-family:var(--font-display);letter-spacing:-.01em;margin:0 0 4px;font-size:20px;font-weight:400;line-height:1.2}.dash .course .teacher{color:var(--ash-400);margin:0 0 14px;font-size:12.5px}.dash .course .pmeta{font-family:var(--font-mono);color:var(--ash-400);letter-spacing:.06em;justify-content:space-between;align-items:center;margin-bottom:6px;font-size:11px;display:flex}.dash .course .pmeta .v{color:var(--ink-700)}.dash .course .bar{height:5px}.dash .course .bar>span{background:var(--ember-500)}.dash .course .footer-row{border-top:1px solid var(--sand-100);color:var(--ash-500);justify-content:space-between;align-items:center;margin-top:auto;padding:12px 16px;font-size:12.5px;display:flex}.dash .course .footer-row .left{align-items:center;gap:6px;display:inline-flex}.dash .course .footer-row .ico{color:var(--ash-400)}.dash .two-col{grid-template-columns:1fr 1fr;gap:18px;width:100%;margin-top:28px;display:grid}.dash .panel{background:var(--paper);border:1px solid var(--sand-200);border-radius:14px;padding:22px 24px}.dash .panel h3{font-family:var(--font-display);letter-spacing:-.01em;margin:0 0 4px;font-size:22px;font-weight:400}.dash .panel .head-row{justify-content:space-between;align-items:baseline;margin-bottom:18px;display:flex}.dash .panel .empty{color:var(--ash-400);padding:14px 0;font-size:13px;line-height:1.5}.dash .schedule{flex-direction:column;display:flex}.dash .slot{border-bottom:1px dashed var(--sand-200);grid-template-columns:70px 14px 1fr;gap:14px;padding:12px 0;display:grid}.dash .slot:last-child{border-bottom:0}.dash .slot .time{font-family:var(--font-mono);color:var(--ash-500);letter-spacing:.04em;padding-top:2px;font-size:11.5px}.dash .slot .time .end{color:var(--ash-300);font-size:10.5px;display:block}.dash .slot .rail{height:100%;position:relative}.dash .slot .rail:before{content:"";background:var(--sand-200);width:1px;position:absolute;top:6px;bottom:-16px;left:50%;transform:translate(-.5px)}.dash .slot:last-child .rail:before{display:none}.dash .slot .dot{background:var(--paper);border:2px solid var(--ash-300);z-index:1;border-radius:50%;width:12px;height:12px;margin:4px auto 0;position:relative}.dash .slot.now .dot{border-color:var(--ember-500);background:var(--ember-500);box-shadow:0 0 0 4px #c97b4a2e}.dash .slot .body .title{color:var(--ink-900);margin:0 0 3px;font-size:14.5px;font-weight:500}.dash .slot.now .body .title{color:var(--ink-700)}.dash .slot .body .meta{color:var(--ash-400);margin:0;font-size:12px}.dash .slot .body .now-chip{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ember-500);background:var(--ember-50);vertical-align:middle;border-radius:999px;margin-left:8px;padding:1.5px 7px;font-size:9.5px;display:inline-block}.dash .dl{flex-direction:column;margin:0;padding:0;display:flex}.dash .dl li{border-bottom:1px solid var(--sand-100);grid-template-columns:48px 1fr auto;align-items:center;gap:14px;padding:14px 0;list-style:none;display:grid}.dash .dl li:last-child{border-bottom:0}.dash .dl .day{text-align:center;border:1px solid var(--sand-200);background:var(--sand-50);border-radius:10px;padding:6px 4px 5px}.dash .dl .day .num{font-family:var(--font-display);color:var(--ink-900);font-size:22px;line-height:1}.dash .dl .day .mon{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ash-400);margin-top:2px;font-size:9px}.dash .dl .day.urgent{border-color:var(--ember-500);background:var(--ember-50)}.dash .dl .day.urgent .num,.dash .dl .day.urgent .mon{color:var(--ember-500)}.dash .dl .info h5{color:var(--ink-900);margin:0 0 3px;font-size:14.5px;font-weight:500}.dash .dl .info p{color:var(--ash-400);margin:0;font-size:12.5px}.dash .dl .tag{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-500);background:#e3eaf4;border-radius:999px;padding:4px 9px;font-size:10px}.dash .dl .tag.review{background:var(--ember-50);color:var(--ember-500)}.dash .dl li.clickable{cursor:pointer;transition:background .15s var(--ease-out)}.dash .dl li.clickable:hover{background:var(--sand-50)}.dash .dl li.clickable:focus-visible{outline:2px solid var(--sky-500);outline-offset:2px;border-radius:8px}.dash .anim-in{opacity:0;animation:fadeUp .6s var(--ease-out) forwards;transform:translateY(10px)}.dash .topbar.anim-in{animation-delay:50ms}.dash .greet.anim-in{animation-delay:.1s}.dash .continue.anim-in{animation-delay:.18s}.dash .section-head.anim-in{animation-delay:.26s}.dash .courses .course:first-child{animation-delay:.28s}.dash .courses .course:nth-child(2){animation-delay:.32s}.dash .courses .course:nth-child(3){animation-delay:.36s}.dash .two-col .panel:first-child{animation-delay:.42s}.dash .two-col .panel:nth-child(2){animation-delay:.48s}@media (prefers-reduced-motion:reduce){.dash .anim-in{opacity:1;animation:none;transform:none}}@container (width<=900px){.dash .dash-hero{grid-template-columns:minmax(0,1fr)}.dash .dash-hero .greet,.dash .dash-hero .continue{width:100%}.dash .courses{grid-template-columns:repeat(2,minmax(0,1fr))}.dash .two-col{grid-template-columns:minmax(0,1fr)}}@media (width<=1200px){.dash .dash-hero{grid-template-columns:minmax(0,1fr)}.dash .dash-hero .greet,.dash .dash-hero .continue{width:100%}.dash .courses{grid-template-columns:repeat(2,minmax(0,1fr))}.dash .two-col{grid-template-columns:minmax(0,1fr)}}@media (width<=820px){.dash .sidebar{flex:0 0 76px;padding:16px 10px}.dash .sidebar .nav a span:not(.ico),.dash .nav-section,.dash .dash-brand .brand-meta,.dash .help-card,.dash .user-chip .who,.dash .user-chip .chev{display:none}.dash .dash-brand{justify-content:center}.dash .nav a{justify-content:center;padding:12px}.dash .nav a.active:before{left:-10px}.dash .main{padding:20px}.dash .courses{grid-template-columns:1fr}.dash .search .kbd{display:none}}.dash .next-lesson{background:var(--paper);border:1px solid var(--sand-200);box-shadow:var(--shadow-card);border-radius:16px;flex-direction:column;padding:24px;display:flex}.dash .next-lesson .label{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ember-500);margin-bottom:10px;font-size:11px}.dash .next-lesson h3{font-family:var(--font-display);letter-spacing:-.01em;margin:0 0 4px;font-size:26px;font-weight:400;line-height:1.15}.dash .next-lesson .course-meta{color:var(--ash-400);font-size:12.5px;font-family:var(--font-mono);letter-spacing:.04em;margin:0 0 14px}.dash .next-lesson .module{color:var(--ash-500);margin:0 0 18px;font-size:13.5px;line-height:1.5}.dash .next-lesson .module em{color:var(--ink-700);font-style:normal;font-weight:500}.dash .next-lesson .nl-when{color:var(--ink-900);align-items:center;gap:8px;margin-top:auto;font-size:14px;display:flex}.dash .next-lesson .nl-when .ico{color:var(--ember-500);display:inline-flex}.dash .next-lesson .nl-loc{color:var(--ash-400);margin:8px 0 0;font-size:12.5px}.dash .next-lesson .nl-join{align-self:flex-start;align-items:center;gap:7px;margin-top:14px;display:inline-flex}.dash .next-lesson .nl-join-hint{color:var(--ash-400);margin:12px 0 0;font-size:12.5px}.dash .next-lesson .now-chip{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ember-500);background:var(--ember-50);border-radius:999px;margin-left:4px;padding:1.5px 7px;font-size:9.5px}.dash .training-block{margin-top:22px}.dash .training-block+.panel{margin-top:28px}.dash .training-block .tb-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:16px;margin:0 0 12px;display:flex}.dash .training-block .tb-title{align-items:baseline;gap:10px;display:flex}.dash .training-block .tb-title h3{font-family:var(--font-display);letter-spacing:-.01em;margin:0;font-size:22px;font-weight:400}.dash .training-block .tb-term{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ash-400);border:1px solid var(--sand-200);background:var(--sand-50);border-radius:999px;padding:3px 8px;font-size:10px}.dash .training-block .tb-meta{color:var(--ash-500);align-items:center;gap:14px;font-size:12.5px;display:flex}.dash .training-block .tb-meta .tb-modcount{font-family:var(--font-mono);letter-spacing:.04em;color:var(--ash-400)}.dash .training-block .tb-meta .tb-prog{font-family:var(--font-mono);letter-spacing:.04em;color:var(--ink-700)}.dash .module-row{background:0 0;border:0;border-radius:0;grid-template-columns:repeat(auto-fill,minmax(240px,360px));gap:16px;padding:0;display:grid}.dash .card-rail{position:relative}.dash .card-rail .rail-track{scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:none;gap:16px;padding:6px 0 4px;display:flex;overflow-x:auto}.dash .card-rail .rail-track::-webkit-scrollbar{display:none}.dash .card-rail .rail-track>*{scroll-snap-align:start;flex:0 0 calc(33.3333% - 10.6667px);min-width:220px}.dash .card-rail .rail-nav{z-index:2;background:var(--paper);border:1px solid var(--sand-200);width:36px;height:36px;box-shadow:var(--shadow-card);color:var(--ink-700);cursor:pointer;opacity:0;pointer-events:none;transition:all .18s var(--ease-out);border-radius:50%;place-items:center;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.dash .card-rail:hover .rail-nav,.dash .card-rail .rail-nav:focus-visible{opacity:1;pointer-events:auto}.dash .card-rail .rail-nav:hover{background:var(--ink-700);color:var(--paper);border-color:var(--ink-700)}.dash .card-rail .rail-nav.prev{left:-10px}.dash .card-rail .rail-nav.next{right:-10px}.dash .module-card{background:var(--paper);border:1px solid var(--sand-200);transition:box-shadow .25s var(--ease-out), transform .25s var(--ease-out), border-color .2s;border-radius:14px;flex-direction:column;padding:16px 16px 14px;display:flex}.dash .module-card:hover{border-color:var(--ash-200);transform:translateY(-3px);box-shadow:0 20px 40px -16px #14253f38}.dash .module-card .mc-head{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.dash .module-card h4{font-family:var(--font-display);letter-spacing:-.01em;margin:0 0 4px;font-size:18px;font-weight:400;line-height:1.2}.dash .module-card .mc-badge{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;background:var(--ember-50);color:var(--ember-500);white-space:nowrap;border-radius:999px;padding:3px 8px;font-size:9px}.dash .module-card .mc-meta{color:var(--ash-400);margin:0 0 14px;font-size:12px}.dash .module-card .pmeta{font-family:var(--font-mono);color:var(--ash-400);letter-spacing:.06em;justify-content:space-between;align-items:center;margin-bottom:6px;font-size:11px;display:flex}.dash .module-card .pmeta .v{color:var(--ink-700)}.dash .module-card .bar{height:5px}.dash .module-card .bar>span{background:var(--ember-500)}.dash .module-card .mc-stats{font-family:var(--font-mono);color:var(--ash-400);letter-spacing:.04em;justify-content:space-between;gap:10px;margin-top:10px;font-size:11px;display:flex}.dash .module-card .mc-foot{border-top:1px solid var(--sand-100);color:var(--ash-500);justify-content:space-between;align-items:center;margin-top:12px;padding-top:12px;font-size:12.5px;display:flex}.dash .module-card .mc-foot .left{align-items:center;gap:6px;display:inline-flex}.dash .module-card .mc-foot .ico{color:var(--ash-400)}.dash .upcoming-panel{margin-top:28px}.dash .greet-stats{flex-wrap:wrap;gap:20px 28px}@media (width<=1200px){.dash .card-rail .rail-track>*{flex-basis:calc(50% - 8px)}}@media (width<=820px){.dash .module-row{grid-template-columns:repeat(auto-fill,minmax(220px,360px))}.dash .card-rail .rail-track>*{flex-basis:82%}}.dash .dash-hero.admin-hero{grid-template-columns:1fr}.dash .kpi-grid{grid-template-columns:repeat(4,1fr);gap:16px;margin:0 0 24px;display:grid}.dash .kpi-card{background:var(--paper);border:1px solid var(--sand-200);box-shadow:var(--shadow-card);border-radius:14px;flex-direction:column;padding:18px 18px 16px;transition:transform .25s,box-shadow .25s,border-color .25s;display:flex}.dash .kpi-card:hover{border-color:var(--ash-200);transform:translateY(-3px)}.dash .kpi-card .kpi-ico{background:var(--ember-50);width:36px;height:36px;color:var(--ember-500);border-radius:10px;justify-content:center;align-items:center;margin-bottom:14px;display:inline-flex}.dash .kpi-card .kpi-v{font-family:var(--font-display);color:var(--ink-900);font-size:30px;line-height:1}.dash .kpi-card .kpi-l{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ash-400);margin-top:8px;font-size:10px}.dash .dist{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.dash .dist-row{grid-template-columns:150px 1fr 36px;align-items:center;gap:12px;padding:6px 0;display:grid}.dash .dist-label{color:var(--ash-500);font-size:13px}.dash .dist-track{background:var(--sand-100);border-radius:999px;height:8px;overflow:hidden}.dash .dist-bar{background:var(--ash-400);border-radius:999px;height:100%;display:block}.dash .dist-bar.good,.dash .dist-bar.live{background:var(--good-500)}.dash .dist-bar.review{background:var(--warn-500)}.dash .dist-bar.info{background:var(--info-500)}.dash .dist-bar.archive{background:var(--ash-300)}.dash .dist-n{font-family:var(--font-mono);color:var(--ink-700);text-align:right;font-size:12px}.dash .admin-cols{grid-template-columns:1fr 1fr;gap:20px;margin-top:24px;display:grid}@media (width<=1000px){.dash .kpi-grid{grid-template-columns:repeat(2,1fr)}.dash .admin-cols{grid-template-columns:1fr}}@media (width<=560px){.dash .kpi-grid{grid-template-columns:1fr}}.dt{background:var(--paper);border:1px solid var(--sand-200);border-radius:var(--radius-card);box-shadow:var(--shadow-card);overflow:visible}.dt-toolbar{border-bottom:1px solid var(--sand-200);flex-wrap:wrap;align-items:center;gap:10px;padding:16px 18px;display:flex}.dt-toolbar-end{align-items:center;gap:8px;margin-left:auto;display:flex}.seg{background:var(--sand-50);border:1px solid var(--sand-200);border-radius:var(--radius-input);scrollbar-width:none;flex-wrap:nowrap;max-width:100%;padding:3px;display:inline-flex;overflow-x:auto}.seg::-webkit-scrollbar{display:none}.seg button{appearance:none;font:500 13px var(--font-body);color:var(--ash-500);cursor:pointer;white-space:nowrap;transition:all .18s var(--ease-out);background:0 0;border:0;border-radius:8px;flex:none;align-items:center;gap:7px;padding:7px 14px;display:inline-flex}.seg button:hover{color:var(--ink-700)}.seg button.active{background:var(--paper);color:var(--ink-900);box-shadow:0 1px #14253f0f,0 4px 12px -8px #14253f2e}.filter-btn{appearance:none;background:var(--paper);border:1px solid var(--sand-200);border-radius:var(--radius-input);cursor:pointer;font:500 13px var(--font-body);color:var(--ink-900);transition:all .18s var(--ease-out);align-items:center;gap:7px;padding:8px 12px;display:inline-flex}.filter-btn:hover,.filter-btn.open{border-color:var(--ink-300);background:var(--sand-50)}.filter-btn .count{font-family:var(--font-mono);color:var(--paper);background:var(--ember-500);border-radius:var(--radius-pill);letter-spacing:.04em;padding:1px 6px;font-size:10px}.dt-chips{border-bottom:1px solid var(--sand-100);background:var(--sand-50);flex-wrap:wrap;align-items:center;gap:8px;padding:12px 18px;font-size:12.5px;display:flex}.dt-chips .label{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ash-400);margin-right:4px;font-size:10.5px}.dt-chips .chip{background:var(--paper);border:1px solid var(--sand-200);border-radius:var(--radius-pill);color:var(--ink-700);align-items:center;gap:6px;padding:5px 8px 5px 10px;font-size:12.5px;display:inline-flex}.dt-chips .chip .k{color:var(--ash-400)}.dt-chips .chip .x{appearance:none;cursor:pointer;color:var(--ash-400);width:16px;height:16px;transition:all .15s var(--ease-out);background:0 0;border:0;border-radius:50%;place-items:center;padding:0;line-height:0;display:grid}.dt-chips .chip .x:hover{color:var(--ember-500);background:var(--ember-50)}.dt-chips .clear{appearance:none;cursor:pointer;color:var(--ash-500);text-decoration:underline;-webkit-text-decoration-color:var(--sand-200);text-decoration-color:var(--sand-200);text-underline-offset:3px;background:0 0;border:0;margin-left:auto;font-size:12px;transition:color .15s}.dt-chips .clear:hover{color:var(--ember-500)}.dt-scroll{min-height:220px;position:relative;overflow-x:auto}.dt-loading-overlay{z-index:2;background:color-mix(in srgb, var(--paper) 68%, transparent);place-items:center;display:grid;position:absolute;inset:0}.dt-loading-inner{color:var(--ash-400);align-items:center;gap:10px;font-size:13px;display:inline-flex}.dt[aria-busy=true] .dt-table{opacity:.5;transition:opacity .15s var(--ease-out)}table.dt-table{border-collapse:separate;border-spacing:0;width:100%;min-width:720px;font-size:13.5px}.dt-table thead th{text-align:left;font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ash-400);background:var(--sand-50);border-bottom:1px solid var(--sand-200);white-space:nowrap;padding:12px 16px;font-size:10.5px;font-weight:500}.dt-table thead th .sortable{appearance:none;font:inherit;color:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:4px;padding:0;transition:color .15s;display:inline-flex}.dt-table thead th .sortable:hover{color:var(--ink-700)}.dt-table thead th .sort-ico{opacity:.5;transition:transform .18s var(--ease-out);display:inline-flex}.dt-table thead th .sort-ico.asc{transform:rotate(180deg)}.dt-table thead th.sorted .sortable{color:var(--ink-700)}.dt-table thead th.sorted .sort-ico{opacity:1;color:var(--ember-500)}.dt-table tbody tr{transition:background .15s}.dt-table tbody tr:hover{background:var(--sand-50)}.dt-table tbody tr.dt-clickable{cursor:pointer}.dt-table tbody tr.dt-clickable:focus-visible{outline:2px solid var(--sky-500);outline-offset:-2px}.dt-table tbody td{border-bottom:1px solid var(--sand-100);vertical-align:middle;padding:14px 16px}.dt-table tbody tr:last-child td{border-bottom:0}.dt-table tbody tr.dt-state td{text-align:center;color:var(--ash-400);padding:40px 16px;font-size:13px}.dt-foot{border-top:1px solid var(--sand-200);color:var(--ash-500);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;padding:14px 18px;font-size:13px;display:flex}.dt-foot .range em{color:var(--ink-700);font-style:normal;font-weight:500}.dt-foot .perpage{color:var(--ash-500);align-items:center;gap:6px;font-size:13px;display:inline-flex}.dt-foot .perpage select{appearance:none;border:1px solid var(--sand-200);background:var(--paper);font:500 13px var(--font-body);color:var(--ink-900);cursor:pointer;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%235A5750' stroke-width='2'><polyline points='6 9 12 15 18 9'/></svg>");background-position:right 8px center;background-repeat:no-repeat;border-radius:8px;padding:5px 26px 5px 10px}.pager{align-items:center;gap:4px;display:inline-flex}.pager button{appearance:none;background:var(--paper);border:1px solid var(--sand-200);cursor:pointer;min-width:32px;height:32px;font:500 12.5px var(--font-body);color:var(--ink-900);transition:all .15s var(--ease-out);border-radius:8px;justify-content:center;align-items:center;padding:0 8px;display:inline-flex}.pager button:hover:not(:disabled){border-color:var(--ink-300);background:var(--sand-50)}.pager button:disabled{opacity:.4;cursor:not-allowed}.pager button.active{background:var(--ink-700);border-color:var(--ink-700);color:var(--paper)}.pager .dots{color:var(--ash-300);padding:0 4px}.cmb{width:100%;position:relative}.cmb-control{background:var(--sand-50);border:1px solid var(--sand-200);border-radius:var(--radius-input);cursor:text;min-height:40px;transition:all .18s var(--ease-out);flex-wrap:wrap;align-items:center;gap:6px;padding:6px 10px;display:flex}.cmb-control:focus-within{border-color:var(--ink-700);background:var(--paper);box-shadow:0 0 0 4px #1e3a5f0f}.cmb-tag{background:var(--paper);border:1px solid var(--sand-200);border-radius:var(--radius-pill);color:var(--ink-700);white-space:nowrap;align-items:center;gap:6px;padding:3px 6px 3px 9px;font-size:12.5px;display:inline-flex}.cmb-tag-x{appearance:none;cursor:pointer;color:var(--ash-400);width:15px;height:15px;transition:all .15s var(--ease-out);background:0 0;border:0;border-radius:50%;place-items:center;padding:0;line-height:0;display:grid}.cmb-tag-x:hover{color:var(--ember-500);background:var(--ember-50)}.cmb-input{min-width:90px;font:400 13.5px var(--font-body);color:var(--ink-900);background:0 0;border:0;outline:none;flex:1}.cmb-pop{z-index:30;background:var(--paper);border:1px solid var(--sand-200);border-radius:var(--radius-input);max-height:240px;box-shadow:var(--shadow-card);padding:5px;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow-y:auto}.cmb-option{appearance:none;text-align:left;width:100%;font:400 13.5px var(--font-body);color:var(--ink-900);cursor:pointer;transition:background .15s var(--ease-out);background:0 0;border:0;border-radius:8px;padding:9px 10px;display:block}.cmb-option:hover{background:var(--sand-100)}.cmb-hint{color:var(--ash-400);text-align:center;margin:0;padding:10px;font-size:12.5px}.drawer-root{z-index:60;position:fixed;inset:0}.drawer-scrim{animation:drawer-fade .16s var(--ease-out,ease-out);background:#14253f52;position:absolute;inset:0}.drawer-panel{background:var(--paper);border-left:1px solid var(--sand-200);outline:none;flex-direction:column;width:min(480px,100vw);height:100%;display:flex;position:absolute;top:0;right:0;box-shadow:-18px 0 48px -24px #14253f66}.anim-drawer{animation:drawer-slide .22s var(--ease-out,cubic-bezier(.22, 1, .36, 1))}@keyframes drawer-fade{0%{opacity:0}}@keyframes drawer-slide{0%{opacity:0;transform:translate(24px)}}@media (prefers-reduced-motion:reduce){.anim-drawer,.drawer-scrim{animation:none}}.drawer-head{border-bottom:1px solid var(--sand-200);justify-content:space-between;align-items:flex-start;gap:12px;padding:20px 22px 16px;display:flex}.drawer-eyebrow{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ash-400);margin:0 0 4px;font-size:11px}.drawer-title{font-family:var(--font-display);color:var(--ink-900);margin:0;font-size:24px;line-height:1.15}.drawer-close{border-radius:var(--radius-input);border:1px solid var(--sand-200);background:var(--sand-50);width:36px;height:36px;color:var(--ash-500);cursor:pointer;flex:none;justify-content:center;align-items:center;transition:background .12s,color .12s;display:inline-flex}.drawer-close:hover{background:var(--sand-100);color:var(--ink-700)}.drawer-body{flex:auto;padding:20px 22px;overflow-y:auto}.drawer-foot{border-top:1px solid var(--sand-200);background:var(--sand-50);flex:none;gap:10px;padding:16px 22px;display:flex}.rt-editor{border:1px solid var(--sand-200);border-radius:var(--radius-input);background:var(--sand-50);overflow:hidden}.rt-toolbar{border-bottom:1px solid var(--sand-200);background:var(--sand-100);gap:4px;padding:6px 8px;display:flex}.rt-tool{width:30px;height:30px;color:var(--ash-500);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;transition:background .12s,color .12s,border-color .12s;display:inline-flex}.rt-tool:hover{background:var(--paper);color:var(--ink-700)}.rt-tool.active{background:var(--paper);border-color:var(--sand-200);color:var(--ink-900)}.rt-content .ProseMirror{min-height:132px;font-family:var(--font-body);color:var(--ash-500);outline:none;padding:12px 14px;font-size:14px;line-height:1.6}.rt-content .ProseMirror:focus{color:var(--ink-900)}.rt-content .ProseMirror p{margin:0 0 .6em}.rt-content .ProseMirror p:last-child{margin-bottom:0}.rt-content .ProseMirror ul{margin:0 0 .6em;padding-left:1.2em;list-style:outside}.rt-content .ProseMirror strong{color:var(--ink-900);font-weight:650}.rt-readonly .ProseMirror{min-height:0;color:var(--ash-500);padding:0}.ld-meta{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:18px;display:flex}.ld-when{color:var(--ash-400);font-size:13px}.ld-actual{color:var(--ash-500);font-size:12.5px;font-family:var(--font-mono);letter-spacing:.02em;margin:-10px 0 18px}.ld-error{border-radius:var(--radius-input);background:var(--warn-50);border:1px solid var(--warn-500);color:var(--warn-500);margin:0 0 16px;padding:10px 12px;font-size:13px}.ld-section{margin-bottom:24px}.ld-h{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ash-400);margin:0 0 12px;font-size:11px}.ld-muted{color:var(--ash-400);margin:0;font-size:13px}.ld-hint{color:var(--ash-400);margin:0 0 10px;font-size:12.5px}.ld-hint.warn{color:var(--ember-500);margin:8px 0 0}.ld-roster{flex-direction:column;gap:8px;max-height:320px;margin:0;padding:0 4px 0 0;list-style:none;display:flex;overflow-y:auto}.ld-row{border:1px solid var(--sand-200);border-radius:var(--radius-input);background:var(--sand-50);justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.ld-name{color:var(--ink-900);font-size:14px}.ld-att-toggle{gap:6px;display:inline-flex}.att-badge{color:var(--ash-500);align-items:center;gap:7px;font-size:13px;display:inline-flex}.ld-att-toggle[aria-busy=true]{opacity:.5;pointer-events:none}.ld-att{border-radius:var(--radius-pill);border:1px solid var(--sand-200);background:var(--paper);color:var(--ash-500);cursor:pointer;align-items:center;gap:5px;padding:6px 10px;font-size:12.5px;transition:background .12s,color .12s,border-color .12s;display:inline-flex}.ld-att:hover{border-color:var(--ash-300)}.ld-att.present.on{background:var(--good-50);border-color:var(--good-500);color:var(--good-500)}.ld-att.absent.on{background:var(--ember-50);border-color:var(--ember-500);color:var(--ember-500)}.ld-att-own{color:var(--ink-700);align-items:center;gap:8px;margin:0;font-size:14px;display:inline-flex}.att-dot{background:var(--ash-300);border-radius:999px;width:9px;height:9px}.att-dot.att-present{background:var(--good-500)}.att-dot.att-absent{background:var(--ember-500)}.att-dot.att-unmarked{background:var(--ash-300)}.ld-count{font-family:var(--font-mono);letter-spacing:.04em;color:var(--ash-400);margin:8px 0 0;font-size:11.5px}.ld-count.ok{color:var(--good-500)}.ld-status-edit{align-items:center;gap:10px;display:flex}.ld-status-select{border:1px solid var(--sand-200);background:var(--paper);font-family:var(--font-body);color:var(--ink-900);cursor:pointer;border-radius:10px;flex:1;padding:9px 12px;font-size:14px}.status-dot{background:var(--ash-400);border-radius:999px;flex:none;width:9px;height:9px}.status-dot.good,.status-dot.live{background:var(--good-500)}.status-dot.review{background:var(--warn-500)}.status-dot.info{background:var(--info-500)}.status-dot.archive{background:var(--ash-400)}.lessons-kpi{margin-bottom:24px}.lessons-kpi .kpi{background:var(--paper);border:1px solid var(--sand-200);border-radius:12px;max-width:280px;padding:18px 20px;position:relative;overflow:hidden}.lessons-kpi .kpi.feature{background:var(--ink-900);border-color:var(--ink-900);color:var(--paper)}.lessons-kpi .kpi .label{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--sky-300);margin-bottom:8px;font-size:10.5px}.lessons-kpi .kpi .num{font-family:var(--font-display);letter-spacing:-.02em;color:var(--paper);font-size:36px;line-height:1}.lessons-kpi .kpi.feature:after{content:"";background:radial-gradient(circle,#7fd2ee2e,#0000 70%);border-radius:50%;width:140px;height:140px;position:absolute;top:-50px;right:-50px}.lesson-cell{align-items:center;gap:12px;min-width:240px;display:flex}.lesson-thumb{width:44px;height:44px;color:var(--paper);font-family:var(--font-display);letter-spacing:-.01em;border-radius:9px;flex:0 0 44px;place-items:center;font-size:18px;line-height:1;display:grid}.lesson-thumb.tone-0{background:radial-gradient(120% 100% at 100% 0,#4a6fa5,#1e3a5f)}.lesson-thumb.tone-1{background:radial-gradient(120% 100% at 100% 0,#c97b4a,#8e4f2a)}.lesson-thumb.tone-2{background:radial-gradient(120% 100% at 100% 0,#5f7f8e,#2e5887)}.lesson-thumb.tone-3{background:radial-gradient(120% 100% at 100% 0,#6b7f5a,#3f6b5a)}.lesson-thumb.tone-4{background:radial-gradient(120% 100% at 100% 0,#b5895a,#7e5a3c)}.lesson-thumb.tone-5{background:radial-gradient(120% 100% at 100% 0,#6a85a8,#14253f)}.lesson-thumb.tone-6{background:radial-gradient(120% 100% at 100% 0,#29b6e6,#1e3a5f)}.lesson-thumb.tone-7{background:radial-gradient(120% 100% at 100% 0,#a56f4a,#5a3b23)}.lesson-info .name{color:var(--ink-900);margin:0 0 3px;font-size:14px;font-weight:500;line-height:1.25}.lesson-info .meta{color:var(--ash-400);font-size:12px;font-family:var(--font-mono);letter-spacing:.04em;align-items:center;gap:6px;margin:0;display:flex}.lesson-info .meta+.meta{margin-top:2px}.lesson-info .meta .mod-code{color:var(--ink-700);background:var(--sand-100);border-radius:5px;padding:1px 5px;font-size:10.5px}.lesson-info .meta.loc{color:var(--ash-300)}.person{align-items:center;gap:9px;display:flex}.person .avatar{background:linear-gradient(135deg, var(--ember-300), var(--ember-500));width:30px;height:30px;color:var(--ink-900);font-family:var(--font-display);border-radius:50%;flex:0 0 30px;place-items:center;font-size:14px;display:grid}.person .who{color:var(--ink-900);font-size:13.5px;font-weight:500}.schedule-cell{flex-direction:column;line-height:1.3;display:flex}.schedule-cell .d{color:var(--ink-900);font-size:13.5px}.schedule-cell .h{color:var(--ash-400);font-size:12px;font-family:var(--font-mono);letter-spacing:.04em}.pill{border-radius:var(--radius-pill);font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;white-space:nowrap;align-items:center;gap:6px;padding:4px 10px;font-size:10.5px;font-weight:500;display:inline-flex}.pill .dot{border-radius:50%;width:6px;height:6px}.pill.good{background:var(--good-50);color:var(--good-500)}.pill.good .dot{background:var(--good-500)}.pill.live{background:var(--good-50);color:var(--good-500)}.pill.live .dot{background:var(--good-500)}.pill.review{background:var(--warn-50);color:var(--warn-500)}.pill.review .dot{background:var(--warn-500)}.pill.info{background:var(--info-50);color:var(--info-500)}.pill.info .dot{background:var(--info-500)}.pill.archive{background:var(--sand-100);color:var(--ash-500)}.pill.archive .dot{background:var(--ash-400)}.join-link{font:500 13px var(--font-body);color:var(--ink-700);border:1px solid var(--sand-200);transition:all .15s var(--ease-out);border-radius:8px;align-items:center;gap:6px;padding:6px 12px;display:inline-flex}.join-link:hover{border-color:var(--ink-300);background:var(--sand-50);color:var(--ember-500)}.muted{color:var(--ash-300)}.filter-anchor{position:relative}.filter-panel{z-index:40;background:var(--paper);border:1px solid var(--sand-200);border-radius:var(--radius-card);width:320px;max-width:calc(100vw - 48px);box-shadow:var(--shadow-card);padding:16px;position:absolute;top:calc(100% + 8px);right:0}.filter-field{margin-bottom:14px}.filter-label{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ash-400);margin-bottom:7px;font-size:10px;display:block}.filter-status{flex-wrap:wrap;gap:7px;display:flex}.filter-dates{align-items:center;gap:8px;display:flex}.filter-dates input{border:1px solid var(--sand-200);border-radius:var(--radius-input);background:var(--sand-50);min-width:0;font:400 13px var(--font-body);color:var(--ink-900);flex:1;padding:8px 10px}.filter-dates input:focus-within,.filter-dates input:focus{border-color:var(--ink-700);background:var(--paper);outline:none;box-shadow:0 0 0 4px #1e3a5f0f}.filter-dates .sep{color:var(--ash-300)}.filter-input{border:1px solid var(--sand-200);border-radius:var(--radius-input);background:var(--sand-50);width:100%;font:400 13px var(--font-body);color:var(--ink-900);padding:8px 10px}.filter-input:focus{border-color:var(--ink-700);background:var(--paper);outline:none;box-shadow:0 0 0 4px #1e3a5f0f}.filter-actions{border-top:1px solid var(--sand-100);justify-content:space-between;align-items:center;margin-top:18px;padding-top:14px;display:flex}.filter-clear{appearance:none;cursor:pointer;color:var(--ash-500);font:500 13px var(--font-body);text-decoration:underline;-webkit-text-decoration-color:var(--sand-200);text-decoration-color:var(--sand-200);text-underline-offset:3px;background:0 0;border:0;transition:color .15s}.filter-clear:hover{color:var(--ember-500)}.filter-apply{appearance:none;background:var(--ink-700);color:var(--paper);border-radius:var(--radius-input);cursor:pointer;font:500 13px var(--font-body);transition:all .2s var(--ease-out);border:0;padding:9px 18px}.filter-apply:hover{background:var(--ink-900)}@media (width<=820px){.page-head h1{font-size:34px}}.jr-pane{background:var(--stage-panel);border-left:1px solid var(--stage-border);flex-direction:column;min-height:0;display:flex;overflow:hidden}.jr-pane-head{border-bottom:1px solid var(--stage-border);flex-shrink:0;padding:16px 18px 14px}.jr-pane-row1{align-items:center;gap:10px;margin-bottom:4px;display:flex}.jr-pane-row1 h2{font-family:var(--font-display);letter-spacing:-.01em;margin:0;font-size:22px;font-weight:400}.jr-count-badge{font-family:var(--font-mono);color:var(--good-400);letter-spacing:.04em;background:#4fbe7c24;border:1px solid #4fbe7c40;border-radius:999px;padding:3px 9px;font-size:11px}.jr-pane-collapse{appearance:none;border:1px solid var(--stage-border);color:var(--stage-text-mute);cursor:pointer;width:32px;height:32px;transition:all .15s var(--ease-out);background:#ffffff0d;border-radius:8px;place-items:center;margin-left:auto;display:grid}.jr-pane-collapse:hover{color:var(--stage-text);background:#ffffff1a}.jr-pane-auto{color:var(--stage-text-faint);align-items:center;gap:7px;font-size:11.5px;display:inline-flex}.jr-auto-dot{background:var(--good-400);border-radius:50%;width:6px;height:6px;animation:1.6s ease-in-out infinite jrPulse}@keyframes jrPulse{0%,to{opacity:1}50%{opacity:.3}}.jr-att-stats{border-bottom:1px solid var(--stage-border);flex-shrink:0;grid-template-columns:repeat(3,1fr);gap:8px;padding:14px 18px;display:grid}.jr-att-stat{border:1px solid var(--stage-border);background:#ffffff08;border-radius:10px;padding:10px 12px}.jr-att-stat .n{font-family:var(--font-display);letter-spacing:-.01em;font-size:26px;line-height:1}.jr-att-stat .l{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--stage-text-faint);align-items:center;gap:6px;margin-top:5px;font-size:9px;display:flex}.jr-att-stat .l .d{border-radius:50%;width:6px;height:6px}.jr-att-stat.present .n{color:var(--good-400)}.jr-att-stat.present .d{background:var(--good-400)}.jr-att-stat.unmarked .n{color:var(--ember-300)}.jr-att-stat.unmarked .d{background:var(--ember-500)}.jr-att-stat.absent .n{color:var(--bad-500)}.jr-att-stat.absent .d{background:var(--bad-500)}.jr-pane-search{flex-shrink:0;padding:12px 18px 0}.jr-pane-search .f{border:1px solid var(--stage-border);background:#ffffff0a;border-radius:9px;align-items:center;gap:8px;padding:9px 12px;display:flex}.jr-pane-search .f svg{color:var(--stage-text-faint)}.jr-pane-search .f input{color:var(--stage-text);font:400 12.5px var(--font-body);background:0 0;border:0;outline:none;flex:1}.jr-pane-search .f input::placeholder{color:var(--stage-text-faint)}.jr-roster{flex:1;padding:10px 12px 12px;overflow-y:auto}.jr-roster::-webkit-scrollbar{width:6px}.jr-roster::-webkit-scrollbar-thumb{background:#ffffff14;border-radius:999px}.jr-roster-empty{color:var(--stage-text-faint);padding:14px 8px;font-size:12.5px}.jr-roster h5{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--stage-text-faint);justify-content:space-between;margin:12px 6px 6px;font-size:9px;font-weight:500;display:flex}.jr-att-row{border-radius:9px;grid-template-columns:34px 1fr auto;align-items:center;gap:11px;padding:9px 8px;transition:background .15s;display:grid}.jr-att-row:hover{background:#ffffff0a}.jr-att-row .av{width:34px;height:34px;font-family:var(--font-display);color:var(--paper);border-radius:50%;place-items:center;font-size:15px;display:grid;position:relative}.jr-att-row .av .presence{border:2px solid var(--stage-panel);background:var(--stage-text-faint);border-radius:50%;width:11px;height:11px;position:absolute;bottom:-1px;right:-1px}.jr-att-row .av .presence.on{background:var(--good-400)}.jr-att-row .info .name{color:var(--stage-text);font-size:13px;font-weight:500;line-height:1.2}.jr-att-row .info .sub{font-family:var(--font-mono);color:var(--stage-text-faint);letter-spacing:.04em;margin-top:2px;font-size:10px}.jr-att-row .stat{flex-direction:column;align-items:flex-end;gap:4px;display:flex}.jr-tag{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;border-radius:999px;padding:3px 8px;font-size:9px}.jr-tag.present{color:var(--good-400);background:#4fbe7c1f}.jr-tag.unmarked{color:var(--ember-300);background:#c97b4a24}.jr-tag.absent{color:var(--bad-500);background:#b2504024}.jr-att-row .stat .time{font-family:var(--font-mono);color:var(--stage-text-faint);letter-spacing:.04em;font-size:9.5px}.jr-att-row .qa{gap:3px;display:none}.jr-att-row:hover .qa{display:inline-flex}.jr-att-row:hover .stat{display:none}.jr-att-row .qa button{appearance:none;border:1px solid var(--stage-border);width:28px;height:28px;color:var(--stage-text-mute);cursor:pointer;transition:all .15s var(--ease-out);background:#ffffff0d;border-radius:7px;place-items:center;display:grid}.jr-att-row .qa button:disabled{opacity:.5;cursor:default}.jr-att-row .qa button.mp:hover{color:var(--good-400);background:#4fbe7c2e;border-color:#4fbe7c66}.jr-att-row .qa button.ma:hover{color:var(--bad-500);background:#b250402e;border-color:#b2504066}.jr-pane-foot{border-top:1px solid var(--stage-border);flex-shrink:0;gap:10px;padding:12px 16px;display:flex}.jr-pane-foot button{appearance:none;cursor:pointer;font:500 12.5px var(--font-body);transition:all .18s var(--ease-out);border-radius:9px;flex:1;justify-content:center;align-items:center;gap:7px;padding:10px;display:inline-flex}.jr-pane-foot .export{border:1px solid var(--stage-border);color:var(--stage-text);background:#ffffff0d}.jr-pane-foot .export:hover{background:#ffffff1a}.jr-pane-foot .export:disabled{opacity:.5;cursor:default}.join-room{--stage-bg:#0b1626;--stage-panel:#13243c;--stage-panel-2:#0f1e33;--stage-border:#7fd2ee14;--stage-text:#f0eae0;--stage-text-mute:#f0eae09e;--stage-text-faint:#f0eae066;--good-400:#4fbe7c;--bad-500:#b25040;background:var(--stage-bg);height:100dvh;color:var(--stage-text);font-family:var(--font-body);grid-template-rows:60px 1fr;display:grid;overflow:hidden}.jr-topbar{background:var(--stage-panel-2);border-bottom:1px solid var(--stage-border);align-items:center;gap:12px;padding:0 20px;display:flex}.jr-logo{opacity:.92;height:21px}.jr-sep{background:var(--stage-border);width:1px;height:22px}.jr-who-t{font-family:var(--font-display);letter-spacing:-.01em;color:var(--stage-text);font-size:18px;line-height:1.2}.jr-who-s{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--stage-text-faint);margin-top:2px;font-size:10px}.jr-chip{border:1px solid var(--stage-border);color:var(--stage-text-mute);font-size:12px;font-family:var(--font-mono);letter-spacing:.04em;background:#ffffff0d;border-radius:999px;align-items:center;gap:7px;padding:6px 10px;display:inline-flex}.jr-chip:first-of-type{margin-left:6px}.jr-dot{background:var(--stage-text-faint);border-radius:50%;width:8px;height:8px}.jr-chip.live .jr-dot{background:var(--good-400)}.jr-chip.sdk .jr-dot{background:var(--sky-300)}.jr-right{align-items:center;gap:8px;margin-left:auto;display:flex}.jr-ti{appearance:none;border:1px solid var(--stage-border);color:var(--stage-text-mute);cursor:pointer;height:38px;font:500 12.5px var(--font-body);transition:all .15s var(--ease-out);background:#ffffff0d;border-radius:9px;align-items:center;gap:8px;padding:0 12px;display:inline-flex}.jr-ti:hover{color:var(--stage-text);background:#ffffff1a}.jr-ti.danger:hover{color:#e6a99e;background:#b250402e;border-color:#b2504066}.jr-ti-count{font-family:var(--font-mono);background:var(--ember-500);color:var(--ink-900);letter-spacing:.02em;border-radius:999px;padding:1px 6px;font-size:10px}.jr-body{min-height:0;transition:grid-template-columns .4s var(--ease-out);grid-template-columns:1fr 384px;display:grid}.jr-body.pane-collapsed{grid-template-columns:1fr 0}.join-room.is-student .jr-body{grid-template-columns:1fr}.jr-stage{border:1px solid var(--stage-border);background:radial-gradient(120% 120% at 50% 0,#14253f 0%,#0b1626 60%);border-radius:16px;min-width:0;min-height:0;margin:14px;display:flex;position:relative;overflow:hidden}.join-room.is-student .jr-stage{margin:12px}body[data-zoom-view=on] #zmmtg-root{border-radius:16px;width:auto;height:auto;inset:74px 14px 14px;overflow:hidden}body[data-zoom-view=on][data-zoom-role=teacher][data-zoom-pane=open] #zmmtg-root{right:412px}@media (width<=860px){body[data-zoom-view=on] #zmmtg-root{right:14px}}body:not([data-zoom-view=on]) #zmmtg-root{display:none!important}.jr-rays{pointer-events:none;opacity:.5;background:conic-gradient(from 200deg,#0000 0deg,#7fd2ee0d 12deg,#0000 24deg 36deg,#c97b4a0d 48deg,#0000 60deg 72deg,#7fd2ee0d 84deg,#0000 96deg);border-radius:50%;width:620px;height:620px;position:absolute;top:-120px;left:50%;transform:translate(-50%);-webkit-mask:radial-gradient(circle,#000 30%,#0000 62%);mask:radial-gradient(circle,#000 30%,#0000 62%)}.jr-lobby{z-index:4;grid-template-columns:1.05fr .95fr;align-items:center;gap:clamp(24px,4vw,56px);padding:clamp(20px,4vw,64px);display:grid;position:absolute;inset:0}.join-room.is-student .jr-lobby{grid-template-columns:1fr;max-width:760px;margin:0 auto}.jr-preview{aspect-ratio:16/10;background:radial-gradient(circle at 38% 32%,#4a6fa5,#1e3a5f 55%,#0e1b30);border:1px solid #ffffff14;border-radius:16px;place-items:center;display:grid;position:relative;overflow:hidden;box-shadow:0 40px 90px -30px #000000b3}.jr-avatar{background:linear-gradient(135deg, var(--ember-300), var(--ember-500));width:130px;height:130px;color:var(--ink-900);font-family:var(--font-display);border:4px solid #ffffff1a;border-radius:50%;place-items:center;font-size:64px;display:grid}.jr-cam-hint{font-family:var(--font-mono);letter-spacing:.06em;color:var(--stage-text-mute);background:#0b162699;border-radius:7px;align-items:center;gap:7px;padding:5px 10px;font-size:10.5px;display:inline-flex;position:absolute;bottom:14px;left:14px}.jr-pre-ctrls{gap:8px;display:flex;position:absolute;top:14px;right:14px}.jr-pre-btn{appearance:none;width:40px;height:40px;color:var(--stage-text);cursor:pointer;transition:all .15s var(--ease-out);background:#0b16269e;border:1px solid #ffffff1a;border-radius:10px;place-items:center;display:grid}.jr-pre-btn:hover{background:#0b1626d9}.jr-pre-btn.off{background:var(--bad-500);border-color:var(--bad-500);color:var(--paper)}.jr-eyebrow{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--sky-300);align-items:center;gap:9px;margin-bottom:14px;font-size:10.5px;display:inline-flex}.jr-h1{font-family:var(--font-display);letter-spacing:-.02em;margin:0 0 6px;font-size:clamp(34px,4vw,50px);font-weight:400;line-height:1.02}.jr-h1 em{color:var(--ember-300);font-style:italic}.jr-lead{color:var(--stage-text-mute);max-width:46ch;margin:0 0 22px;font-size:15px}.jr-meta-row{flex-wrap:wrap;gap:8px;margin-bottom:24px;display:flex}.jr-m{border:1px solid var(--stage-border);color:var(--stage-text-mute);background:#ffffff0a;border-radius:9px;align-items:center;gap:8px;padding:8px 12px;font-size:12.5px;display:inline-flex}.jr-m svg{color:var(--sky-300)}.jr-m b{color:var(--stage-text);font-weight:500}.jr-join-actions{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.jr-btn-join{appearance:none;cursor:pointer;background:var(--ember-500);color:var(--ink-900);font:600 15px var(--font-body);letter-spacing:.01em;transition:all .2s var(--ease-out);border:0;border-radius:11px;align-items:center;gap:10px;padding:14px 26px;display:inline-flex;box-shadow:0 16px 36px -16px #c97b4aa6}.jr-btn-join:hover{background:var(--ember-300);transform:translateY(-1px)}.jr-btn-join:disabled{opacity:.7;cursor:default;transform:none}.jr-toast{z-index:8;background:var(--stage-panel-2);border:1px solid var(--stage-border);color:var(--stage-text);opacity:0;pointer-events:none;transition:all .25s var(--ease-out);border-radius:10px;align-items:center;gap:10px;padding:11px 16px;font-size:13px;display:flex;position:absolute;bottom:22px;left:50%;transform:translate(-50%)translateY(8px);box-shadow:0 18px 40px -16px #0009}.jr-toast.show{opacity:1;transform:translate(-50%)translateY(0)}.jr-toast.err{color:var(--ember-300);border-color:#b2504080}.jr-student-leave{z-index:6;appearance:none;cursor:pointer;background:var(--bad-500);color:var(--paper);font:500 13px var(--font-body);border:0;border-radius:11px;align-items:center;gap:8px;padding:11px 18px;display:inline-flex;position:absolute;bottom:16px;right:16px;box-shadow:0 16px 36px -16px #b25040b3}@keyframes jrFadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.join-room.play-in .jr-topbar{animation:jrFadeUp .5s var(--ease-out) 40ms backwards}.join-room.play-in .jr-stage{animation:jrFadeUp .6s var(--ease-out) .1s backwards}.join-room.play-in .jr-pane{animation:jrFadeUp .6s var(--ease-out) .16s backwards}@media (prefers-reduced-motion:reduce){.join-room.play-in *{animation:none!important}}@media (width<=1180px){.jr-lobby{grid-template-columns:1fr;max-width:640px}.jr-preview{display:none}}@media (width<=860px){.join-room:not(.is-student) .jr-body{grid-template-columns:1fr}.join-room:not(.is-student) .jr-pane,.jr-who-s{display:none}}:root{--cat-booked-fg:#1e3a5f;--cat-booked-bg:#e3eaf4;--cat-booked-br:#b3c5de;--cat-pending_review-fg:#8e4f2a;--cat-pending_review-bg:#f8e8da;--cat-pending_review-br:#e2a77e;--cat-done-fg:#3f6b5a;--cat-done-bg:#e6eeec;--cat-done-br:#b7d0c5;--cat-refunded-fg:#5a3b6b;--cat-refunded-bg:#ede3f1;--cat-refunded-br:#c8b5d2;--cat-no_show_student-fg:#8e3b3b;--cat-no_show_student-bg:#f6e3e1;--cat-no_show_student-br:#e0b4ae}.cal-shell{background:var(--paper);border:1px solid var(--sand-200);border-radius:var(--radius-card);box-shadow:var(--shadow-card);overflow:hidden}.cat-booked{background:var(--cat-booked-bg);border-color:var(--cat-booked-br);color:var(--cat-booked-fg)}.cat-pending_review{background:var(--cat-pending_review-bg);border-color:var(--cat-pending_review-br);color:var(--cat-pending_review-fg)}.cat-done{background:var(--cat-done-bg);border-color:var(--cat-done-br);color:var(--cat-done-fg)}.cat-refunded{background:var(--cat-refunded-bg);border-color:var(--cat-refunded-br);color:var(--cat-refunded-fg)}.cat-no_show_student{background:var(--cat-no_show_student-bg);border-color:var(--cat-no_show_student-br);color:var(--cat-no_show_student-fg)}.cal-toolbar{border-bottom:1px solid var(--sand-200);flex-wrap:wrap;align-items:center;gap:14px;padding:18px 22px;display:flex}.nav-group{align-items:center;gap:6px;display:flex}.nav-btn{appearance:none;background:var(--paper);border:1px solid var(--sand-200);cursor:pointer;width:34px;height:34px;color:var(--ash-500);transition:all .15s var(--ease-out);border-radius:8px;place-items:center;display:grid}.nav-btn:hover{border-color:var(--ink-300);color:var(--ink-700);background:var(--sand-50)}.today-btn{appearance:none;background:var(--paper);border:1px solid var(--sand-200);font:500 13px var(--font-body);color:var(--ink-900);cursor:pointer;transition:all .15s var(--ease-out);border-radius:8px;padding:8px 14px}.today-btn:hover{border-color:var(--ink-300);background:var(--sand-50)}.cal-title{font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink-900);margin:0 8px;font-size:28px;font-weight:400;line-height:1}.cal-title em{color:var(--ash-400);font-size:22px;font-style:italic}.toolbar-right{align-items:center;gap:10px;margin-left:auto;display:flex}.view-seg{background:var(--sand-50);border:1px solid var(--sand-200);border-radius:10px;padding:3px;display:inline-flex}.view-seg button{appearance:none;font:500 13px var(--font-body);color:var(--ash-500);cursor:pointer;transition:all .18s var(--ease-out);background:0 0;border:0;border-radius:7px;align-items:center;gap:7px;padding:7px 16px;display:inline-flex}.view-seg button:hover{color:var(--ink-700)}.view-seg button.active{background:var(--paper);color:var(--ink-900);box-shadow:0 1px #14253f0f,0 4px 12px -8px #14253f2e}.cal-subject{align-items:center;gap:8px;display:inline-flex}.cal-subject .cmb{min-width:220px}.cal-empty{color:var(--ash-400);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:72px 24px;display:flex}.cal-empty p{max-width:320px;margin:0;font-size:14px;line-height:1.5}.legend-strip{border-bottom:1px solid var(--sand-100);background:var(--sand-50);color:var(--ash-500);flex-wrap:wrap;align-items:center;gap:16px;padding:10px 22px;font-size:12.5px;display:flex}.legend-strip .label{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ash-400);font-size:10.5px}.legend-item{align-items:center;gap:7px;display:inline-flex}.legend-item .swatch{background:var(--cat-booked-bg);border:1px solid var(--cat-booked-br);border-radius:4px;flex:0 0 12px;width:12px;height:12px}.legend-item.cat-pending_review .swatch{background:var(--cat-pending_review-bg);border-color:var(--cat-pending_review-br)}.legend-item.cat-done .swatch{background:var(--cat-done-bg);border-color:var(--cat-done-br)}.legend-item.cat-refunded .swatch{background:var(--cat-refunded-bg);border-color:var(--cat-refunded-br)}.legend-item.cat-no_show_student .swatch{background:var(--cat-no_show_student-bg);border-color:var(--cat-no_show_student-br)}.legend-item.cat-booked,.legend-item.cat-pending_review,.legend-item.cat-done,.legend-item.cat-refunded,.legend-item.cat-no_show_student{color:var(--ash-500);background:0 0}.legend-strip .count{font-family:var(--font-mono);color:var(--ash-400);letter-spacing:.06em;margin-left:auto;font-size:11px}.week-header{border-bottom:1px solid var(--sand-200);background:var(--paper);grid-template-columns:64px repeat(7,1fr);display:grid}.week-header .day{border-left:1px solid var(--sand-100);flex-direction:column;align-items:center;gap:4px;padding:14px 10px 12px;display:flex}.week-header .day .dow{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ash-400);font-size:10.5px}.week-header .day .num{font-family:var(--font-display);color:var(--ink-900);letter-spacing:-.01em;font-size:24px;line-height:1}.week-header .day.today .num{color:var(--paper);background:var(--ink-700);border-radius:50%;place-items:center;width:32px;height:32px;font-size:16px;display:grid}.week-header .day.today .dow{color:var(--ember-500)}.week-header .day.weekend .dow,.week-header .day.weekend .num{color:var(--ash-300)}.week-grid{scrollbar-gutter:stable;grid-template-columns:64px repeat(7,1fr);grid-auto-rows:28px;max-height:68vh;display:grid;position:relative;overflow-y:auto}.week-grid .col.past{background:var(--sand-50);cursor:default}.week-grid .time-cell{font-family:var(--font-mono);color:var(--ash-400);text-align:right;letter-spacing:.04em;border-right:1px solid var(--sand-200);grid-column:1;padding:0 8px 0 0;font-size:10.5px;line-height:1;transform:translateY(-4px)}.week-grid .col{border-left:1px solid var(--sand-100);position:relative}.week-grid .row-line{border-top:1px solid var(--sand-100)}.week-grid .row-line.half{border-top:1px dashed var(--sand-100)}.week-grid .col.today{background:#c97b4a0a}.now-line{border-top:2px solid var(--ember-500);z-index:4;pointer-events:none;height:0;position:absolute;left:64px;right:0}.now-line:before{content:"";background:var(--ember-500);border-radius:50%;width:10px;height:10px;position:absolute;top:-6px;left:-6px;box-shadow:0 0 0 4px #c97b4a2e}.now-line .label{font-family:var(--font-mono);color:var(--ember-500);background:var(--paper);letter-spacing:.04em;border:1px solid var(--ember-300);border-radius:4px;padding:1px 5px;font-size:10.5px;position:absolute;top:-8px;left:-52px}.evt{z-index:2;cursor:pointer;transition:all .15s var(--ease-out);border-left:3px solid;border-radius:8px;padding:6px 9px;font-size:12px;line-height:1.3;position:absolute;left:4px;right:4px;overflow:hidden}.evt:hover{z-index:3;transform:translateY(-1px);box-shadow:0 8px 18px -10px #14253f47}.evt .t{font-family:var(--font-mono);letter-spacing:.04em;opacity:.7;font-size:10px}.evt .ttl{margin:2px 0 1px;font-size:12.5px;font-weight:500;line-height:1.2}.evt .meta{opacity:.7;font-size:11px;line-height:1.25}.week-grid .col.creatable{cursor:pointer}.evt-ghost{border-left-color:var(--sky-500);z-index:5;pointer-events:none;background:#29b6e624}.cal-create-hint{color:var(--ash-400);font-size:11px;font-style:italic}.month-grid{background:var(--sand-100);grid-template-columns:repeat(7,1fr);gap:1px;display:grid}.month-grid .dow-cell{background:var(--paper);font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ash-400);padding:12px 14px;font-size:10.5px}.month-grid .dow-cell.weekend{color:var(--ash-300)}.month-day{background:var(--paper);min-height:118px;padding:10px 12px 12px;position:relative}.month-day.outside{background:#fbf8f2}.month-day.outside .day-num{color:var(--ash-300)}.month-day.today .day-num{color:var(--paper);background:var(--ink-700);border-radius:50%;place-items:center;width:28px;height:28px;font-size:16px;display:grid}.month-day .day-num{font-family:var(--font-display);color:var(--ink-900);letter-spacing:-.01em;margin-bottom:8px;font-size:20px;line-height:1;display:inline-block}.month-day .day-num .dow{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ash-400);vertical-align:middle;margin-left:6px;font-size:9.5px}.month-day .month-evts{flex-direction:column;gap:3px;display:flex}.m-evt{white-space:nowrap;text-overflow:ellipsis;cursor:pointer;border-left:3px solid;border-radius:5px;padding:3px 7px;font-size:11px;line-height:1.2;overflow:hidden}.m-evt .t{font-family:var(--font-mono);opacity:.7;margin-right:4px;font-size:9.5px}.more-link{color:var(--ash-400);margin-top:2px;font-size:11px}.cal-state{color:var(--ash-400);border-top:1px solid var(--sand-100);padding:18px 22px;font-size:13px}.cal-loading{align-items:center;gap:10px;display:inline-flex}.cal-pop-scrim{z-index:40;position:fixed;inset:0}.cal-popover{z-index:41;background:var(--paper);border:1px solid var(--sand-200);border-radius:14px;width:280px;padding:16px 16px 14px;position:fixed;box-shadow:0 12px 32px -12px #14253f47}.cal-pop-close{appearance:none;cursor:pointer;color:var(--ash-400);background:0 0;border:0;border-radius:6px;place-items:center;width:24px;height:24px;display:grid;position:absolute;top:10px;right:10px}.cal-pop-close:hover{background:var(--sand-100);color:var(--ink-700)}.cal-pop-status{border:1px solid;border-radius:999px;margin-bottom:8px;padding:3px 9px;font-size:11px;font-weight:500;display:inline-block}.cal-pop-title{color:var(--ink-900);margin:0 0 2px;font-size:14.5px;font-weight:600;line-height:1.25}.cal-pop-time{font-family:var(--font-mono);color:var(--ash-400);letter-spacing:.02em;margin:0 0 12px;font-size:11.5px}.cal-pop-meta{flex-direction:column;gap:9px;margin:0;display:flex}.cal-pop-meta>div{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.cal-pop-meta dt{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ash-400);font-size:9.5px}.cal-pop-meta dd{color:var(--ink-900);text-align:right;margin:0;font-size:12.5px}.cal-pop-att{align-items:center;gap:7px;display:inline-flex}.att-dot{border-radius:50%;flex:0 0 9px;width:9px;height:9px}.att-present{background:var(--cat-done-fg)}.att-absent{background:var(--cat-no_show_student-fg)}.att-unmarked{background:var(--ash-300)}.cal-pane-loading{z-index:60;background:#14253f1f;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}@media (width<=820px){.cal-toolbar{gap:8px}.cal-title{font-size:22px}.month-day{min-height:88px;padding:6px}.month-day .day-num{font-size:16px}}.msg-shell{border:1px solid var(--sand-200);border-radius:var(--radius-card);background:var(--paper);height:calc(100vh - 168px);min-height:520px;box-shadow:var(--shadow-card);grid-template-columns:320px 1fr 320px;display:grid;overflow:hidden}.inbox{border-right:1px solid var(--sand-200);background:var(--paper);flex-direction:column;min-height:0;display:flex;overflow:hidden}.inbox-head{border-bottom:1px solid var(--sand-100);padding:20px 20px 14px;position:relative}.inbox-head .new-conv{background:var(--ink-700);color:var(--paper);font-family:var(--font-body);cursor:pointer;border:none;border-radius:999px;align-items:center;gap:6px;padding:7px 12px;font-size:12.5px;font-weight:500;transition:background .15s;display:inline-flex;position:absolute;top:18px;right:18px}.inbox-head .new-conv:hover{background:var(--ink-900)}.inbox-head .crumb{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ash-400);margin-bottom:8px;font-size:10px}.inbox-head h1{font-family:var(--font-display);letter-spacing:-.02em;color:var(--ink-900);margin:0 0 4px;font-size:28px;font-weight:400;line-height:1}.inbox-head h1 em{color:var(--ember-500);font-style:italic}.inbox-head .sub-en{color:var(--ash-400);font-size:12px;font-family:var(--font-mono);letter-spacing:.06em;margin:0}.inbox-search{border-bottom:1px solid var(--sand-100);padding:12px 20px}.inbox-search .field{background:var(--sand-50);border:1px solid var(--sand-200);border-radius:var(--radius-input);color:var(--ash-400);transition:all .18s var(--ease-out);align-items:center;gap:8px;padding:9px 12px;display:flex}.inbox-search .field:focus-within{border-color:var(--ink-700);background:var(--paper);box-shadow:0 0 0 4px #1e3a5f14}.inbox-search input{font:400 13.5px var(--font-body);color:var(--ink-900);background:0 0;border:0;outline:none;flex:1}.conv-list{flex:1;min-height:0;overflow-y:auto}.conv-empty{text-align:center;color:var(--ash-400);padding:28px 20px;font-size:13px}.conv{text-align:left;appearance:none;cursor:pointer;border:0;border-bottom:1px solid var(--sand-100);background:0 0;grid-template-columns:42px 1fr;gap:12px;width:100%;padding:12px 20px 14px;transition:background .15s;display:grid;position:relative}.conv:hover{background:var(--sand-50)}.conv.active{background:var(--ember-50)}.conv.active:before{content:"";background:var(--ember-500);width:3px;position:absolute;top:0;bottom:0;left:0}.conv.unread .preview{color:var(--ink-900);font-weight:500}.conv.unread .name{font-weight:600}.conv.unread .time{color:var(--ember-500);font-weight:600}.conv .avatar{width:42px;height:42px;font-family:var(--font-display);color:var(--paper);border-radius:50%;place-items:center;font-size:18px;display:grid}.conv .avatar.a{background:linear-gradient(135deg, #4a6fa5, var(--ink-700))}.conv-body{min-width:0;display:block}.conv .row1{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.conv .name{color:var(--ink-900);white-space:nowrap;text-overflow:ellipsis;font-size:14px;overflow:hidden}.conv .time{font-family:var(--font-mono);color:var(--ash-400);flex:none;font-size:11px}.conv .subj{color:var(--ash-400);font-size:12px;font-family:var(--font-mono);letter-spacing:.04em;white-space:nowrap;text-overflow:ellipsis;margin:2px 0;display:block;overflow:hidden}.conv .preview{-webkit-line-clamp:2;color:var(--ash-500);-webkit-box-orient:vertical;margin-top:2px;font-size:13px;line-height:1.4;display:-webkit-box;overflow:hidden}.conv .preview .you{color:var(--ash-400)}.conv .unread-n{background:var(--ember-500);color:var(--ink-900);font-family:var(--font-mono);border-radius:var(--radius-pill);margin-top:6px;padding:2px 7px;font-size:10px;font-weight:600;display:inline-block}.chat{background:var(--sand-50);flex-direction:column;min-width:0;min-height:0;display:flex;overflow:hidden}.chat-empty{color:var(--ash-300);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:10px;display:flex}.chat-head{border-bottom:1px solid var(--sand-200);background:var(--paper);align-items:center;gap:14px;padding:14px 24px;display:flex}.chat-head .avatar{background:linear-gradient(135deg, #4a6fa5, var(--ink-700));width:44px;height:44px;color:var(--paper);font-family:var(--font-display);border-radius:50%;flex:0 0 44px;place-items:center;font-size:20px;display:grid}.chat-head .who h2{font-family:var(--font-display);letter-spacing:-.01em;color:var(--ink-900);margin:0;font-size:22px;font-weight:400;line-height:1.1}.chat-head .who .meta{color:var(--ash-400);font-size:12px;font-family:var(--font-mono);letter-spacing:.04em;align-items:center;gap:8px;margin-top:2px;display:flex}.chat-head .who .meta .dot-sep{opacity:.4}.stream{flex:1;min-height:0;padding:24px 28px 12px;overflow-y:auto}.day-sep{color:var(--ash-400);font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;align-items:center;gap:12px;margin:14px 0 18px;font-size:10.5px;display:flex}.day-sep:before,.day-sep:after{content:"";background:var(--sand-200);flex:1;height:1px}.day-sep .pill{background:var(--paper);border:1px solid var(--sand-200);border-radius:var(--radius-pill);color:var(--ash-500);padding:3px 10px}.msg{grid-template-columns:36px 1fr;gap:12px;max-width:78%;margin-bottom:14px;display:grid}.msg .avatar{width:36px;height:36px;font-family:var(--font-display);color:var(--paper);background:linear-gradient(135deg, #4a6fa5, var(--ink-700));border-radius:50%;align-self:flex-end;place-items:center;font-size:15px;display:grid}.msg .bubble{background:var(--paper);border:1px solid var(--sand-200);border-radius:14px 14px 14px 4px;padding:10px 14px 9px}.msg .text{color:var(--ink-900);white-space:pre-wrap;word-wrap:break-word;margin:0;font-size:14px;line-height:1.55}.msg .meta{font-family:var(--font-mono);color:var(--ash-400);letter-spacing:.04em;align-items:center;gap:8px;margin-top:6px;font-size:10.5px;display:flex}.msg .flag-tag{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ember-500);background:var(--ember-50);border-radius:var(--radius-pill);cursor:help;padding:1px 7px;font-size:9.5px}.msg.me{grid-template-columns:1fr 36px;margin-left:auto}.msg.me .avatar{background:linear-gradient(135deg, var(--ember-300), var(--ember-500));color:var(--ink-900);order:2}.msg.me .bubble{background:var(--ink-700);color:var(--paper);border:0;border-radius:14px 14px 4px;order:1}.msg.me .text{color:var(--paper)}.msg.me .meta{color:#fffcf78c;justify-content:flex-end}.msg.me .flag-tag{color:var(--sky-300);background:#7fd2ee29}.typing-row{grid-template-columns:36px 1fr;gap:12px;margin-bottom:14px;display:grid}.typing-row .avatar{width:36px;height:36px;font-family:var(--font-display);color:var(--paper);background:linear-gradient(135deg, #4a6fa5, var(--ink-700));border-radius:50%;place-items:center;font-size:15px;display:grid}.typing-bubble{background:var(--paper);border:1px solid var(--sand-200);border-radius:14px 14px 14px 4px;align-items:center;gap:5px;width:fit-content;padding:14px 16px;display:inline-flex}.typing-bubble .b{background:var(--ash-300);border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite msg-bounce}.typing-bubble .b:nth-child(2){animation-delay:.15s}.typing-bubble .b:nth-child(3){animation-delay:.3s}@keyframes msg-bounce{0%,60%,to{opacity:.5;transform:translateY(0)}30%{opacity:1;transform:translateY(-5px)}}@media (prefers-reduced-motion:reduce){.typing-bubble .b{animation:none}}.composer{border-top:1px solid var(--sand-200);background:var(--paper);padding:14px 24px 18px}.composer-box{border:1px solid var(--sand-200);border-radius:var(--radius-card);background:var(--paper);transition:all .18s var(--ease-out)}.composer-box:focus-within{border-color:var(--ink-700);box-shadow:0 0 0 4px #1e3a5f14}.composer-input{width:100%;font:400 14px var(--font-body);color:var(--ink-900);resize:none;background:0 0;border:0;outline:none;min-height:44px;max-height:160px;padding:13px 15px 6px;line-height:1.55}.composer-input::placeholder{color:var(--ash-300)}.composer-toolbar{align-items:center;gap:10px;padding:4px 10px 8px;display:flex}.composer-toolbar .hint{font-family:var(--font-mono);letter-spacing:.06em;color:var(--ash-400);margin-left:4px;font-size:10.5px}.composer-toolbar .send{appearance:none;background:var(--ink-700);color:var(--paper);font:500 13px var(--font-body);cursor:pointer;transition:all .18s var(--ease-out);border:0;border-radius:8px;align-items:center;gap:8px;margin-left:auto;padding:8px 16px;display:inline-flex}.composer-toolbar .send:hover{background:var(--ink-900)}.composer-toolbar .send:disabled{opacity:.5;cursor:default}.context{border-left:1px solid var(--sand-200);background:var(--paper);min-height:0;overflow-y:auto}.ctx-head{background:radial-gradient(120% 100% at 100% 0%, #25456e 0%, var(--ink-700) 60%, var(--ink-900) 100%);color:var(--paper);padding:26px 22px 20px}.ctx-head .big-avatar{background:linear-gradient(135deg, var(--ink-300), var(--ink-700));width:72px;height:72px;color:var(--paper);font-family:var(--font-display);border-radius:50%;place-items:center;margin-bottom:12px;font-size:30px;display:grid}.ctx-head h3{font-family:var(--font-display);letter-spacing:-.01em;margin:0 0 4px;font-size:24px;font-weight:400}.ctx-head .role{color:#fffcf7a6;font-size:12.5px;font-family:var(--font-mono);letter-spacing:.06em;margin:0}.ctx-section{border-bottom:1px solid var(--sand-100);padding:20px 22px}.ctx-section h4{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ash-400);margin:0 0 12px;font-size:10px;font-weight:500}.ctx-meta{grid-template-columns:1fr 1fr;gap:14px;display:grid}.ctx-meta .k{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ash-400);margin-bottom:3px;font-size:9.5px}.ctx-meta .v{color:var(--ink-900);font-size:13px;font-weight:500}.ctx-link{color:var(--ink-700);align-items:center;gap:6px;font-size:13px;font-weight:500;display:inline-flex}.ctx-link:hover{color:var(--ember-500)}@media (width<=1280px){.msg-shell{grid-template-columns:300px 1fr}.context{display:none}}@media (width<=900px){.msg-shell{grid-template-columns:1fr}.inbox{display:none}}.nc-scrim{z-index:70;background:#14253f52;position:fixed;inset:0}.nc-card{background:var(--paper);border:1px solid var(--sand-200);width:min(420px,100vw - 32px);max-height:70vh;box-shadow:var(--shadow-card);z-index:71;border-radius:16px;flex-direction:column;display:flex;position:fixed;top:50%;left:50%;overflow:hidden;transform:translate(-50%,-50%)}.nc-head{justify-content:space-between;align-items:center;padding:18px 20px 12px;display:flex}.nc-head h2{font-family:var(--font-display);letter-spacing:-.02em;color:var(--ink-900);margin:0;font-size:22px;font-weight:400}.nc-close{color:var(--ash-500);cursor:pointer;background:0 0;border:none;padding:4px;display:inline-flex}.nc-field{border:1px solid var(--sand-200);color:var(--ash-400);border-radius:10px;align-items:center;gap:8px;margin:0 20px;padding:10px 12px;display:flex}.nc-field input{font-family:var(--font-body);color:var(--ink-900);background:0 0;border:none;outline:none;flex:1;font-size:14px}.nc-results{margin-top:8px;padding:6px 12px 14px;overflow-y:auto}.nc-hint{color:var(--ash-400);text-align:center;margin:0;padding:18px 0;font-size:13px}.nc-option{cursor:pointer;width:100%;font-family:var(--font-body);color:var(--ink-900);text-align:left;background:0 0;border:none;border-radius:10px;align-items:center;gap:10px;padding:9px 10px;font-size:14px;display:flex}.nc-option:hover:not(:disabled){background:var(--sand-50)}.nc-option:disabled{cursor:default;opacity:.6}.nc-avatar{background:var(--ink-700);width:30px;height:30px;color:var(--paper);border-radius:999px;flex:none;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:inline-flex}.msg-shell.admin{grid-template-columns:340px 1fr}.inbox-head .admin-seg{width:100%;margin-top:12px}.inbox-head .admin-seg button{flex:1;justify-content:center}.pair-sep{color:var(--ash-400);margin:0 2px;font-weight:400}.conv .flag-count{font-family:var(--font-mono);color:var(--ember-500);background:var(--ember-50);border-radius:var(--radius-pill);align-self:flex-start;align-items:center;gap:4px;margin-top:6px;padding:2px 8px;font-size:10.5px;font-weight:600;display:inline-flex}.msg.flagged .bubble{border-color:var(--ember-300);box-shadow:0 0 0 1px var(--ember-300)}.msg.flagged.me .bubble{box-shadow:0 0 0 1px var(--ember-500)}.cell-strong{color:var(--ink-900);font-weight:600}.drawer-actions{justify-content:flex-end;align-items:center;gap:10px;display:flex}.drawer-actions .tt-btn:first-child{margin-right:auto}.course-form{flex-direction:column;gap:16px;display:flex}.form-field{flex-direction:column;display:flex}.form-label{color:var(--ash-500);margin-bottom:8px;font-size:13px}.form-select,.form-textarea{width:100%;font:inherit;color:var(--ink-900);background:var(--paper);border:1px solid var(--sand-200);border-radius:var(--radius-input);transition:all .18s var(--ease-out);outline:none;padding:14px 16px;font-size:15px}.form-textarea{resize:vertical;min-height:72px}.form-select:focus,.form-textarea:focus{border-color:var(--ink-700);box-shadow:0 0 0 4px #1e3a5f1a}.form-select:disabled{background:var(--sand-100);color:var(--ash-400);cursor:not-allowed;opacity:.7;border-style:dashed}.alert{border-radius:var(--radius-input);color:var(--ember-500);background:#c97b4a1f;padding:10px 14px;font-size:13px}.modules-section{border-top:1px solid var(--sand-200);margin-top:28px;padding-top:20px}.modules-head{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.modules-head h3{font-family:var(--font-display);color:var(--ink-900);margin:0;font-size:18px}.modules-empty{color:var(--ash-400);margin:4px 0 12px;font-size:13px}.modules-list{flex-direction:column;gap:8px;margin:0 0 14px;padding:0;list-style:none;display:flex}.module-row{border:1px solid var(--sand-200);border-radius:var(--radius-input);background:var(--paper);justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.module-row.archived{opacity:.6}.module-info{flex-direction:column;min-width:0;display:flex}.module-name{color:var(--ink-900);font-size:14px;font-weight:600}.module-meta{font-family:var(--font-mono);color:var(--ash-400);letter-spacing:.02em;font-size:11px}.module-actions{flex:none;align-items:center;gap:6px;display:flex}.icon-act{border:1px solid var(--sand-200);background:var(--sand-50);width:30px;height:30px;color:var(--ash-500);cursor:pointer;transition:all .16s var(--ease-out);border-radius:8px;place-items:center;display:inline-grid}.icon-act:hover{color:var(--ink-700);border-color:var(--ink-700)}.module-form{border:1px solid var(--sand-200);border-radius:var(--radius-card);background:var(--sand-50);flex-direction:column;gap:14px;padding:16px;display:flex}.module-form-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.module-active{color:var(--ash-500);align-items:center;gap:8px;font-size:13px;display:inline-flex}.module-form-actions{justify-content:flex-end;gap:10px;display:flex}.esd-empty{color:var(--ash-400);margin:0;font-size:13px}.esd-modules{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.esd-module{border:1px solid var(--sand-200);border-radius:var(--radius-input);background:var(--sand-50);padding:10px 12px}.esd-module.on{background:var(--paper);border-color:var(--ink-700)}.esd-check{color:var(--ink-900);cursor:pointer;align-items:center;gap:10px;font-size:14px;display:flex}.esd-check input{accent-color:var(--ink-700);width:15px;height:15px}.esd-config{border-top:1px solid var(--sand-200);flex-direction:column;gap:12px;margin-top:12px;padding-top:12px;display:flex}.esd-frow{flex-direction:column;gap:6px;display:flex}.esd-flabel{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ash-400);font-size:10.5px}.esd-config input,.esd-config select{font:inherit;color:var(--ink-900);background:var(--paper);border:1px solid var(--sand-200);border-radius:var(--radius-input);outline:none;padding:9px 12px;font-size:13.5px}.esd-count{width:110px}.esd-classroom{width:100%}.esd-newclass{align-items:center;gap:6px;display:flex}.esd-newclass input{flex:1;min-width:0}.dt-search{background:var(--sand-50);border:1px solid var(--sand-200);border-radius:var(--radius-input);color:var(--ash-400);align-items:center;gap:8px;padding:8px 12px;display:inline-flex}.dt-search input{font:inherit;color:var(--ink-900);background:0 0;border:0;outline:none;min-width:220px;font-size:14px}.credentials-card{flex-direction:column;gap:14px;display:flex}.credentials-lead{color:var(--ink-900);margin:0;font-size:14px}.credentials-grid{flex-direction:column;gap:10px;margin:0;display:flex}.credentials-grid div{background:var(--sand-50);border:1px solid var(--sand-200);border-radius:var(--radius-input);flex-direction:column;gap:3px;padding:12px 14px;display:flex}.credentials-grid dt{text-transform:uppercase;letter-spacing:.1em;color:var(--ash-400);font-size:11px}.credentials-grid dd{font-family:var(--font-mono);color:var(--ink-900);-webkit-user-select:all;user-select:all;margin:0;font-size:14px}.credentials-note{color:var(--ash-400);margin:0;font-size:12px;line-height:1.5}.enroll-teacher{align-items:center;gap:8px;max-width:340px;margin-top:8px;display:flex}.enroll-teacher-label{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ash-400);flex:none;font-size:10px}.enroll-teacher .cmb{flex:1;min-width:0}.enroll-teacher .muted{color:var(--ash-400);font-size:12px}.enr-toolbar-start{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.enr-detail{flex-direction:column;gap:14px;margin:0;display:flex}.enr-detail>div{flex-direction:column;gap:3px;display:flex}.enr-detail dt{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ash-500);font-size:11px}.enr-detail dd{font-family:var(--font-body);color:var(--ink-900);margin:0;font-size:14px}.upl-actions{justify-content:flex-end;gap:8px;display:flex}.upl-file{flex-direction:column;gap:8px;display:flex}.upl-file-label{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ash-500);font-size:11px}.upl-file input[type=file]{border:1px dashed var(--sand-200);background:var(--sand-50);width:100%;color:var(--ash-500);font-family:var(--font-body);cursor:pointer;border-radius:10px;padding:12px;font-size:14px}.upl-file input[type=file]::file-selector-button{border:1px solid var(--sand-200);background:var(--paper);color:var(--ink-700);font-family:var(--font-body);cursor:pointer;border-radius:999px;margin-right:12px;padding:8px 14px;font-size:13px}.upl-file input[type=file]::file-selector-button:hover{border-color:var(--ember-500);color:var(--ember-500)}.upl-hint{color:var(--ash-500);margin:0;font-size:12px}.inv-month{flex-direction:column;gap:6px;display:flex}.inv-missing{background:var(--warn-50);min-width:22px;color:var(--warn-500);font-family:var(--font-mono);border-radius:999px;justify-content:center;padding:1px 7px;font-size:12px;display:inline-flex}.inv-ok{color:var(--ash-400)}.inv-hint{color:var(--ash-400);margin:0 0 12px;font-size:12.5px}.inv-warn{border-radius:var(--radius-input);background:var(--warn-50);border:1px solid var(--warn-500);color:var(--warn-500);margin:0 0 14px;padding:8px 12px;font-size:13px}.inv-group{border-bottom:1px solid var(--sand-200);margin-bottom:18px;padding-bottom:14px}.inv-group:last-of-type{border-bottom:0}.inv-group-title{font-family:var(--font-body);color:var(--ink-900);align-items:baseline;gap:10px;margin:0 0 8px;font-size:14px;font-weight:600;display:flex}.inv-group-kind{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ember-500);font-size:11px}.inv-rows{margin:0;padding:0;list-style:none}.inv-row{border-bottom:1px dashed var(--sand-200);grid-template-columns:64px 1fr auto;gap:10px;padding:6px 0;font-size:13.5px;display:grid}.inv-row:last-child{border-bottom:0}.inv-date{color:var(--ash-400);font-family:var(--font-mono);font-size:12.5px}.inv-student{color:var(--ash-500)}.inv-fee{color:var(--ink-900);font-variant-numeric:tabular-nums}.inv-fee.missing{color:var(--warn-500);font-family:var(--font-mono);font-size:12px}.inv-subtotal{text-align:right;color:var(--ash-500);margin:8px 0 0;font-size:13px}.inv-subtotal strong{color:var(--ink-900);font-variant-numeric:tabular-nums}.settings-grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:20px;max-width:880px;display:grid}.settings-card{padding:22px 24px}.settings-section-title{font-family:var(--font-display);color:var(--ink-900);margin:0;font-size:20px}.settings-section-note{color:var(--ash-500);margin:4px 0;font-size:13px}.settings-ok{background:var(--sand-50);border:1px solid var(--sand-200);border-radius:var(--radius-input);color:var(--ink-700);padding:10px 12px;font-size:13px}
