:root{--bg:#f4f6f9;--panel:#ffffff;--ink:#1b2430;--sub:#5b6676;--line:#dde2ea;--accent:#1f5fd0;--accent-ink:#ffffff;--accent-soft:#e9f0fd;--ok:#1a7f4b;--ok-soft:#e4f5ec;--warn:#b45309;--warn-soft:#fff4de;--ng:#c0322b;--ng-soft:#fdecea;--radius:10px}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:Hiragino Sans,Hiragino Kaku Gothic ProN,Yu Gothic UI,Yu Gothic,Meiryo,system-ui,sans-serif;font-size:15px;line-height:1.7;-webkit-text-size-adjust:100%}a{color:var(--accent)}h1,h2,h3,h4{line-height:1.4;margin:0}button,input,select,textarea{font:inherit;color:inherit}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;border-radius:8px;border:1px solid var(--line);background:#fff;cursor:pointer;text-decoration:none;color:var(--ink);white-space:nowrap}.btn:hover{background:#f3f5f8}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}.btn.primary:hover{background:#184fb0}.btn.danger{border-color:var(--ng);color:var(--ng)}.btn.small{padding:4px 10px;font-size:13px}.btn.big{padding:14px 22px;font-size:17px}.input,.select,.textarea{width:100%;padding:9px 11px;border:1px solid #c6cdd8;border-radius:8px;background:#fff}.cell-input:focus,.input:focus,.select:focus,.textarea:focus{outline:2px solid var(--accent);outline-offset:-1px}.input:disabled,.select:disabled,.textarea:disabled{background:#f1f3f6;color:var(--ink);opacity:1}.textarea{min-height:88px;resize:vertical;line-height:1.6}label.field{display:block;margin-bottom:14px}label.field>span{display:block;font-size:13px;font-weight:600;color:var(--sub);margin-bottom:4px}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px}.muted{color:var(--sub)}.small{font-size:13px}.error{color:var(--ng);background:var(--ng-soft)}.error,.notice{padding:8px 12px;border-radius:8px;font-size:14px}.notice{color:var(--ok);background:var(--ok-soft)}.badge{display:inline-block;padding:1px 9px;border-radius:999px;font-size:12px;font-weight:600;background:#e8ecf2;color:var(--sub);white-space:nowrap}.badge.ok{background:var(--ok-soft);color:var(--ok)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.ng{background:var(--ng-soft);color:var(--ng)}.badge.accent{background:var(--accent-soft);color:var(--accent)}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.spacer{flex:1 1}.topbar{background:#fff;border-bottom:1px solid var(--line);padding:10px 18px;display:flex;align-items:center;gap:14px;position:-webkit-sticky;position:sticky;top:0;z-index:20}.topbar .brand{font-weight:700;font-size:15px;color:var(--ink);text-decoration:none}.page{max-width:980px;margin:0 auto;padding:22px 16px 60px}.page.wide{max-width:1400px}.login-wrap{min-height:100dvh;display:grid;place-items:center;padding:20px}.login-card{width:100%;max-width:420px}.login-card h1{font-size:20px;margin-bottom:4px}.lesson-list{display:grid;grid-gap:10px;gap:10px;margin-top:14px}.lesson-item{display:flex;gap:14px;align-items:center;padding:14px 16px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);text-decoration:none;color:var(--ink)}.lesson-item.today{border:2px solid var(--accent);background:var(--accent-soft)}.lesson-item.disabled{opacity:.55}.lesson-item .no{font-weight:700;color:var(--accent);min-width:54px}.lesson-item .date{font-size:13px;color:var(--sub)}.lesson-item .title{font-weight:600}.slide h2.slide-title{font-size:22px;margin-bottom:14px}.slide .kind{margin-bottom:6px}.md h2{font-size:19px;margin:18px 0 8px}.md h3{font-size:16px;margin:14px 0 6px}.md p{margin:8px 0}.md ol,.md ul{margin:8px 0;padding-left:1.5em}.md li{margin:3px 0}.block{margin:14px 0}.block-title{font-weight:700;margin-bottom:6px}.callout{border-radius:8px;padding:12px 14px;border:1px solid var(--line);background:#f8fafc;white-space:pre-wrap}.callout.point{background:var(--accent-soft);border-color:#c5d7f8}.callout.warn{background:var(--warn-soft);border-color:#f1d9a6}.callout .callout-title{font-weight:700;margin-bottom:4px}.callout .md{white-space:normal}.callout .md>:first-child{margin-top:0}.callout .md>:last-child{margin-bottom:0}.callout-pre{font-size:14px;line-height:1.75}.slide{font-size:16px;line-height:1.9}.slide .block{margin:20px 0}.slide .md li{margin:10px 0;padding-left:4px}.slide .callout .md li{margin:6px 0}.slide .md ol>li::marker{font-weight:700;color:var(--accent)}.slide .callout{padding:14px 18px}.slide table.tbl.ref{font-size:15px;line-height:1.7}.present-body .slide{font-size:inherit}.present-body .slide table.tbl.ref{font-size:17px}.only-instructor{border:2px dashed #c98a12;border-radius:8px;padding:8px 10px;background:#fffbf0;position:relative}.only-instructor:before{content:attr(data-label);display:block;font-size:11px;font-weight:700;color:#a36a00;margin-bottom:4px}.table-wrap{overflow-x:auto}table.tbl{border-collapse:collapse;width:100%;background:#fff;font-size:14px}table.tbl td,table.tbl th{border:1px solid var(--line);padding:7px 9px;text-align:left;vertical-align:top}table.tbl th{background:#f0f3f7;font-weight:600;white-space:nowrap}table.tbl caption{text-align:left;font-weight:700;margin-bottom:4px}table.tbl td.cell{padding:0}.cell-input{width:100%;min-width:70px;border:0;padding:8px 9px;background:#fffef5;display:block}textarea.cell-input{resize:vertical;min-height:40px;line-height:1.5}select.cell-input{min-width:112px}.cell-input:disabled{background:#fff;color:var(--ink);opacity:1}table.tbl td.cell.calc,table.tbl td.cell.fixed{padding:7px 9px;background:#f7f9fb;white-space:nowrap;vertical-align:middle}table.tbl td.cell.calc{font-weight:700;text-align:right}.choice-item{padding:10px 0;border-bottom:1px solid var(--line)}.choice-item:last-child{border-bottom:0}.choice-q{font-weight:600;margin-bottom:6px}.choice-opts{display:flex;gap:8px;flex-wrap:wrap}.choice-opt{border:1px solid #c6cdd8;border-radius:8px;padding:6px 14px;background:#fff;cursor:pointer;min-width:52px;text-align:center}.choice-opt.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:700}.choice-opt:disabled{cursor:default}.choice-opt.correct{box-shadow:0 0 0 3px #7ed0a2}.choice-explain{margin-top:6px;font-size:14px;background:var(--ok-soft);color:#14532d;padding:6px 10px;border-radius:6px}.lesson-shell{display:grid;grid-template-columns:minmax(0,1fr) 400px;grid-gap:16px;gap:16px;max-width:1400px;margin:0 auto;padding:16px;align-items:start}.lesson-shell.no-side{grid-template-columns:minmax(0,1fr);max-width:980px}.lesson-main{min-width:0}.sidebar{position:-webkit-sticky;position:sticky;top:64px;max-height:calc(100dvh - 80px);overflow:auto}.sidebar h3{font-size:15px;margin-bottom:8px}.sidebar details{border-top:1px solid var(--line);padding:8px 0}.sidebar summary{cursor:pointer;font-weight:600;font-size:14px}.sidebar .tbl{font-size:12px}.sidebar .table-wrap{overflow-x:auto}.sidebar table.tbl{width:max-content;min-width:100%}.sidebar .tbl th{padding:4px 8px;white-space:nowrap!important}.sidebar .tbl td,.sidebar table.tbl td.cell.calc,.sidebar table.tbl td.cell.fixed{padding:4px 8px;white-space:normal!important;overflow-wrap:break-word;min-width:3.2em;max-width:15em}.sidebar summary{display:flex;align-items:center;gap:8px}.sidebar summary:before{content:"▶";font-size:10px;color:var(--sub)}.sidebar details[open]>summary:before{content:"▼"}.sidebar summary::-webkit-details-marker{display:none}.zoom-btn{margin-left:auto;flex:none}.statusbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.timer{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:700;font-size:18px;padding:2px 12px;border-radius:8px;background:#1b2430;color:#fff}.timer.over{background:var(--ng)}.navbar{display:flex;gap:10px;align-items:center;margin-top:18px}.waiting{text-align:center;padding:70px 20px}.waiting h2{font-size:22px;margin-bottom:8px}.side-toggle{display:none}@media (max-width:960px){.lesson-shell{grid-template-columns:minmax(0,1fr)}.sidebar{position:static;max-height:none}.sidebar.closed{display:none}.side-toggle{display:inline-flex}}.present{min-height:100dvh;background:#fff;display:flex;flex-direction:column}.present-head{display:flex;align-items:center;gap:16px;padding:10px 28px;border-bottom:3px solid var(--accent);font-size:16px;color:var(--sub)}.present-body{flex:1 1;padding:26px 44px 40px;font-size:21px;max-width:1500px;width:100%;margin:0 auto}.present-body .slide h2.slide-title{font-size:36px;margin-bottom:20px}.present-body table.tbl{font-size:17px}.present-body .md h2{font-size:27px}.present-body .md h3{font-size:23px}.present-body .timer{font-size:26px}.present-cover{flex:1 1;display:grid;place-items:center;text-align:center;padding:40px}.present-cover h1{font-size:46px;margin-bottom:12px}.present-cover p{font-size:24px;color:var(--sub);margin:4px 0}.console{display:grid;grid-template-columns:250px minmax(0,1fr) 340px;grid-gap:12px;gap:12px;padding:12px;height:calc(100dvh - 53px)}.console>div{overflow:auto;min-height:0;min-width:0}.slide-nav button{display:flex;gap:8px;width:100%;text-align:left;padding:7px 9px;border:1px solid transparent;border-radius:8px;background:transparent;cursor:pointer;font-size:13px;align-items:baseline}.slide-nav button:hover{background:#eef1f5}.slide-nav button.current{background:var(--accent);color:#fff;font-weight:700}.slide-nav button.past{color:var(--sub)}.slide-nav button.viewing{border-color:var(--warn);background:var(--warn-soft);color:var(--ink);font-weight:700}.peek-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;background:var(--warn-soft);border:1px solid var(--warn);color:var(--warn);border-radius:10px;padding:8px 12px;margin-bottom:10px;position:-webkit-sticky;position:sticky;top:0;z-index:2}.card.peeking{outline:2px dashed var(--warn);outline-offset:-2px}.slide-nav .t{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:11px;opacity:.8;min-width:36px}.script{background:#fffdf3;border:1px solid #eadfb4;border-radius:var(--radius);padding:14px 16px;margin-top:12px;font-size:16px;line-height:1.9}.script p{margin:0 0 10px}.script .op{color:#7a4a00;background:#fbefcf;padding:4px 10px;border-radius:6px;font-size:14px}.script .who{font-weight:700;color:var(--accent)}.ctl{display:grid;grid-gap:10px;gap:10px;grid-template-columns:minmax(0,1fr)}.ctl .pair{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.people{list-style:none;margin:0;padding:0}.people li{display:flex;gap:8px;align-items:center;padding:5px 0;border-bottom:1px solid var(--line);font-size:14px}.people li button{background:none;border:0;padding:0;color:var(--accent);cursor:pointer;text-decoration:underline}.dot{width:9px;height:9px;border-radius:50%;background:#c3cad5;flex:none}.dot.on{background:#22a35f}@media (max-width:1100px){.console{grid-template-columns:1fr;height:auto}}.admin-nav{display:flex;gap:4px}.admin-nav a{padding:6px 12px;border-radius:8px;text-decoration:none;color:var(--sub);font-weight:600;font-size:14px}.admin-nav a.on,.admin-nav a:hover{background:var(--accent-soft);color:var(--accent)}.section-title{font-size:17px;margin:26px 0 10px}.modal-back{position:fixed;inset:0;background:rgba(20,28,40,.5);z-index:50;display:grid;place-items:center;padding:16px}.modal{background:#fff;border-radius:12px;max-width:980px;width:100%;max-height:90dvh;overflow:auto;padding:20px}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px}iframe.preview{width:100%;height:520px;border:1px solid var(--line);border-radius:8px;background:#fff}.tabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:2px solid var(--line)}.tabs button{border:1px solid var(--line);border-bottom:0;background:#eef1f5;padding:7px 14px;border-radius:8px 8px 0 0;cursor:pointer;font-size:14px;color:var(--sub);margin-bottom:-2px}.tabs button.on{background:#fff;color:var(--accent);font-weight:700;border-color:var(--accent);border-bottom:2px solid #fff}.monitor{min-height:100dvh;background:var(--bg)}.monitor-head{gap:12px;background:#fff;border-bottom:1px solid var(--line);position:-webkit-sticky;position:sticky;top:0;z-index:10}.monitor-head,.monitor-sub{display:flex;align-items:center;flex-wrap:wrap;padding:8px 14px}.monitor-sub{gap:10px;font-size:14px}.monitor-grid{display:grid;grid-gap:10px;gap:10px;padding:0 12px 20px;align-items:start}.monitor-card{background:#fff;border:2px solid var(--line);border-radius:var(--radius);cursor:pointer;display:flex;flex-direction:column;height:calc((100dvh - 120px) / 2);min-height:260px;overflow:hidden;text-align:left}.monitor-card:focus-visible,.monitor-card:hover{border-color:var(--accent);outline:none}.monitor-card.typing{border-color:#22a35f;box-shadow:0 0 0 3px #c9efd9}.monitor-card-head{display:flex;gap:8px;align-items:center;padding:8px 12px;border-bottom:1px solid var(--line);background:#f8fafc;flex:none}.monitor-card-body{padding:4px 12px 10px;overflow:auto;flex:1 1;font-size:13px}.monitor-card-body .tbl{font-size:12px}.monitor-card-body .tbl td,.monitor-card-body .tbl th,.monitor-card-body table.tbl td.cell.calc,.monitor-card-body table.tbl td.cell.fixed{padding:3px 6px;white-space:normal!important;overflow-wrap:anywhere}.monitor-card-body .tbl th,.monitor-card-body table.tbl td.cell.fixed{white-space:nowrap!important}.monitor-card-body .block{margin:8px 0}.monitor-card-body label.field{margin-bottom:8px}.monitor-card-body .callout{padding:6px 9px}.monitor-card-body .choice-item{padding:5px 0}.monitor-card-body .choice-q{font-weight:500;margin-bottom:3px}.monitor-card-body .choice-opt{padding:1px 9px;min-width:0;font-size:12px}.monitor-focus{padding:0 14px 30px;max-width:1300px;margin:0 auto;font-size:17px}.monitor-focus .tbl{font-size:16px}@media (max-width:900px){.monitor-grid{grid-template-columns:minmax(0,1fr)!important}.monitor-card{height:auto;max-height:70dvh}}.input-block{border:2px solid var(--accent);background:#f1f6ff;border-radius:10px;padding:10px 14px 14px}.input-block.only-instructor{border:2px solid var(--accent)}.input-label{display:inline-block;background:var(--accent);color:#fff;font-size:12px;font-weight:700;padding:2px 12px;border-radius:999px;margin-bottom:8px}.input-block .block-title{color:#123c8a}.input-block table.tbl th{background:var(--accent);color:#fff;border-color:#184fb0}.input-block table.tbl td{border-color:#b9cdf0}.input-block .cell-input{background:#fff}.input-block .cell-input:disabled{background:#e8eef9}.input-block table.tbl td.cell.calc,.input-block table.tbl td.cell.fixed{background:#dfe9fa}.input-block .choice-opt,.input-block .input,.input-block .textarea{border-color:#8fb0ea}.input-block .choice-item{border-bottom-color:#c9d9f3}table.tbl.ref th{background:#eceef1;color:#4a5568}table.tbl.ref td{background:#fafafa;color:#374151}.ref-chip{display:inline-block;background:#6b7280;color:#fff;font-size:11px;font-weight:700;padding:1px 9px;border-radius:999px;margin-right:8px;vertical-align:1px}.present-body .input-label{font-size:15px}.present-body .ref-chip{font-size:14px}details.fold{border:1px solid var(--line);border-radius:8px;background:#fafafa;padding:8px 12px}details.fold>summary{cursor:pointer;font-weight:700}details.fold[open]>summary{margin-bottom:6px}details.fold .fold-hint{font-weight:400;color:var(--sub);font-size:13px}details.fold[open] .fold-hint{display:none}details.fold .block{margin:6px 0 2px}.figure{margin:0}.figure img{display:block;max-width:100%;height:auto;border:1px solid var(--line);border-radius:8px;background:#fff}.figure figcaption{font-size:13px;color:var(--sub);margin-top:4px}.figure figcaption a{display:block;color:var(--accent)}.pastworks details.fold{margin-top:10px;background:#fff}.pastworks-entry{border-top:1px solid var(--line);padding:8px 0 4px}.pastworks-name{font-weight:700;color:var(--accent)}.cell-input.combo-free{border-top:1px dashed #b9cdf0}.zoom-modal{max-width:1200px;font-size:16px}.zoom-modal .zoom-head{position:-webkit-sticky;position:sticky;top:-20px;background:#fff;padding:6px 0 8px;margin-bottom:4px;z-index:1;border-bottom:1px solid var(--line)}.zoom-modal table.tbl{font-size:15px}.zoom-modal table.tbl th{white-space:nowrap}.zoom-modal table.tbl td{min-width:3.5em}.modal.guide{max-width:520px}.guide-text p{margin:8px 0;font-size:16px;line-height:1.8}.guide-dots{display:flex;gap:6px;justify-content:center;margin-top:12px}.guide-dots span{width:8px;height:8px;border-radius:50%;background:#d3d9e3}.guide-dots span.on{background:var(--accent)}.hint{border:2px solid #f0b429;background:#fffaeb;border-radius:10px;padding:12px 14px;margin-bottom:12px}.hint-title{font-weight:700;margin-bottom:4px}.hint-text{font-size:14px;margin-bottom:8px}.timer-fixed{position:fixed;top:8px;left:50%;transform:translateX(-50%);z-index:40;font-size:20px;padding:4px 18px;box-shadow:0 2px 8px rgba(0,0,0,.25)}@media (max-width:760px){.timer-fixed{top:auto;bottom:14px;left:auto;right:12px;transform:none;font-size:18px}}.present-head{position:-webkit-sticky;position:sticky;top:0;background:#fff;z-index:10}.slide-chat{border:1px solid #c5d7f8;background:#f6f9ff;border-radius:10px;padding:12px 14px}.slide-chat .chat-turn{margin:10px 0;display:grid;grid-gap:6px;gap:6px}.slide-chat .chat-msg{border-radius:10px;padding:8px 12px;font-size:14px;line-height:1.7;max-width:100%}.slide-chat .chat-msg.me{background:var(--accent-soft);justify-self:end;max-width:85%}.slide-chat .chat-msg.ai{background:#fff;border:1px solid var(--line)}.slide-chat .chat-msg.error{color:#b42318}.slide-chat .chat-who{display:block;font-size:12px;color:var(--sub);margin-bottom:2px}.slide-chat .chat-draft{margin-top:8px;border-top:1px dashed var(--line);padding-top:8px}.slide-chat .chat-draft>summary{cursor:pointer;font-weight:700}.slide-chat .chat-draft-body{margin-top:8px;border:1px solid var(--line);border-radius:8px;padding:12px;background:#fff}table.att td.att-absent{background:var(--ng-soft)}table.att td.att-makeup{background:var(--accent-soft)}table.att .att-pick{display:inline-flex;gap:4px;align-items:center;cursor:pointer;color:var(--ng)}table.att .att-link{display:block;margin:4px auto 0;font-size:12px}.rehearsal-bar{position:-webkit-sticky;position:sticky;top:0;z-index:20;display:flex;gap:8px;align-items:center;flex-wrap:wrap;background:#fffbf0;border:1px solid #f1d9a6;border-radius:10px;padding:8px 12px;margin-bottom:12px}.rehearsal-notes{border:2px dashed #c98a12;background:#fffdf6;border-radius:10px;padding:10px 14px;margin-bottom:12px}.rehearsal-notes-head{font-weight:700;font-size:13px;color:#8a5a00;margin-bottom:6px}.rehearsal-notes .script{margin-top:0}.rehearsal-notes .block{margin:8px 0 0}