@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-duration:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.z-50{z-index:50}.container{width:100%}.mx-auto{margin-inline:auto}.flex{display:flex}.hidden{display:none}.inline{display:inline}.table{display:table}.h-screen{height:100vh}.max-h-\[85vh\]{max-height:85vh}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-screen{width:100vw}.max-w-\[80\%\]{max-width:80%}.flex-1{flex:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded-full{border-radius:3.40282e38px}.border{border-style:var(--tw-border-style);border-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.text-center{text-align:center}.break-all{word-break:break-all}.whitespace-pre-wrap{white-space:pre-wrap}.text-transparent{color:#0000}.opacity-70{opacity:.7}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.duration-300{--tw-duration:.3s;transition-duration:.3s}@media(hover:hover){.group-hover\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}}.disabled\:opacity-50:disabled{opacity:.5}:root{--bg-dark:#0f172a;--bg-panel:#1e293bb3;--text-main:#f8fafc;--text-muted:#94a3b8;--accent-primary:#3b82f6;--accent-hover:#2563eb;--danger:#ef4444;--success:#22c55e;--glass-border:#ffffff1a;--shadow-glow:0 0 20px #3b82f680}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-dark);color:var(--text-main);background-image:radial-gradient(circle at 100% 0,#3b82f626,#0000 40%),radial-gradient(circle at 0 100%,#8b5cf626,#0000 40%);flex-direction:column;min-height:100vh;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;display:flex;overflow:hidden}.app-container{flex-direction:column;width:100vw;height:100vh;display:flex}.glass-panel{background:var(--bg-panel);-webkit-backdrop-filter:blur(12px);border:1px solid var(--glass-border);border-radius:16px;box-shadow:0 8px 32px #0000004d}h1{-webkit-text-fill-color:transparent;background:linear-gradient(90deg,#60a5fa,#a78bfa);-webkit-background-clip:text;margin-bottom:1rem;font-size:2.5rem;font-weight:700}h2{margin-bottom:.5rem;font-size:1.5rem;font-weight:600}p{color:var(--text-muted);line-height:1.6}input{border:1px solid var(--glass-border);width:100%;color:var(--text-main);background:#0f172a99;border-radius:8px;margin-bottom:1rem;padding:12px 16px;font-size:1rem;transition:all .3s}input:focus{border-color:var(--accent-primary);outline:none;box-shadow:0 0 0 2px #3b82f633}button{background:var(--accent-primary);color:#fff;cursor:pointer;border:none;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:12px 24px;font-size:1rem;font-weight:600;transition:all .3s;display:inline-flex}button:hover{background:var(--accent-hover);box-shadow:var(--shadow-glow);transform:translateY(-1px)}button.danger{border:1px solid var(--danger);color:var(--danger);background:0 0}button.danger:hover{background:#ef44441a;box-shadow:0 0 20px #ef44444d}@keyframes slideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}.animate-slide-in{animation:.4s cubic-bezier(.16,1,.3,1) forwards slideIn}.unlock-screen{flex:1;justify-content:center;align-items:center;padding:2rem;display:flex}.unlock-box{text-align:center;width:100%;max-width:400px;padding:2.5rem}.unlock-box p{margin-bottom:2rem}.unlock-box form{flex-direction:column;display:flex}.dashboard-layout{height:100vh;display:flex}.sidebar{border-right:1px solid var(--glass-border);flex-direction:column;gap:1rem;width:250px;padding:2rem 1rem;display:flex}.sidebar .nav-item{color:var(--text-muted);cursor:pointer;border-radius:8px;padding:12px 16px;font-weight:500;text-decoration:none;transition:all .2s}.sidebar .nav-item:hover,.sidebar .nav-item.active{color:var(--text-main);background:#ffffff0d}.main-content{flex:1;padding:2rem;overflow-y:auto}.status-bar{justify-content:space-between;align-items:center;margin-bottom:2rem;display:flex}.status-indicator{background:#0003;border-radius:20px;align-items:center;gap:8px;padding:6px 12px;font-size:.9rem;font-weight:500;display:flex}.status-dot{border-radius:50%;width:10px;height:10px}.status-dot.connected{background:var(--success);box-shadow:0 0 10px var(--success)}.status-dot.disconnected{background:var(--danger);box-shadow:0 0 10px var(--danger)}.mappings-table{border-collapse:collapse;width:100%;margin-top:1rem}.mappings-table th,.mappings-table td{text-align:left;border-bottom:1px solid var(--glass-border);padding:12px 16px}.mappings-table th{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.9rem;font-weight:600}.notification-feed{flex-direction:column;gap:1rem;display:flex}.alert-card{border-left:4px solid var(--danger);background:#ef44441a;border-radius:0 8px 8px 0;align-items:center;padding:16px;display:flex}.alert-card .alert-time{color:var(--text-muted);margin-right:16px;font-size:.85rem}.alert-card .alert-content{flex:1}.alert-card .student-name{color:var(--text-main);font-size:1.1rem;font-weight:700}.alert-card .event-type{color:var(--danger);font-weight:600}.center{justify-content:center;align-items:center}.page{width:100%;max-width:1100px;margin:0 auto}.login-box{width:420px;max-width:92vw;padding:2rem}.login-title{text-align:center;margin-bottom:.25rem}.login-subtitle{text-align:center;margin-bottom:1.5rem;font-size:.8rem}.stack{flex-direction:column;gap:.75rem;display:flex}.stack label{color:var(--text-muted);flex-direction:column;gap:.35rem;font-size:.9rem;display:flex}.stack input{margin-bottom:0}.row{align-items:center;gap:.5rem;display:flex}.hint{font-size:.85rem}.small{font-size:.8rem}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.tight{margin-bottom:.1rem}.capitalize{text-transform:capitalize}.banner{border-radius:8px;flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:1rem;padding:.75rem 1rem;font-size:.92rem;display:flex}.banner.error{color:#fca5a5;background:#ef44441f;border:1px solid #ef444459}.banner.warn{color:#fcd34d;background:#f59e0b1f;border:1px solid #f59e0b59}.banner.info{color:#93c5fd;background:#3b82f61f;border:1px solid #3b82f659}button.secondary{border:1px solid var(--glass-border);color:var(--text-main);background:#ffffff0f}button.secondary:hover{box-shadow:none;background:#ffffff1f}button.small{padding:6px 12px;font-size:.85rem}button.link{color:var(--accent-primary);background:0 0;border:none;padding:0;font-weight:500}button.link:hover{box-shadow:none;background:0 0;text-decoration:underline;transform:none}button:disabled{opacity:.55;cursor:not-allowed;box-shadow:none;transform:none}.card-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;margin-top:1.5rem;display:grid}.card{justify-content:space-between;align-items:center;gap:1rem;padding:1.25rem 1.5rem;display:flex}.card h3{margin-bottom:.2rem}.clickable{cursor:pointer;transition:transform .15s,border-color .15s}.clickable:hover{border-color:var(--accent-primary);transform:translateY(-2px)}.pill{white-space:nowrap;background:#ffffff14;border-radius:999px;padding:4px 10px;font-size:.8rem}.empty{margin-top:1.5rem;padding:2rem}.section{margin-bottom:2rem}.section.glass-panel{padding:1.5rem}.sidebar{gap:1.25rem}.sidebar .stack{gap:.5rem}.status-indicator{align-self:flex-start}.status-dot.connecting{background:#f59e0b;box-shadow:0 0 10px #f59e0b}.alert-card{gap:1rem}.alert-card .detail{color:var(--text-muted)}.alert-card.struggle{background:#f59e0b1a;border-left-color:#f59e0b}.alert-card.struggle .event-type{color:#f59e0b}.alert-card.session_end{background:#94a3b81a;border-left-color:#94a3b8}.alert-card.session_end .event-type{color:#94a3b8}.alert-card.off_topic{background:#8b5cf61a;border-left-color:#a78bfa}.alert-card.off_topic .event-type{color:#a78bfa}.mappings-table input.inline{margin:0;padding:8px 10px;font-size:.95rem}.mappings-table td{vertical-align:middle}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-duration{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}.board{--b-bg: #0f172a;--b-panel: #1b2740;--b-line: rgba(255, 255, 255, .12);--b-text: #f8fafc;--b-muted: #a3b1c6;--b-red: #f87171;--b-red-bg: rgba(239, 68, 68, .2);--b-amber: #fbbf24;--b-amber-bg: rgba(245, 158, 11, .17);--b-green: #4ade80;--b-blue: #60a5fa;height:100vh;height:100dvh;width:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:16px max(16px,env(safe-area-inset-right)) 24px max(16px,env(safe-area-inset-left));color:var(--b-text);font-size:17px;-webkit-text-size-adjust:100%}.board--center{display:flex;align-items:center;justify-content:center}.board h1,.board h2{margin:0;background:none;-webkit-text-fill-color:currentColor;color:var(--b-text)}.board p{margin:0;color:inherit;line-height:1.35}.board button{font:inherit;transform:none;box-shadow:none}.board button:hover{transform:none;box-shadow:none}.board-btn{min-height:44px;padding:0 18px;border-radius:10px;border:1px solid transparent;background:transparent;color:var(--b-text);font-weight:600;white-space:nowrap;cursor:pointer;touch-action:manipulation}.board-btn:focus-visible,.board-lang-btn:focus-visible,.tile-technical-chip:focus-visible,.board-key-input:focus-visible{outline:3px solid var(--b-blue);outline-offset:2px}.board-btn--primary{background:#2563eb}.board-btn--primary:hover{background:#1d4ed8}.board-btn--primary:disabled{background:#334155;color:var(--b-muted);cursor:default}.board-btn--outline{border-color:var(--b-line);background:#ffffff0a}.board-btn--outline:hover{background:#ffffff1a}.board-btn--quiet{color:var(--b-muted);font-weight:500}.board-btn--quiet:hover{background:#ffffff0f}.board-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 20px;margin-bottom:14px}.board-heading{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 16px}.board .board-title{font-size:1.5rem;font-weight:700}.board-conn{display:inline-flex;align-items:center;gap:8px;color:var(--b-muted);font-size:.95rem}.board-conn-dot{width:10px;height:10px;border-radius:50%;background:var(--b-muted)}.board-conn--connected .board-conn-dot{background:var(--b-green)}.board-conn--offline,.board-conn--closed{color:var(--b-amber)}.board-conn--offline .board-conn-dot,.board-conn--closed .board-conn-dot{background:var(--b-amber)}.board-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.board-lang{display:inline-flex;border:1px solid var(--b-line);border-radius:10px;overflow:hidden}.board .board-lang-btn{min-height:44px;min-width:48px;padding:0 12px;border:0;border-radius:0;background:transparent;color:var(--b-muted);font-weight:600;cursor:pointer}.board .board-lang-btn--on{background:#ffffff1f;color:var(--b-text)}.board-banner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;padding:12px 16px;border-radius:12px;border:1px solid var(--b-line);background:#60a5fa24;font-weight:600;font-variant-numeric:tabular-nums}.board-banner--warn{background:var(--b-amber-bg);border-color:#fbbf2480}.board-strip{list-style:none;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:6px;margin:0 0 16px;padding:0}.board-strip-item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;border-radius:10px;background:#ffffff0a;color:var(--b-muted);min-width:0}.board-strip-item--on{background:#60a5fa29;color:var(--b-text)}.board-strip-count{font-size:1.5rem;font-weight:700;line-height:1.1;font-variant-numeric:tabular-nums}.board-strip-label{font-size:.8rem;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.board-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(215px,1fr));gap:12px;align-items:start}.tile{display:flex;flex-direction:column;gap:6px;min-height:132px;padding:14px 16px 16px;border-radius:16px;border:2px solid var(--b-line);background:var(--b-panel)}.tile-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.board .tile-table{font-size:1.75rem;font-weight:700;line-height:1.1;overflow-wrap:anywhere}.tile-table-word{font-size:1.05rem;font-weight:600;color:var(--b-muted)}.tile-time{font-size:1.05rem;color:var(--b-muted);font-variant-numeric:tabular-nums}.board .tile-stage{display:flex;flex-wrap:wrap;gap:2px 10px;font-size:1.05rem;color:var(--b-muted)}.tile-cycle{color:var(--b-text);font-weight:600}.tile--done{border-color:#4ade8073}.tile--done .tile-stage{color:var(--b-green)}.tile--needs_you{border-color:var(--b-red);background:linear-gradient(var(--b-red-bg),var(--b-red-bg)),var(--b-panel)}.tile--heads_up{border-color:var(--b-amber);background:linear-gradient(var(--b-amber-bg),var(--b-amber-bg)),var(--b-panel)}.tile--acked{border-style:dashed;background:var(--b-panel)}.tile-alert{display:flex;flex-direction:column;gap:8px;margin-top:6px}.tile-level{font-size:.85rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.tile--needs_you .tile-level{color:var(--b-red)}.tile--heads_up .tile-level{color:var(--b-amber)}.board .tile-reason{font-size:1.15rem;font-weight:600;color:var(--b-text);line-height:1.3}.board .tile-ack{align-self:stretch;min-height:48px;margin-top:2px;background:var(--b-text);color:#0f172a;font-size:1.05rem}.board .tile-ack:hover{background:#e2e8f0}.tile-acked{font-weight:600;color:var(--b-green);font-variant-numeric:tabular-nums}.tile-ack-error{font-size:.9rem;color:var(--b-amber)}.tile-technical{margin-top:auto;padding-top:6px}.board .tile-technical-chip{min-height:32px;padding:0 12px;border-radius:999px;border:1px solid var(--b-line);background:#ffffff0f;color:var(--b-muted);font-size:.85rem;font-weight:600;cursor:pointer}.board .tile-technical-reason{margin-top:6px;font-size:.95rem;color:var(--b-muted)}.board-empty{margin:12vh auto 0;max-width:32rem;text-align:center;color:var(--b-muted)}.board .board-empty-title{margin-bottom:8px;font-size:1.4rem;font-weight:700;color:var(--b-text)}.board-key{display:flex;flex-direction:column;gap:14px;width:min(30rem,100%);padding:28px;border-radius:18px;border:1px solid var(--b-line);background:var(--b-panel)}.board .board-key-title{font-size:1.6rem;font-weight:700}.board .board-key-hint{color:var(--b-muted)}.board .board-key-error{padding:10px 14px;border-radius:10px;background:var(--b-amber-bg);color:var(--b-text);font-weight:600}.board .board-key-input{width:100%;min-height:48px;margin:0;padding:0 14px;border-radius:10px;border:1px solid var(--b-line);background:#0f172ab3;color:var(--b-text);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:1rem}.board-key .board-btn--primary{min-height:48px}.board-key .board-lang{align-self:flex-start}@media(max-width:700px){.board-strip{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(prefers-reduced-motion:no-preference){.tile{transition:border-color .2s ease,background-color .2s ease}}
