.exam-banner{background:color-mix(in srgb, var(--pro) 18%, var(--surface));border-bottom:1px solid color-mix(in srgb, var(--pro) 45%, transparent);color:var(--text);z-index:6;flex-wrap:wrap;flex:none;align-items:center;gap:10px;padding:7px 12px;font-size:13.5px;display:flex;position:relative}.exam-dot{background:var(--pro);width:9px;height:9px;box-shadow:0 0 0 3px color-mix(in srgb, var(--pro) 30%, transparent);border-radius:50%;flex:none}.exam-text{flex-wrap:wrap;flex:200px;align-items:baseline;gap:4px 10px;min-width:0;display:flex}.exam-text strong{font-weight:700}.exam-preset{color:var(--text-2);font-size:12.5px}.exam-clock{font-family:var(--mono);font-variant-numeric:tabular-nums;background:var(--surface-2);border-radius:8px;padding:3px 9px;font-size:15px;font-weight:700}.exam-banner.over .exam-clock{background:var(--danger);color:#fff}.exam-confirm{flex-wrap:wrap;align-items:center;gap:6px;display:inline-flex}.exam-confirm-q{font-weight:600}.exam-banner .btn-sm{padding:5px 11px;font-size:13px}.exam-setup{flex-direction:column;gap:14px;align-items:stretch!important}.exam-presets{border:0;gap:6px;margin:0;padding:0;display:grid}.exam-presets legend{margin-bottom:6px}.exam-preset-opt{cursor:pointer;background:var(--surface-3);border-radius:10px;align-items:flex-start;gap:10px;padding:9px 10px;display:flex}.exam-preset-opt.on{box-shadow:inset 0 0 0 2px var(--accent)}.exam-preset-opt input{accent-color:var(--accent);margin-top:3px}.exam-rules{gap:2px;margin:0;padding:0;font-size:14px;list-style:none;display:grid}.exam-rule{justify-content:space-between;align-items:center;gap:10px;padding:5px 2px;display:flex}.exam-rule-toggle{cursor:pointer;justify-content:space-between;align-items:center;gap:10px;width:100%;display:flex}.exam-rule-on{color:var(--text);font-weight:650}.exam-rule-off{color:var(--text-3)}.exam-timer{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.exam-minutes{color:var(--text-2);align-items:center;gap:6px;font-size:14px;display:inline-flex}.exam-minutes input{cursor:text;background-image:none;width:84px;padding-right:12px}.exam-disclaimer{color:var(--text-2);background:color-mix(in srgb, var(--pro) 12%, transparent);border-radius:10px;margin:0;padding:8px 10px;font-size:12.5px;line-height:1.45}.exam-actions{justify-content:flex-end;gap:8px;display:flex}.gex{flex-direction:column;gap:10px;display:flex}.gex-search{box-sizing:border-box;border:1px solid var(--border-2);background:var(--surface-2);width:100%;color:var(--text);font:inherit;border-radius:10px;padding:9px 12px;font-size:15px}.gex-chips{scrollbar-width:thin;gap:6px;padding-bottom:4px;display:flex;overflow-x:auto}.gex-chip{cursor:pointer;background:var(--surface-2);color:var(--text-2);white-space:nowrap;border:0;border-radius:999px;flex:none;padding:6px 12px;font-size:13px;font-weight:600}.gex-chip:hover{background:var(--surface-3);color:var(--text)}.gex-chip.on{background:var(--accent);color:var(--accent-fg)}.gex-hint{color:var(--text-3);margin:0;font-size:12.5px}.gex-empty{color:var(--text-3);text-align:center;margin:0;padding:24px 0}.gex-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;display:grid}.gex-card{text-align:start;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;font:inherit;border-radius:12px;flex-direction:column;align-items:flex-start;gap:4px;min-width:0;padding:8px;display:flex}.gex-card:hover{background:var(--surface-2);border-color:var(--border-2)}.gex-thumb{aspect-ratio:3/2;border-radius:8px;width:100%;height:auto;display:block}.gex-title{font-size:13.5px;font-weight:650;line-height:1.25}.gex-desc{color:var(--text-3);font-size:12px;line-height:1.3}.gex-open{justify-content:flex-end;margin-bottom:8px;display:flex}.gex-chip-start:not(.on){background:color-mix(in srgb, var(--accent) 16%, var(--surface-2));color:var(--text)}.gex-intro{color:var(--text-2);margin:0;font-size:14px;line-height:1.45}.gex-lesson{gap:12px}.gex-back{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:0;align-self:flex-start;padding:4px 0;font-size:15px;font-weight:600}.gex-hero{border:1px solid var(--border);border-radius:12px;overflow:hidden}.gex-hero .gex-thumb{border-radius:0}.gex-head{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.gex-h{letter-spacing:-.01em;margin:0;font-size:19px}.gex-level{background:var(--surface-2);color:var(--text-2);border-radius:999px;padding:3px 8px;font-size:11.5px;font-weight:700}.gex-level.l1{background:color-mix(in srgb, #34c759 20%, var(--surface-2))}.gex-level.l3{background:color-mix(in srgb, #ff9f0a 20%, var(--surface-2))}.gex-lead{color:var(--text-2);margin:0;font-size:14.5px;line-height:1.45}.gex-eqs{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.gex-eqs li{flex-wrap:wrap;align-items:center;gap:8px;font-size:15px;display:flex}.gex-eqs code{background:var(--surface-2);border-radius:6px;padding:2px 7px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14.5px}.gex-sw{border-radius:3px;flex:none;width:12px;height:12px}.gex-fn{font-weight:650}.gex-win{color:var(--text-3);margin:0;font-size:12.5px}.gex-box{background:var(--surface-2);border-radius:12px;padding:12px 14px}.gex-box h4{letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);margin:0 0 4px;font-size:12px;font-weight:750}.gex-box p{margin:0;font-size:14.5px;line-height:1.5}.gex-box-look{background:color-mix(in srgb, var(--accent) 10%, var(--surface-2))}.gex-actions{flex-wrap:wrap;gap:8px;display:flex}.gex-actions .btn{flex:160px}.graphs-tabs{grid-template-columns:1fr 1fr;margin-bottom:12px;display:grid}.gex-open{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));justify-content:stretch;gap:8px;margin-bottom:12px;display:grid}.gex-open-card{text-align:start;cursor:pointer;border:1px solid var(--border-2);background:color-mix(in srgb, var(--accent) 8%, var(--surface));color:var(--text);font:inherit;border-radius:14px;align-items:center;gap:12px;padding:12px 14px;display:flex}.gex-open-card:hover{background:color-mix(in srgb, var(--accent) 14%, var(--surface))}.gex-open-card>span:last-child{color:var(--text-2);flex-direction:column;gap:2px;font-size:13px;display:flex}.gex-open-card b{color:var(--text);font-size:15px}.gex-open-card svg,.gex-open-3d{color:var(--accent);flex:none}.gex-open-3d{font:800 13px/1 ui-monospace,Menlo,monospace}.gex-lesson-body{flex-direction:column;gap:12px;display:flex}.gex-info{flex-direction:column;gap:12px;min-width:0;display:flex}@media (min-width:720px){.gex-lesson-body{grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);align-items:start;gap:18px;display:grid}.gex-hero{position:sticky;top:0}}.app.is-faceoff{top:var(--fold-y)}.app.is-faceoff .topbar{--topbar-h:44px;height:var(--topbar-h);padding-top:0}.duo-far{z-index:6;border-top:1px solid #ffffff14;position:fixed;top:0;left:0;right:0;overflow:hidden;transform:rotate(180deg)}.presenter.is-embedded{position:absolute;inset:0}.presenter.is-embedded .pres-head{padding:0 3%}.presenter.is-embedded .pres-model{font-size:15px}.presenter.is-embedded .pres-lcd{box-shadow:inset 0 3px 12px #00000059,0 0 0 8px #121419,0 18px 40px #0000008c}.presenter.is-embedded .pkeylog{top:11%;bottom:max(5%, calc(env(safe-area-inset-top) + 8px));border-radius:14px;width:31%;min-width:0;right:2.5%}.presenter.is-embedded .pkeylog-head{padding:8px 10px;font-size:13px}.presenter.is-embedded .pkeylog ol{gap:6px;padding:0 10px 10px;font-size:15px}.presenter.is-embedded .pkeylog .keycap-chip{font-size:14px;animation:.18s ease-out chip-in}.presenter.is-embedded .pfrozen{font-size:12px}.duo-book{z-index:4;padding:calc(env(safe-area-inset-top) + 10px) 14px calc(env(safe-area-inset-bottom) + 12px) calc(env(safe-area-inset-left) + 14px);background:var(--surface,#fff);color:var(--text);border-right:1px solid var(--border,#0000001a);box-sizing:border-box;flex-direction:column;gap:10px;display:flex;position:fixed;top:0;bottom:0;left:0}.duo-book-top{flex-direction:column;flex:58%;min-height:0;display:flex;overflow:auto}.duo-book-top .history.docked{flex:1;min-height:0}.duo-book-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;display:flex}.duo-book-head .panel-title{margin:0}.duo-book-hint{color:var(--text-2,#6b7280);margin:6px 2px 0;font-size:12.5px}.duo-scratch{flex-direction:column;flex:42%;gap:6px;min-height:150px;display:flex}.duo-scratch-bar{align-items:center;gap:6px;display:flex}.duo-scratch-bar .panel-title{margin:0}.duo-scratch-spacer{flex:1}.duo-scratch-bar .chip-btn.on{background:var(--accent,#3b82f6);color:var(--accent-fg,#fff)}.duo-scratch-canvas{touch-action:none;cursor:crosshair;width:100%;min-height:0;color:var(--text,#1b2230);background:linear-gradient(var(--border,#00000014) 1px, transparent 1px) 0 0 / 22px 22px, linear-gradient(90deg, var(--border,#00000014) 1px, transparent 1px) 0 0 / 22px 22px, var(--bg,#f6f7f9);box-shadow:inset 0 0 0 1px var(--border,#0000001a);border-radius:12px;flex:1}.layout-duo-tabletop .device-body+.device-body{border-top-left-radius:10px;border-top-right-radius:10px}.icon-btn.duo-suggest{position:relative}.icon-btn.duo-suggest:after{content:"";background:var(--accent,#3b82f6);width:7px;height:7px;box-shadow:0 0 0 2px var(--bg,#fff);border-radius:50%;position:absolute;top:6px;right:6px}.presenter.is-embedded .pres-side{z-index:10;top:10%;bottom:max(4%, calc(env(safe-area-inset-top) + 8px));border-radius:14px;width:44%;position:absolute;right:2.5%;overflow:hidden}.duo-far-steps{background:var(--surface,#fff);height:100%;color:var(--text,#1b2230);border-radius:14px;font-size:13px;overflow:auto}.duo-far-steps .steps{gap:8px;padding:10px 12px 12px}.duo-far-steps .steps-actions,.duo-far-steps .steps-free,.duo-far-steps .steps-methods{display:none}.app.is-faceoff .history-actions:not([role])>.chip-btn:nth-last-child(2){gap:0;padding-inline:10px;font-size:0}.app.is-faceoff .history.docked{padding-top:10px}.app.is-faceoff .history.docked .panel-title{margin-bottom:4px}.app.is-faceoff .history-list{padding-bottom:4px}.app.is-faceoff .history-item{padding:6px 10px}.tsetup{flex-direction:column;gap:12px;width:100%;min-width:0;display:flex}.tfield{flex-direction:column;gap:5px;min-width:0;display:flex}.tfield-inline{flex-direction:row;justify-content:space-between;align-items:center}.tinput{box-sizing:border-box;border:1px solid var(--border-2);background:var(--surface-3);width:100%;min-width:0;color:var(--text);font:inherit;border-radius:10px;padding:8px 10px;font-size:15px}.tinput:focus{outline:2px solid var(--accent);outline-offset:0}.tinput[aria-invalid=true]{border-color:var(--danger)}.tmono{font-family:var(--mono);font-size:14px}.tblock{background:var(--surface-3);border-radius:12px;flex-direction:column;gap:10px;padding:10px;display:flex}.tblock .tinput,.tblock .select{background-color:var(--surface-2)}.tfns{gap:6px;margin:0;padding:0;list-style:none;display:grid}.tfns li{align-items:center;gap:6px;display:flex}.tfn-label{font-family:var(--mono);color:var(--text-2);min-width:3.4em;font-size:13px}.tfn-del{flex:none;width:32px;height:32px;font-size:18px}.twin{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;display:grid}.twin-cell{flex-direction:column;gap:3px;min-width:0;display:flex}.tshare{flex-wrap:wrap;align-items:flex-start;gap:14px;display:flex}.tshare .qr{border-radius:8px;flex:none}.tshare-side{flex-direction:column;flex:200px;gap:8px;min-width:0;display:flex}.tlink{font-family:var(--mono);word-break:break-all;color:var(--text-2);background:var(--surface-3);border-radius:8px;max-height:6.5em;padding:7px 9px;font-size:12px;display:block;overflow:auto}.tshare-btns{flex-wrap:wrap;gap:6px;display:flex}.tform{flex-direction:column;gap:10px;align-items:stretch!important}.terr{color:var(--danger)}.tproj{z-index:100;color:#111;background:#fff;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.tproj-card{text-align:center;flex-direction:column;align-items:center;gap:12px;max-width:100%;display:flex}.tproj-title{margin:0;font-size:clamp(20px,3.4vw,44px);font-weight:800}.tproj-sub{color:#444;margin:0;font-size:clamp(14px,1.8vw,24px)}.tproj .qr{width:min(70vh,80vw);height:min(70vh,80vw)}.tproj-link{font-family:var(--mono);color:#555;word-break:break-all;font-size:clamp(11px,1.2vw,16px)}.tproj .btn{color:#111;background:#e8eaee}.tprompt{flex-direction:column;gap:10px;display:flex}.tprompt-name{margin:0;font-size:17px;font-weight:700}.tprompt-list{gap:4px;margin:0;padding-inline-start:20px;display:grid}.io-menu{z-index:60;background:var(--surface);min-width:200px;max-width:calc(100vw - 16px);color:var(--text);box-shadow:var(--shadow), inset 0 0 0 1px var(--border-2);border-radius:14px;flex-direction:column;padding:6px;animation:.14s ease-out pop-in;display:flex;position:fixed}.io-menu button{text-align:start;color:var(--text);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:9px;padding:9px 12px;font-size:14.5px;font-weight:550}.io-menu button:hover,.io-menu button:focus-visible{background:var(--surface-2);outline:none}.io-menu hr{background:var(--border-2);border:0;height:1px;margin:5px 4px}.io-menu-label{letter-spacing:.07em;text-transform:uppercase;color:var(--text-3);padding:6px 12px 3px;font-size:11.5px;font-weight:700}.io{flex-direction:column;gap:14px;display:flex}.io-tabs{width:100%;display:flex}.io-tabs.seg{display:grid}.io-section{flex-direction:column;gap:12px;min-width:0;display:flex}.io-h{letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);margin:6px 0 0;font-size:13px;font-weight:700}.io-label{color:var(--text-2);font-size:13.5px;font-weight:600}.io-note{color:var(--text-2);margin:0;font-size:14px}.io-hint{color:var(--text-3);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12.5px;overflow:hidden}.io-error{white-space:pre-wrap;overflow-wrap:anywhere;font:13px/1.45 var(--font);color:var(--danger);background:color-mix(in srgb, var(--danger) 10%, transparent);border-radius:10px;margin:0;padding:9px 12px}.io-source{flex-direction:column;gap:6px;display:flex}.io-text{box-sizing:border-box;resize:vertical;background:var(--surface-2);width:100%;color:var(--text);box-shadow:inset 0 0 0 1px var(--border);font:14px/1.45 var(--mono);border:0;border-radius:12px;padding:10px 12px}.io-text:focus{outline:2px solid color-mix(in srgb, var(--accent) 60%, transparent);outline-offset:0}.io-text:disabled{opacity:.5}.io-row{flex-wrap:wrap;align-items:center;gap:10px;min-width:0;display:flex}.io-row-card{background:var(--surface-2);border-radius:12px;justify-content:space-between;padding:10px 12px}.io-opts{flex-wrap:wrap;align-items:center;gap:8px 16px;display:flex}.io-opt{color:var(--text-2);align-items:center;gap:8px;font-size:13.5px;display:inline-flex}.io-check{color:var(--text-2);cursor:pointer;align-items:center;gap:7px;font-size:13.5px;display:inline-flex}.io-check input{width:17px;height:17px;accent-color:var(--accent);margin:0}.select.select-sm{color:var(--text);background-position:right 8px center;max-width:160px;padding:6px 28px 6px 10px;font-size:13.5px}.io-table-wrap{max-height:300px;box-shadow:inset 0 0 0 1px var(--border-2);border-radius:12px;overflow:auto}.io-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:max-content;min-width:100%;font-size:13.5px}.io-table th,.io-table td{text-align:start;border-bottom:1px solid var(--border);white-space:nowrap;padding:6px 10px}.io-table thead th{background:var(--surface-2);font-weight:650;position:sticky;top:0}.io-table thead tr.io-map th{padding-top:2px;top:31px}.io-table tfoot td{vertical-align:top;border-bottom:0}.io-count{color:var(--text-3);font-size:12px}.io-warn{color:var(--pro);white-space:normal;max-width:160px;font-size:11.5px;display:block}.io-lists{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px;margin:0;padding:0;list-style:none;display:grid}.io-lists li{background:var(--surface-2);border-radius:10px;padding:8px 10px}.io-list-name{color:var(--text);font-weight:650}.io-progs{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.io-progs li{background:var(--surface-2);border-radius:12px;min-width:0;padding:10px 12px}.io-prog-head{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.io-code{max-height:160px;font:12.5px/1.45 var(--mono);color:var(--text-2);white-space:pre;margin:8px 0 0;overflow:auto}.io-name{justify-content:space-between}.io-input{background:var(--surface-2);min-width:0;max-width:220px;color:var(--text);box-shadow:inset 0 0 0 1px var(--border);font:14px var(--mono);border:0;border-radius:10px;flex:1;padding:8px 10px}.io-mono{font-family:var(--mono)}.history-actions{flex-wrap:wrap}.history-actions .chip-btn{white-space:nowrap}
