:root{--bg: #f4f5f7;--panel: #ffffff;--border: #e3e5ea;--text: #1c1f26;--muted: #7a8090;--accent: #4f6bff;--accent-soft: #e8ecff;--danger: #e5484d;--canvas: #e9ebef;color-scheme:light}@media (prefers-color-scheme: dark){:root{--bg: #15171c;--panel: #1d2027;--border: #2c303a;--text: #e6e8ee;--muted: #8a90a0;--accent: #7b8cff;--accent-soft: #283058;--canvas: #101216;color-scheme:dark}}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{font:13px/1.4 system-ui,Segoe UI,Malgun Gothic,sans-serif;background:var(--bg);color:var(--text)}button{font:inherit;color:inherit;background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:5px 10px;cursor:pointer;white-space:nowrap}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.4;cursor:default}button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}button.secondary{background:var(--accent-soft)}button.danger{color:var(--danger);width:100%}button.link{border:0;background:none;color:var(--accent);padding:0 4px}input,select,textarea{font:inherit;color:inherit;background:var(--bg);border:1px solid var(--border);border-radius:5px;padding:4px 6px;min-width:0}input[type=color]{padding:1px;width:36px;height:24px}input[type=checkbox]{width:auto}textarea{resize:vertical;width:100%}.muted{color:var(--muted)}.app{display:flex;flex-direction:column;height:100%}.toolbar{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--panel);border-bottom:1px solid var(--border);flex-wrap:wrap}.brand{font-weight:800;letter-spacing:.5px;color:var(--accent)}.title-input{border-color:transparent;background:transparent;font-weight:600;width:220px}.title-input:hover,.title-input:focus{border-color:var(--border)}.tb-group{display:flex;gap:4px}.tb-group .ico{margin-right:4px}.spacer{flex:1}.workspace{flex:1;display:grid;grid-template-columns:220px 1fr 260px;min-height:0}.panel-title{font-size:11px;font-weight:700;letter-spacing:1px;color:var(--muted);padding:10px 12px;display:flex;justify-content:space-between}.slide-list{background:var(--panel);border-right:1px solid var(--border);display:flex;flex-direction:column;min-height:0}.thumbs{flex:1;overflow-y:auto;padding:0 12px}.thumb{position:relative;display:flex;gap:6px;margin-bottom:10px;cursor:pointer}.thumb-num{font-size:10px;color:var(--muted);width:14px;padding-top:2px}.thumb-img{border:2px solid transparent;border-radius:6px;overflow:hidden;box-shadow:0 0 0 1px var(--border)}.thumb.active .thumb-img{border-color:var(--accent)}.thumb.drop .thumb-img{box-shadow:0 -3px 0 var(--accent)}.thumb-actions{position:absolute;right:4px;top:4px;display:none;gap:2px}.thumb:hover .thumb-actions{display:flex}.thumb-actions button{padding:0 5px;font-size:11px}.add-slide{margin:10px 12px}.canvas-wrap{position:relative;background:var(--canvas);display:flex;align-items:center;justify-content:center;overflow:hidden;min-width:0}.stage-outer{position:relative;box-shadow:0 4px 24px #0000002e}.stage{position:absolute;left:0;top:0;transform-origin:0 0;overflow:hidden}.zoom-badge{position:absolute;right:12px;bottom:10px;font-size:11px;color:var(--muted)}.el{position:absolute}.player-host{width:100%;height:100%;min-height:0;flex:1}.exit-btn{position:fixed;left:12px;bottom:12px;opacity:0;background:#0009;color:#fff;border-color:#fff3;transition:opacity .2s;z-index:2}.presenter:hover .exit-btn{opacity:.85}.spk-vars-panel{flex:0 0 auto;min-width:0}.spk-vars-panel summary{cursor:pointer}.spk-vars{background:#1b1e25;border-radius:6px;padding:8px 12px;font-size:12px;max-height:120px;overflow:auto;overflow-wrap:anywhere}.spk-vars>div{margin-bottom:4px}.spk-vars button{margin-left:auto;padding:2px 8px;background:#232733;color:#eee;border-color:#343a48}.spk-responses{font-size:13px;flex:0 0 auto;background:#1b1e25;padding:8px;border-radius:6px}.spk-responses summary{cursor:pointer}.modal.response-archive{width:min(1000px,95vw);white-space:normal;overflow:auto}.archive-layout{display:grid;grid-template-columns:260px minmax(0,1fr);gap:20px;min-height:220px;overflow:auto}.archive-sessions{display:flex;flex-direction:column;gap:8px;overflow:auto}.archive-sessions button{text-align:left;white-space:normal;line-height:1.6}.archive-sessions button[aria-pressed=true]{border-color:var(--accent)}.response-archive .spk-responses{background:var(--panel)}.response-archive .response-list{max-height:400px}.archive-error{position:fixed;bottom:70px;left:20px;right:20px;padding:16px;background:#7f1d1d;color:#fff;z-index:100}@media (max-width: 700px){.archive-layout{grid-template-columns:1fr}}.response-list{max-height:180px;overflow:auto;overflow-wrap:anywhere}.response-card{padding:8px 0;border-bottom:1px solid #343a48}.response-card p{white-space:pre-wrap;margin:4px 0}.spk-responses button{font-size:12px}.form-image-field{margin:8px 0;padding:8px;border:1px solid var(--border, #343a48);border-radius:6px}textarea.code{font:12px/1.45 ui-monospace,Consolas,monospace;white-space:pre;-moz-tab-size:2;tab-size:2}.dirty{color:#f59e0b;font-style:normal;font-size:11px}.cond{display:flex;flex-direction:column;gap:4px;margin-top:6px}.cond-row{display:grid;grid-template-columns:1fr auto 1fr;gap:6px;align-items:center}.props code{font-size:11px;background:var(--bg);padding:0 3px;border-radius:3px}.tb-group{flex-wrap:wrap}.el-text{width:100%;height:100%;line-height:1.25;white-space:pre-wrap;word-break:keep-all;overflow-wrap:break-word;outline:none}.el-text.editing{cursor:text;box-shadow:0 0 0 2px var(--accent)}.el-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;text-align:center;background:repeating-linear-gradient(45deg,#8882 0,#8882 12px,#8881 12px,#8881 24px);color:#888;font:22px system-ui;border:2px dashed #8886}.el-embed{position:relative;width:100%;height:100%}.el-embed iframe{width:100%;height:100%;border:0;display:block;background:#fff}.embed-fallback{position:absolute;right:8px;bottom:8px;font:13px system-ui;background:#0009;color:#fff;padding:4px 8px;border-radius:6px;text-decoration:none;opacity:0;transition:opacity .2s}.el-embed:hover .embed-fallback{opacity:1}.canvas-wrap .el{cursor:move}.canvas-wrap .el.interactive{cursor:auto;box-shadow:0 0 0 3px #22c55e}.sel-box{position:absolute;top:0;right:0;bottom:0;left:0;border:solid var(--accent);pointer-events:none}.handle{position:absolute;background:#fff;border:solid var(--accent);border-radius:2px;transform:translate(-50%,-50%)}.h-nw{left:0;top:0;cursor:nwse-resize}.h-n{left:50%;top:0;cursor:ns-resize}.h-ne{left:100%;top:0;cursor:nesw-resize}.h-e{left:100%;top:50%;cursor:ew-resize}.h-se{left:100%;top:100%;cursor:nwse-resize}.h-s{left:50%;top:100%;cursor:ns-resize}.h-sw{left:0;top:100%;cursor:nesw-resize}.h-w{left:0;top:50%;cursor:ew-resize}.rot-stem{position:absolute;left:50%;bottom:100%;background:var(--accent);transform:translate(-50%);pointer-events:none}.rot-handle{position:absolute;left:50%;background:#fff;border:solid var(--accent);border-radius:50%;transform:translate(-50%);cursor:grab}.hint{position:absolute;left:0;color:var(--accent);white-space:nowrap;pointer-events:none;font-family:system-ui}.props{background:var(--panel);border-left:1px solid var(--border);overflow-y:auto}.props section{padding:4px 12px 12px;border-bottom:1px solid var(--border)}.props h4{margin:8px 0;font-size:12px}.props .row{display:flex;align-items:center;gap:8px;margin:6px 0}.props .row>span{width:48px;color:var(--muted);flex-shrink:0}.props .row input:not([type=color]):not([type=checkbox]),.props .row select{flex:1}.props .col{display:flex;flex-direction:column;gap:4px;margin:6px 0}.props .col>span{color:var(--muted)}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:6px}.num{display:flex;align-items:center;gap:6px;margin:4px 0}.num span{color:var(--muted);min-width:16px}.num input{width:100%}.btn-row{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin-top:8px}.btn-row button{padding:4px 2px;font-size:11px}.tip{color:var(--muted);font-size:11px;margin:6px 0 0}.theme-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:8px}.theme-chip{border-width:2px;padding:8px}.presenter{position:fixed;top:0;right:0;bottom:0;left:0;background:#000;color:#eee}.fit-slide{width:100%;height:100%;display:flex;align-items:center;justify-content:center;overflow:hidden}.present-nav{position:fixed;right:12px;bottom:12px;display:flex;gap:6px;align-items:center;opacity:0;transition:opacity .2s}.presenter:hover .present-nav{opacity:.9}.present-nav button{background:#0009;color:#fff;border-color:#fff3}.progress{position:fixed;left:0;bottom:0;height:3px;transition:width .3s}.speaker{display:grid;grid-template-columns:1fr 380px;gap:16px;padding:16px;background:#111318}.spk-main{display:flex;flex-direction:column;min-height:0}.spk-main .fit-slide{flex:1}.spk-side{display:flex;flex-direction:column;gap:8px;min-height:0}.spk-label{font-size:11px;letter-spacing:1px;color:#8a90a0;text-transform:uppercase;margin-bottom:4px}.spk-timer{display:flex;align-items:baseline;justify-content:space-between}.clock{font:600 40px/1 ui-monospace,Consolas,monospace}.spk-next{border-radius:6px;overflow:hidden}.spk-next .end{height:202px;display:flex;align-items:center;justify-content:center;background:#222;color:#888}.spk-notes{flex:1;overflow-y:auto;background:#1b1e25;border-radius:6px;padding:12px;font-size:18px;line-height:1.5;white-space:pre-wrap}.spk-controls{display:grid;grid-template-columns:1fr 1fr;gap:6px}.spk-controls button{background:#232733;color:#eee;border-color:#343a48;padding:10px}@media (max-width: 900px){.workspace{grid-template-columns:1fr;grid-template-rows:auto 1fr auto}.slide-list{border-right:0;border-bottom:1px solid var(--border)}.thumbs{display:flex;gap:8px;overflow-x:auto;overflow-y:hidden;padding-bottom:8px}.thumb{flex-shrink:0}.canvas-wrap{min-height:260px}.props{max-height:40vh;border-left:0;border-top:1px solid var(--border)}.tb-group .lbl{display:none}.speaker{grid-template-columns:1fr;overflow-y:auto}}.el-badges{position:absolute;display:flex;pointer-events:none;z-index:1;font-family:system-ui,sans-serif}.el-badges span{background:#4f6bffeb;color:#fff;white-space:nowrap;line-height:1.3}.num span{min-width:30px;white-space:nowrap}.menu-wrap{position:relative}.menu{position:absolute;right:0;top:calc(100% + 4px);z-index:20;min-width:200px;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:4px;box-shadow:0 8px 24px #00000040}.menu button{border:0;text-align:left;display:flex;justify-content:space-between;gap:12px;padding:7px 10px;background:none}.menu button:hover{background:var(--accent-soft)}.menu hr{border:0;border-top:1px solid var(--border);margin:4px 0;width:100%}.warn{color:#f59e0b;font-size:11px;margin:4px 0 0}@media (max-width: 1100px){.tb-group .lbl{display:none}.tb-group .ico{margin-right:0}}.comp-banner{position:absolute;top:10px;left:50%;transform:translate(-50%);z-index:5;display:flex;gap:12px;align-items:center;background:var(--panel);border:1px solid var(--accent);border-radius:10px;padding:6px 8px 6px 14px;box-shadow:0 4px 16px #0003;max-width:calc(100% - 24px)}.comp-banner span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stage-outer.comp{outline:2px dashed var(--accent);outline-offset:4px}.lib-row{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:6px 0;border-bottom:1px dashed var(--border)}.lib-row:last-child{border-bottom:0}.lib-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lib-actions{display:flex;gap:3px;flex-shrink:0}.lib-actions button{padding:2px 7px;font-size:11px}.btn-row.three{grid-template-columns:repeat(3,1fr)}.btn-row.two{grid-template-columns:repeat(2,1fr)}.src-card{border:1px solid var(--border);border-radius:8px;padding:8px;margin:8px 0;display:flex;flex-direction:column;gap:2px}.src-head{display:flex;gap:6px;align-items:center}.src-head input{flex:1;font-weight:600}.src-head button{padding:2px 7px}.src-card .grid2 .col{margin:2px 0}.src-card input{width:100%}.src-status{font:11px/1.4 ui-monospace,Consolas,monospace;color:var(--muted);word-break:break-all}.dot{width:8px;height:8px;border-radius:50%;background:var(--muted);flex-shrink:0}.dot.ok{background:#22c55e}.dot.bad{background:var(--danger)}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:50;display:flex;align-items:center;justify-content:center;padding:16px}.modal{background:var(--panel);border:1px solid var(--border);border-radius:12px;width:min(560px,100%);max-height:min(720px,100%);display:flex;flex-direction:column;padding:16px;gap:8px}.modal-head{display:flex;justify-content:space-between;align-items:center}.modal-head h3{margin:0;font-size:16px}.ver-save{display:flex;gap:6px}.ver-save input{flex:1}.ver-list{overflow-y:auto;display:flex;flex-direction:column}.ver-row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--border)}.ver-row .muted{font-size:11px}.ver-actions{display:flex;gap:4px;flex-shrink:0}.spk-remote{background:#1b1e25;border-radius:6px;padding:10px;display:flex;gap:12px;align-items:center;font-size:13px}.spk-remote svg{flex-shrink:0;border-radius:4px}.spk-remote .st-on{color:#4ade80}.spk-remote .st-off{color:#f87171}.spk-remote code{font-size:11px;word-break:break-all;color:#a0a6b4}
