:root{--ink: #1f2a30;--muted: #5b6970;--line: #dde4e6;--paper: #f6f8f7;--card: #ffffff;--brand: #1d6b6b;--brand-dark: #144f4f;--sun: #f2b53a;--good: #2e8b57;--bad: #c0392b;--radius: 14px;font-family:Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:17px;line-height:1.55;color:var(--ink);background:var(--paper)}*{box-sizing:border-box}body{margin:0}a{color:var(--brand)}h1{font-size:1.9rem;line-height:1.2;margin:0 0 .6em}h2{font-size:1.25rem;margin:1.4em 0 .5em}.top-bar{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.6rem 1rem;background:var(--card);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:.6rem;font-weight:700;color:var(--ink);text-decoration:none}.brand-mark{display:grid;place-items:center;width:2rem;height:2rem;border-radius:9px;background:var(--brand);color:#fff;font-weight:800}.help-button{flex:none;display:grid;place-items:center;width:2.6rem;height:2.6rem;border-radius:50%;background:var(--sun);color:var(--ink);font-size:1.3rem;font-weight:800;text-decoration:none}.help-button:focus-visible,a:focus-visible,button:focus-visible,input:focus-visible{outline:3px solid var(--brand);outline-offset:2px}.page{max-width:60rem;margin:0 auto;padding:1.5rem 1rem 3rem}.lead{font-size:1.15rem;color:var(--muted);max-width:40rem}.muted{color:var(--muted)}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));gap:1rem;margin:1.5rem 0}.card{display:flex;flex-direction:column;gap:.3rem;padding:1.2rem;border-radius:var(--radius);background:var(--card);border:1px solid var(--line);color:var(--ink);text-decoration:none}.card:hover{border-color:var(--brand)}.card-title{font-weight:700;font-size:1.1rem;color:var(--brand)}.status{padding:.7rem 1rem;border-radius:10px;background:var(--card);border:1px solid var(--line)}.status-connected strong{color:var(--good)}.status-not-connected strong{color:var(--bad)}.search{display:flex;flex-direction:column;gap:.3rem;max-width:30rem;font-weight:600}.search input{font:inherit;padding:.7rem .9rem;border:2px solid var(--line);border-radius:10px;background:var(--card)}.search input:focus{border-color:var(--brand)}.guides{display:grid;grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:1rem;margin-top:1.2rem}.guide-card{padding:1rem 1.2rem 1.2rem;border-radius:var(--radius);background:var(--card);border:1px solid var(--line)}.guide-card.mine{border:2px solid var(--brand)}.guide-card h2{margin-top:.2rem}.page-list{padding-left:1.3rem}.page-list li{margin:.35rem 0}.button{display:inline-block;padding:.65rem 1.1rem;border-radius:10px;border:2px solid var(--brand);background:var(--brand);color:#fff;font:inherit;font-weight:600;text-decoration:none;cursor:pointer}.button.secondary{background:var(--card);color:var(--brand)}.button:hover{background:var(--brand-dark);color:#fff;border-color:var(--brand-dark)}.whats-new{margin-top:2rem}.whats-new ul{padding-left:1.2rem}.help-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.8rem 1.5rem;margin-bottom:1rem}.help-head h1{margin:0}.crumbs{color:var(--muted);margin-bottom:.8rem}.help-page h1{margin-top:0}.help-body{max-width:42rem;font-size:1.05rem}.help-body ol li,.help-body ul li{margin:.45rem 0}.help-body img{max-width:100%;border:1px solid var(--line);border-radius:10px}.actions{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:2rem}.top-actions{display:flex;align-items:center;gap:.7rem;min-width:0}.who{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.small{font-size:.9rem}.small-button{padding:.35rem .75rem;font-size:.92rem;white-space:nowrap}.button.danger{background:var(--bad);border-color:var(--bad);color:#fff}.button:disabled{opacity:.55;cursor:not-allowed}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.sign-in{display:grid;grid-template-columns:minmax(0,1fr);justify-items:center}.sign-in-card{width:100%;max-width:30rem;margin-top:2rem;padding:2rem 1.6rem;border-radius:var(--radius);background:var(--card);border:1px solid var(--line);display:flex;flex-direction:column;gap:.9rem}.sign-in-card h1,.sign-in-card .lead{margin:0}.google-button{text-align:center;font-size:1.1rem;padding:.85rem 1rem}.dev-sign-in{display:flex;flex-direction:column;gap:.6rem;padding:1rem;border:2px dashed var(--line);border-radius:10px}.notice{padding:.75rem 1rem;border-radius:10px;border:1px solid var(--line);background:var(--card);margin:.6rem 0}.notice-problem{border-color:var(--bad);background:#fdf1ef}.notice-good{border-color:var(--good);background:#eef8f2}label{display:flex;flex-direction:column;gap:.25rem;font-weight:600}input,select{font:inherit;padding:.55rem .7rem;border:2px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink);min-width:0}input:focus,select:focus{border-color:var(--brand);outline:none}.people-tools{display:grid;grid-template-columns:repeat(auto-fit,minmax(19rem,1fr));gap:1rem;margin:1rem 0 1.5rem}.panel{display:flex;flex-direction:column;gap:.7rem;padding:1.1rem 1.2rem;border-radius:var(--radius);background:var(--card);border:1px solid var(--line);min-width:0}.panel h2{margin:0}.file-pick input{padding:.45rem}.filters{display:flex;flex-wrap:wrap;gap:.8rem 1.2rem;margin-bottom:.8rem}.filters label{flex:1 1 14rem}.table-wrap{position:relative;overflow-x:auto;border:1px solid var(--line);border-radius:10px;background:var(--card)}table{width:100%;border-collapse:collapse;font-size:.95rem}th,td{text-align:left;padding:.55rem .7rem;border-bottom:1px solid var(--line);vertical-align:middle}th{background:var(--paper);font-weight:700;white-space:nowrap}tbody tr:last-child td{border-bottom:none}td.email{color:var(--muted);overflow-wrap:anywhere}td.num{font-variant-numeric:tabular-nums}tr.inactive td{color:var(--muted)}.row-actions{white-space:nowrap}.row-actions .button+.button{margin-left:.4rem}.confirm{white-space:normal}.preview-list{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:10px;max-height:26rem;overflow-y:auto}.preview-list li{display:grid;grid-template-columns:4.2rem minmax(0,1fr);gap:.15rem .6rem;padding:.55rem .7rem;border-bottom:1px solid var(--line);border-left:4px solid var(--line)}.preview-list li:last-child{border-bottom:none}.preview-line{color:var(--muted);font-size:.85rem;font-variant-numeric:tabular-nums;padding-top:.15rem}.preview-who{min-width:0}.preview-email{display:block;color:var(--muted);font-size:.9rem;overflow-wrap:anywhere}.preview-what{grid-column:2;font-size:.92rem}.row-add{border-left-color:var(--good)!important}.row-add .preview-what{color:var(--good);font-weight:600}.row-exists .preview-what{color:var(--muted)}.row-error{border-left-color:var(--bad)!important;background:#fdf1ef}.row-error .preview-what{color:var(--bad);font-weight:600}.pill{display:inline-block;padding:.15rem .6rem;border-radius:999px;font-size:.85rem;font-weight:600;white-space:nowrap}.pill-good{background:#e3f4ea;color:#1f6b41}.pill-off{background:#eceff0;color:var(--muted)}@media(max-width:560px){.who{display:none}}@media(max-width:640px){.people-table thead{display:none}.people-table,.people-table tbody{display:block}.people-table tr{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.35rem .6rem;padding:.75rem .8rem;border-bottom:1px solid var(--line)}.people-table tbody tr:last-child{border-bottom:none}.people-table td{display:block;padding:0;border:none;min-width:0}.people-table td:nth-child(1){font-weight:600}.people-table td:nth-child(2){grid-column:1 / -1;grid-row:2}.people-table td:nth-child(3){grid-row:3}.people-table td:nth-child(4){grid-row:1;grid-column:2;justify-self:end}.people-table td.row-actions{grid-row:3;grid-column:2;white-space:normal;text-align:right}}@media print{.no-print{display:none!important}:root{background:#fff;font-size:13pt}.page{max-width:none;padding:0}a{color:inherit;text-decoration:none}}.section-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.6rem 1rem;margin-top:1.4em}.section-head h2{margin:0}ul.cards{list-style:none;padding:0}ul.cards>li{display:flex;min-width:0}ul.cards>li>.card{flex:1;min-width:0}.class-card .card-title{font-size:1.25rem}.class-form{max-width:34rem}fieldset{border:2px solid var(--line);border-radius:10px;padding:.6rem .9rem .8rem;margin:0;min-width:0}legend{font-weight:600;padding:0 .3rem}label.check{flex-direction:row;align-items:center;gap:.6rem;font-weight:400;padding:.3rem 0;min-width:0}label.check input{width:1.3rem;height:1.3rem;flex:none;padding:0}.form-actions{display:flex;flex-wrap:wrap;gap:.7rem}.class-admin{margin:1rem 0}.member-list,.pick-list{list-style:none;margin:.8rem 0 0;padding:0;border:1px solid var(--line);border-radius:10px;background:var(--card)}.pick-list{max-height:20rem;overflow-y:auto;margin:0;padding:0 .7rem}.member-list li{display:flex;align-items:center;justify-content:space-between;gap:.8rem;padding:.55rem .8rem;border-bottom:1px solid var(--line)}.member-list li:last-child,.pick-list li:last-child{border-bottom:none}.pick-list li{border-bottom:1px solid var(--line)}.member-list li.inactive strong{color:var(--muted)}.member-who{min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:.2rem .5rem}.member-email{display:block;width:100%;color:var(--muted);font-size:.9rem;overflow-wrap:anywhere}.pick-list .member-email{display:inline;width:auto}.add-students{margin:.6rem 0}.add-students h3{margin:0;font-size:1.1rem}.preview-class{color:var(--ink);font-weight:400}.preview-note{grid-column:2;font-size:.88rem;color:#8a5a00}.list-title{font-size:1rem;margin:.8rem 0 .4rem;color:var(--muted)}.lesson-list{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:10px;background:var(--card)}.lesson-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1rem;padding:.7rem .9rem;border-bottom:1px solid var(--line)}.lesson-row:last-child{border-bottom:none}.lesson-main{display:flex;flex-direction:column;gap:.1rem;min-width:0;flex:1 1 16rem;color:var(--ink);text-decoration:none}.lesson-main:hover .lesson-title{text-decoration:underline}.lesson-title{font-weight:700;color:var(--brand)}.lesson-when{color:var(--muted);font-size:.95rem}.lesson-main .pill{align-self:flex-start;margin-top:.2rem}.lesson-row.cancelled .lesson-title,.lesson-row.cancelled .lesson-when{text-decoration:line-through;color:var(--muted)}.join-button{font-size:1.1rem;padding:.6rem 1.6rem;background:var(--good);border-color:var(--good)}.lesson-row[class*=status-]{border-left:6px solid transparent}.lesson-row.status-upcoming{border-left-color:var(--line)}.lesson-row.status-soon{border-left-color:#2f6fb3}.lesson-row.status-live{border-left-color:var(--good);background:#f3fbf6}.lesson-row.status-late{border-left-color:#d9822b;background:#fff6ec}.lesson-row.status-very-late{border-left-color:var(--bad);background:#fdf1ef}.lesson-row.status-ended,.lesson-row.status-cancelled{border-left-color:#b7c0c3}.lesson-row.status-ended .lesson-title{color:var(--muted)}.pill-upcoming{background:#eef2f3;color:#3f4d53}.pill-soon{background:#e6f0fa;color:#1e4f85}.pill-live{background:#e3f4ea;color:#1f6b41}.pill-late{background:#ffe8cf;color:#8a4a0c}.pill-very-late{background:#fbdcd7;color:#8f2318}.pill-ended,.pill-cancelled{background:#eceff0;color:var(--muted)}.join-wait{color:var(--muted);font-size:.92rem;font-weight:600}.join-box{margin:1rem 0 1.4rem}.join-box .join-button{font-size:1.25rem;padding:.8rem 2.4rem}.past-lessons{margin-top:1rem}.past-lessons summary{cursor:pointer;font-weight:600;padding:.4rem 0}.lesson-form{max-width:40rem}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));gap:.7rem}.hint{font-weight:400;font-size:.88rem;color:var(--muted);margin:0}.day-picks{display:flex;flex-wrap:wrap;gap:0 1rem}.day-pick{flex:0 0 auto}.lesson-manage{margin-top:1rem;display:flex;flex-direction:column;gap:.6rem}.confirm p{margin:0 0 .6rem}.live-page{padding:.5rem .75rem 1rem;max-width:100rem;margin:0 auto}.live-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1rem;padding:.3rem 0 .6rem}.live-title{font-size:1.25rem;margin:0;min-width:0;overflow-wrap:anywhere}.live-controls{display:flex;flex-wrap:wrap;gap:.4rem}.control{font:inherit;font-size:.92rem;font-weight:600;padding:.45rem .8rem;border-radius:999px;border:2px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer;white-space:nowrap}.control:hover{border-color:var(--brand)}.control-on{border-color:var(--good);color:#1f6b41;background:#eef8f2}.control-hand{border-color:var(--sun);background:#fff6df}.control-end{border-color:var(--bad);color:var(--bad)}.live-notice{margin:.3rem 0;padding:.5rem .8rem;border-radius:10px;background:var(--card);border:1px solid var(--line);font-size:.95rem}.live-notice-warn{border-color:var(--sun);background:#fff6df}.live-body{display:grid;grid-template-columns:minmax(0,1fr) 19rem;gap:.75rem}.live-main{display:flex;flex-direction:column;gap:.75rem;min-width:0}.stage{display:flex;gap:.5rem;overflow-x:auto;padding-bottom:.25rem;min-height:7rem}.stage-empty{color:var(--muted);align-self:center}.tile{position:relative;flex:0 0 auto;width:10.5rem;aspect-ratio:4 / 3;margin:0;border-radius:12px;overflow:hidden;background:#24343a;color:#fff}.tile-large{width:17rem;aspect-ratio:16 / 9}.tile video{width:100%;height:100%;object-fit:cover;display:block}.tile video.mirror{transform:scaleX(-1)}.tile-initials{display:grid;place-items:center;width:100%;height:100%;font-size:1.8rem;font-weight:700;opacity:.8}.tile figcaption{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:center;gap:.35rem;padding:.25rem .45rem;background:linear-gradient(transparent,#0009);font-size:.85rem}.tile-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mic-bar{position:relative;flex:none;width:.45rem;height:1rem;border-radius:3px;background:#ffffff40;overflow:hidden}.mic-bar span{position:absolute;left:0;right:0;bottom:0;transition:height .15s}.mic-on span{background:#3ecf7a}.mic-off span{background:#9aa5a9}.tile-hand{box-shadow:0 0 0 3px var(--sun)}.tile-hand-badge,.hand-flag{display:inline-grid;place-items:center;background:var(--sun);border-radius:999px;animation:hand-flash 1s ease-in-out infinite}.tile-hand-badge{position:absolute;top:.35rem;right:.35rem;width:2rem;height:2rem;font-size:1.1rem}.hand-flag{width:1.5rem;height:1.5rem;font-size:.85rem;margin-left:.3rem}@keyframes hand-flash{50%{opacity:.35}}@media(prefers-reduced-motion:reduce){.tile-hand-badge,.hand-flag{animation:none}}.tile-draw{position:absolute;top:.35rem;left:.35rem;width:2rem;height:2rem;display:inline-grid;place-items:center;border-radius:999px;border:2px solid transparent;background:#ffffffbf;font-size:1rem;padding:0;opacity:.75}button.tile-draw{cursor:pointer}button.tile-draw:hover{opacity:1}.tile-draw-on{background:#dff1ee;border-color:#1b7f78;opacity:1}.button.button-on{background:#dff1ee;color:var(--brand-dark);border-color:#1b7f78}.live-notice-draw{background:#dff1ee;border-color:#1b7f78}.board-area{display:flex;flex-direction:column;min-height:26rem;flex:1;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--muted);overflow:hidden}.board-area>p{margin:auto;padding:1rem;text-align:center}.board-area-page{min-height:70vh}.people-panel{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:.6rem .8rem;align-self:start;max-height:calc(100vh - 7rem);overflow-y:auto}.people-panel h2{font-size:.95rem;margin:.4rem 0}.roster{list-style:none;margin:0 0 .6rem;padding:0}.roster li{display:flex;flex-wrap:wrap;align-items:center;gap:.2rem .5rem;padding:.4rem 0;border-bottom:1px solid var(--line)}.roster li:last-child{border-bottom:none}.roster li.hand{background:#fff6df}.roster-who{flex:1 1 10rem;min-width:0;overflow-wrap:anywhere}.roster-state{color:var(--muted)}.roster-actions{display:flex;gap:.3rem;flex-wrap:wrap}.dot{display:inline-block;width:.6rem;height:.6rem;border-radius:50%;margin-right:.35rem;vertical-align:middle}.dot.mic-on{background:var(--good)}.dot.mic-off{background:#b5bec1}.panel-toggle{display:none}.live-devices{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:1rem;background:#141e228c;overflow-y:auto}.live-devices .device-check{width:min(46rem,100%)}.device-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1rem}.device-preview{min-width:0}.device-preview video{width:100%;aspect-ratio:4 / 3;object-fit:cover;border-radius:12px;background:#24343a;transform:scaleX(-1);display:block}.device-controls{display:flex;flex-direction:column;gap:.55rem;min-width:0}.device-controls select{max-width:100%}.mic-meter{height:.8rem;border-radius:999px;background:var(--line);overflow:hidden}.mic-meter span{display:block;height:100%;background:var(--good);transition:width .1s}.fix-it{margin:0}.waiting{text-align:center;padding:2rem 1rem}.waiting-text{font-size:1.3rem;font-weight:700;margin:0 0 .4rem}@media(max-width:820px){.live-body{grid-template-columns:minmax(0,1fr)}.people-panel{display:none;max-height:none}.live-body.panel-open .people-panel{display:block}.panel-toggle{display:inline-block}.tile{width:8rem}.tile-large{width:12rem}.board-area{min-height:20rem}.device-grid{grid-template-columns:minmax(0,1fr)}}.live-body.no-panel{grid-template-columns:minmax(0,1fr)}.mic-teacher-off span{background:#e0533f}.dot.mic-teacher-off{background:var(--bad)}.dot.cam-on{background:var(--good)}.dot.cam-off{background:#b5bec1}.roster-tools{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:.4rem}.roster-icons{display:flex;flex-wrap:wrap;align-items:center;gap:0 .15rem;margin-top:.1rem}.roster-icons .dot{margin-right:.15rem}.roster-icons .dot+.muted{margin-right:.4rem}.roster-more{flex-basis:100%;display:flex;flex-direction:column;gap:.35rem;padding:.35rem 0 .15rem}.roster-more>.button{align-self:flex-start}.remove-for{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem}.roster li.absent strong{color:var(--muted);font-weight:600}.reminder{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem}.attendance-table select{padding:.3rem .5rem}.mark-note{display:block;color:var(--muted);margin-top:.2rem}.link-button{background:none;border:none;padding:0;font:inherit;color:var(--brand);text-decoration:underline;cursor:pointer}tr.mark-absent td:first-child,tr.mark-excused td:first-child{color:var(--muted)}tr.mark-late td:first-child:after,tr.mark-left_early td:first-child:after{content:" •";color:var(--sun)}.lesson-main .pill-good{align-self:flex-start;margin-top:.2rem}.archived-note{border-color:var(--sun);background:#fff6df}.archived-classes{margin:1rem 0}.archived-classes summary{cursor:pointer;font-weight:600;color:var(--muted)}.board{display:flex;flex-direction:column;flex:1;min-height:0;color:var(--ink, inherit)}.board-stage{position:relative;flex:1;min-height:20rem}.board-host{position:absolute;inset:0}.board-laser-layer{position:absolute;inset:0;z-index:5;cursor:none;touch-action:none}.board-laser-dot{position:absolute;z-index:6;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;background:#e03131;box-shadow:0 0 0 3px #e031314d,0 0 14px 5px #e0313173;pointer-events:none;transition:left 60ms linear,top 60ms linear}.board-laser-mine{transition:none}.board-camera{position:relative;width:100%;height:100%;overflow:hidden;border-radius:6px;background:#1f2a30;color:#fff}.board-camera video{width:100%;height:100%;object-fit:cover;display:block}.board-camera video.mirror{transform:scaleX(-1)}.board-camera-off{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:2rem;font-weight:600;opacity:.8}.board-camera-name{position:absolute;left:6px;bottom:6px;max-width:calc(100% - 12px);padding:1px 6px;border-radius:4px;background:#0000008c;font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.board-camera-layer{position:absolute;inset:0;z-index:3;pointer-events:none;overflow:hidden}.board-camera-spot{position:absolute;transform-origin:center}.board-camera-buttons{position:absolute;right:0;bottom:100%;margin-bottom:4px;display:flex;gap:4px;pointer-events:auto}.board-camera-button{font:inherit;font-size:.75rem;padding:2px 8px;border:1px solid var(--line);border-radius:6px;background:#fff;color:inherit;cursor:pointer;white-space:nowrap}.tile-draggable{cursor:grab}.board-toolbox{position:relative}.board-toolbox-menu{position:absolute;top:100%;left:0;z-index:20;margin-top:4px;display:flex;flex-direction:column;min-width:16rem;padding:4px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 6px 20px #0000001f}.board-toolbox-item{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:.45rem .6rem;border:0;border-radius:8px;background:none;font:inherit;text-align:left;cursor:pointer;color:inherit}.board-toolbox-item:hover,.board-toolbox-item:focus-visible{background:#eef6f5}.board-toolbox-item span{font-size:.8rem;color:var(--muted)}.tool-layer{position:absolute;inset:0;z-index:6;pointer-events:none;overflow:hidden}.tool-window{position:absolute;width:13.5rem;max-width:calc(100% - 8px);pointer-events:auto;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 4px 16px #0000001f;color:var(--ink, #1e1e1e)}.tool-title{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.3rem .4rem .3rem .7rem;border-bottom:1px solid var(--line);font-weight:600;font-size:.9rem;background:#f5faf9;border-radius:12px 12px 0 0;touch-action:none;-webkit-user-select:none;user-select:none}.tool-title-drag{cursor:grab}.tool-close{border:0;background:none;font:inherit;font-size:.9rem;width:1.8rem;height:1.8rem;border-radius:6px;cursor:pointer;color:var(--muted)}.tool-close:hover{background:#fff1ef;color:var(--bad)}.tool-body{padding:.5rem .7rem .6rem}.tool-clock{margin:.1rem 0 .4rem;font-size:2.1rem;font-weight:700;text-align:center;font-variant-numeric:tabular-nums}.tool-done .tool-clock{color:var(--bad);animation:tool-flash 1s ease-in-out 3}@keyframes tool-flash{50%{opacity:.35}}.tool-set{display:flex;justify-content:center;gap:.6rem;margin:.2rem 0 .5rem}.tool-set label{display:flex;align-items:center;gap:.25rem;font-size:.85rem;color:var(--muted)}.tool-set input{width:3.4rem;font:inherit;font-size:1.2rem;text-align:center;padding:.2rem;border:1px solid var(--line);border-radius:6px}.tool-buttons{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:.4rem}.tool-choice{display:inline-flex;gap:.25rem}.tool-scope{display:flex;flex-direction:column;gap:.2rem;margin:0 0 .5rem;font-size:.82rem}.tool-scope label{display:flex;flex-direction:row;align-items:center;gap:.35rem;margin:0;font-weight:400}.tool-scope input{width:auto;margin:0;flex:none}.tool-note{margin:0 0 .4rem;text-align:center;font-size:.85rem;color:var(--muted)}.tool-dice{display:flex;justify-content:center;gap:.5rem;margin:.2rem 0 .5rem}.tool-die{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);width:2.8rem;height:2.8rem;padding:.3rem;border:2px solid #1e1e1e;border-radius:.55rem;background:#fff}.tool-die span{display:block}.tool-die .pip{width:.5rem;height:.5rem;margin:auto;border-radius:50%;background:#1e1e1e}.tool-die-rolling{animation:tool-tumble .3s linear infinite}@keyframes tool-tumble{0%{transform:rotate(0)}50%{transform:rotate(12deg) translateY(-3px)}to{transform:rotate(0)}}.tool-pick{margin:.2rem 0 .5rem;min-height:2.2rem;display:flex;align-items:center;justify-content:center;text-align:center;font-size:1.25rem;font-weight:700;overflow-wrap:anywhere}.tool-pick-spinning{color:var(--muted)}.tool-pick-done{color:#1b7f78}.tile-picked{box-shadow:0 0 0 4px #1b7f78,0 0 18px 4px #1b7f788c}@media(prefers-reduced-motion:reduce){.tool-die-rolling,.tool-done .tool-clock{animation:none}}@media(prefers-reduced-motion:reduce){.board-laser-dot{transition:none}}.board .App-top-bar,.board .App-bottom-bar,.board .layer-ui__wrapper,.board .mobile-misc-tools-container,.board .App-toolbar--mobile{display:none!important}.board-look .board-host{pointer-events:none}.board-toolbar{display:flex;flex-wrap:wrap;gap:.4rem 1rem;padding:.4rem .6rem;border-bottom:1px solid var(--line);background:var(--card)}.board-group{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem}.board-tool{font:inherit;font-size:.9rem;padding:.3rem .6rem;min-height:2.25rem;border:1px solid var(--line);border-radius:8px;background:#fff;color:inherit;cursor:pointer}.board-tool:hover{background:#eef3f4}.board-tool-on{background:#dff1ee;border-color:#1b7f78;font-weight:700}.board-tool-danger{color:var(--bad)}.board-colour{width:1.9rem;height:1.9rem;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px var(--line);cursor:pointer;padding:0}.board-colour-on{box-shadow:0 0 0 3px #1b7f78}.board-confirm{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;width:100%;padding:.4rem .6rem;background:#fff1ef;border-radius:8px}.board-problem{margin:0;padding:.4rem .8rem;background:#fff1ef;color:var(--bad)}.board-note{margin:0;padding:.4rem .8rem}.board-pdf-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.5rem;padding:.35rem .6rem;border-top:1px solid var(--line);background:#fafafa}.board-pdf-bar .board-tool:disabled{opacity:.4;cursor:default}.board-pdf-name{color:var(--muted, #555);max-width:14rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.board-pdf-page{font-weight:600;min-width:7.5rem;text-align:center}.board-pdf-confirm{display:inline-flex;flex-wrap:wrap;align-items:center;gap:.4rem;padding:.2rem .5rem;background:#fff1ef;border-radius:8px}@media(max-width:640px){.board-toolbar{overflow-x:auto;flex-wrap:nowrap}.board-toolbar.board-toolbar-student{overflow-x:visible;flex-wrap:wrap}.board-toolbar-student .board-group{flex-wrap:wrap}.board-group{flex-wrap:nowrap}.board-tool{white-space:nowrap}}.board-round-cursor .board-host canvas,.board-round-cursor .board-host .excalidraw,.board-round-cursor .board-eraser{cursor:var(--board-cursor, crosshair)!important}.board-eraser{position:absolute;inset:0;z-index:5;touch-action:none}.guest-link-details{display:grid;grid-template-columns:max-content 1fr;gap:.35rem .8rem;margin:.6rem 0}.guest-link-details dt{font-weight:600}.guest-link-details dd{margin:0;min-width:0}.guest-link-url{overflow-wrap:anywhere}.guest-link-password{font-size:1.2rem;letter-spacing:.15em}.guest-form{display:flex;flex-direction:column;gap:.8rem;max-width:26rem}.guest-form label{display:flex;flex-direction:column;gap:.3rem;font-weight:600}.guest-waiting{display:flex;flex-direction:column;gap:.4rem;margin:0 0 .5rem}.guest-waiting-row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:0;padding:.5rem .75rem;border:2px solid #1b7f78;border-radius:10px;background:#eef8f6}.guest-waiting-row span{flex:1 1 12rem}.tile figcaption .tile-name{margin-right:auto}.tile-trophies{display:inline-flex;align-items:center;gap:.15rem;padding:0 .35rem 0 .15rem;border-radius:999px;background:#ffffffeb;color:#6b4500;font-weight:700;font-size:.8rem}.tile-trophies-bump{animation:trophy-bump .5s ease-out 1.1s both}.tile-give-trophy{display:inline-flex;align-items:center;margin-left:.2rem;padding:0 .35rem 0 .15rem;border:0;border-radius:999px;background:#fffc;color:#6b4500;font:inherit;font-weight:700;cursor:pointer}.tile-give-trophy:hover{background:#fff}.tile-trophy-fly{position:absolute;z-index:3;left:50%;top:50%;pointer-events:none;animation:trophy-fly 1.3s cubic-bezier(.2,.8,.3,1) forwards;filter:drop-shadow(0 3px 6px rgba(0,0,0,.35))}@keyframes trophy-fly{0%{transform:translate(-50%,-260%) scale(.4) rotate(-20deg);opacity:0}25%{transform:translate(-50%,-60%) scale(1.5) rotate(8deg);opacity:1}45%{transform:translate(-50%,-50%) scale(1.3) rotate(-4deg);opacity:1}to{transform:translate(140%,95%) scale(.35);opacity:0}}@keyframes trophy-bump{0%{transform:scale(1)}40%{transform:scale(1.45)}to{transform:scale(1)}}.roster-trophies{display:inline-flex;align-items:center;gap:.1rem;color:#6b4500;font-weight:700}.roster-pick{width:1.15rem;height:1.15rem;margin:0 .35rem 0 0;flex:none}.trophy-tools{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;margin:0 0 .6rem}.carousel-tools{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .6rem;margin:0 0 .6rem}.carousel-pick{display:inline-flex;align-items:center;gap:.3rem;font-size:.85rem}.carousel-pick select{width:auto;padding:.2rem .4rem}.stage-carousel .tile:last-child{animation:tile-slide-in .6s ease-out}@keyframes tile-slide-in{0%{transform:translate(60%);opacity:0}to{transform:none;opacity:1}}@media(prefers-reduced-motion:reduce){.stage-carousel .tile:last-child{animation:none}}@media(prefers-reduced-motion:reduce){.tile-trophy-fly{animation:none;opacity:0}.tile-trophies-bump{animation:none}}.tool-leaderboard .tool-choice{display:flex;justify-content:center;margin-bottom:.4rem}.leaderboard-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.2rem;max-height:16rem;overflow-y:auto}.leaderboard-list li{display:flex;align-items:center;gap:.4rem;padding:.2rem .35rem;border-radius:8px;font-size:.92rem}.leader-place{width:1.4rem;height:1.4rem;flex:none;display:inline-grid;place-items:center;border-radius:999px;background:#eef2f1;font-weight:700;font-size:.8rem}.leader-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.leader-count{display:inline-flex;align-items:center;gap:.1rem;font-weight:700;color:#6b4500}.leader-1{background:#fff6d6}.leader-1 .leader-place{background:#f2b705;color:#3b2600}.leader-2 .leader-place{background:#d7dde0}.leader-3 .leader-place{background:#e8c4a0}.tool-window-wide{width:19rem}.tool-poll{display:flex;flex-direction:column;gap:.35rem}.poll-question{margin:0;font-weight:700;font-size:1rem;overflow-wrap:anywhere}.poll-options,.poll-results{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.3rem;max-height:18rem;overflow-y:auto}.poll-option{display:block;width:100%;text-align:left;padding:.4rem .55rem;border:1px solid var(--line);border-radius:8px;background:#fff;font:inherit;color:inherit;overflow-wrap:anywhere}.poll-vote{cursor:pointer;min-height:2.5rem}.poll-vote:hover:not(:disabled):not(.poll-mine){background:#f3f7f6}.poll-option.poll-mine{border-color:var(--brand);background:#e6f3ef;box-shadow:inset 0 0 0 1px var(--brand)}.poll-voters{margin:0;font-size:.82rem;color:var(--muted);max-height:4.5rem;overflow-y:auto}.poll-results li{display:grid;grid-template-columns:1fr auto;gap:.15rem .5rem;font-size:.9rem;padding:.15rem .3rem;border-radius:8px}.poll-result-label{overflow-wrap:anywhere}.poll-bar{grid-column:1 / -1;grid-row:2;height:.6rem;background:#eef2f1;border-radius:999px;overflow:hidden}.poll-bar span{display:block;height:100%;background:#7a8b87;border-radius:999px}.poll-count{grid-column:2;grid-row:1;font-weight:700;white-space:nowrap}.poll-correct{background:#e9f6ee}.poll-correct .poll-bar span{background:var(--good)}.poll-tick{color:var(--good);font-weight:700}.poll-you{color:var(--muted);font-size:.82rem}.poll-given{display:inline-flex;align-items:center;gap:.25rem;margin:0}.poll-form .poll-field{display:flex;flex-direction:column;gap:.25rem;margin:0;padding:0;border:0;font-size:.85rem;font-weight:600}.poll-form legend{padding:0;margin-bottom:.25rem}.poll-form-option{display:flex;align-items:center;gap:.35rem}.poll-form-option input:not([type=checkbox]){flex:1;min-width:0}.poll-form-option input[type=checkbox]{width:1.15rem;height:1.15rem;flex:none}.poll-problem{color:var(--bad)}.term-card{gap:.5rem}.term-date{flex-direction:row;align-items:center;gap:.6rem;flex-wrap:wrap}.term-date input{width:auto}.term-actions{display:flex;align-items:center;gap:.6rem}@media(hover:hover){.tile:not(:hover):not(:focus-within) .tile-give-trophy{display:none}}.carry-board{margin:0 0 1rem}.carry-board .notice p{margin:0 0 .5rem}.board-screen{background:#111}.board-screen video{object-fit:contain}.board-screen-off{font-size:.95rem;font-weight:600;color:#fff;text-align:center;padding:0 1rem}.media-bar{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem}.media-title{font-weight:600;max-width:18rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.media-seek{flex:1 1 10rem;min-width:8rem;accent-color:var(--brand)}.media-time{font-variant-numeric:tabular-nums;color:var(--muted)}.powerpoint-preview{position:absolute;inset:.75rem;z-index:30;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 28px #0000002e;padding:1rem 1.25rem}.powerpoint-preview h2{margin:0 0 .35rem;font-size:1.15rem}.powerpoint-preview p{margin:0 0 .5rem}.powerpoint-thumbs{list-style:none;margin:.75rem 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(9.5rem,1fr));gap:.75rem}.powerpoint-thumbs li{display:flex;flex-direction:column;gap:.25rem;font-size:.82rem;color:var(--muted)}.powerpoint-thumbs img{width:100%;height:auto;border:1px solid var(--line);border-radius:6px;background:#fff}
