/* Shared presentation controls. Deliberately leaves coordinate-bearing SVG/canvas content to its owner. */
:root{--c-layout-scale:1;--c-layout-base-font:17px;--c-layout-side-size:248px;--c-layout-vh:100vh}
html,body{font-size:calc(var(--c-layout-base-font)*var(--c-layout-scale))!important}
main{min-width:0;max-inline-size:100%}main>*{min-width:0}pre{max-width:100%;overflow:auto}textarea{max-width:100%}
html[data-c-layout-width=reading] body:not(.present) main{max-width:48rem!important}
html[data-c-layout-width=wide] body:not(.present) main{max-width:96rem!important}
html[data-c-layout-width=full] body:not(.present) main{max-width:none!important}
html[data-c-layout-spacing=compact] .card{padding:.65rem .8rem;margin-block:.55rem}
html[data-c-layout-spacing=comfortable] .card{padding:1.3rem 1.4rem;margin-block:1.1rem}
html[data-c-layout-spacing=comfortable] :is(input,select,textarea){padding:.75rem .85rem}
@media(min-width:801px){
 body:not(.side-fold) .side{width:var(--c-layout-side-size)}
 body.side-left:not(.side-fold) main{margin-left:var(--c-layout-side-size)!important;margin-right:auto!important;width:calc(100% - var(--c-layout-side-size))!important}
 body.side-right:not(.side-fold) main{margin-right:var(--c-layout-side-size)!important;margin-left:auto!important;width:calc(100% - var(--c-layout-side-size))!important}
 body.side-fold.side-left main,body.side-fold.side-right main{width:calc(100% - 3.4rem)!important}
 body.side-left:not(.side-fold) .live-banner{margin-left:var(--c-layout-side-size)}body.side-right:not(.side-fold) .live-banner{margin-right:var(--c-layout-side-size)}
}
.c-layout-anchor{position:relative}
.c-layout-split{display:grid!important;grid-template-columns:minmax(0,var(--c-layout-first,55%)) minmax(0,1fr)!important;align-items:start;min-width:0;gap:1rem}
.c-layout-split.c-layout-stacked,.c-layout-split.c-layout-single{grid-template-columns:minmax(0,1fr)!important}
.c-layout-split>:not(.c-layout-handle){min-width:0!important;width:auto!important;max-width:100%;flex:initial!important}
.c-layout-split>[hidden],.c-layout-split>.hidden{display:none!important}
.c-layout-viewport{height:var(--c-layout-panel-height,58vh)!important;min-height:0!important;max-height:none!important;flex:none!important}
.c-layout-handle{position:absolute;z-index:800;touch-action:none;user-select:none;display:flex;align-items:center;justify-content:center;color:var(--accent);border-radius:5px;opacity:.5}
.c-layout-handle:hover,.c-layout-handle:focus-visible,.c-layout-handle.c-layout-dragging{opacity:1;background:var(--accent-soft);outline:2px solid var(--accent);outline-offset:-2px}
.c-layout-handle[data-axis=x]{top:0;bottom:0;width:16px;right:-8px;cursor:col-resize}
.c-layout-handle[data-axis=x][data-side=start]{left:-8px;right:auto}
.c-layout-handle[data-axis=x]::after{content:"";height:38px;width:4px;border-inline:1px solid currentColor}
.c-layout-handle[data-axis=y]{left:16px;right:16px;height:16px;bottom:-7px;cursor:row-resize}
.c-layout-handle[data-axis=y]::after{content:"";width:42px;height:4px;border-block:1px solid currentColor}
.c-layout-handle[hidden]{display:none!important}
.side>.c-layout-handle{right:0}.side-right .side>.c-layout-handle{left:0;right:auto}.side.c-layout-anchor{position:fixed}
#c-layout-open{white-space:nowrap;margin:0;flex:none;font-size:.78rem;line-height:1.3}.topbar{min-width:0}.topbar .right{min-width:0;flex-wrap:wrap}main>#c-layout-open{float:right;margin:.25rem 0 .6rem .6rem}
#c-layout-dialog{width:min(620px,calc(100vw - 24px));max-width:calc(100vw - 24px);max-height:calc(var(--c-layout-vh,100dvh) - 28px);padding:1rem 1.1rem;border:1px solid var(--hair);border-radius:12px;background:var(--panel);color:var(--ink);overflow:auto;overscroll-behavior:contain;box-shadow:0 15px 80px #0004;font:inherit;z-index:20000}
#c-layout-dialog::backdrop{background:#10182066}#c-layout-dialog:not([open]){display:none}#c-layout-dialog header{display:flex;gap:1rem;align-items:center;justify-content:space-between}#c-layout-dialog h2{font-size:1.1rem;margin:0}#c-layout-dialog h2 small{display:block;font-size:.8rem;color:var(--muted)}#c-layout-dialog h3{font-size:.95rem;margin:1rem 0 .3rem}#c-layout-dialog .muted{font-size:.8rem}#c-layout-dialog label{font-size:.82rem;margin:.5rem 0}#c-layout-dialog select{padding:.45rem;font-size:.85rem}
.c-layout-settings{display:grid;grid-template-columns:1fr 1fr;gap:.5rem 1rem}.c-layout-settings .c-layout-scale{grid-column:1/-1}.c-layout-scale output{float:right}.c-layout-settings input[type=range],.c-layout-panel-control input[type=range]{width:100%;padding:0;height:30px;accent-color:var(--accent);cursor:ew-resize}
.c-layout-panel-control{display:grid;grid-template-columns:1fr auto;gap:.2rem .6rem;border-top:1px solid var(--hair);padding:.55rem 0}.c-layout-panel-control input,.c-layout-panel-control small{grid-column:1/-1}.c-layout-panel-control output{font-variant-numeric:tabular-nums;color:var(--ink)}#c-layout-dialog footer{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.8rem}#c-layout-panel-controls:empty::after{content:'This page uses a single content column. Page width and text controls are available above.';font-size:.85rem;color:var(--muted)}
@media(max-width:800px){
 :root{--c-layout-base-font:16px}body.side-left main,body.side-right main,body.side-fold.side-left main,body.side-fold.side-right main{width:100%!important;margin-inline:auto!important}
 .abar{padding-bottom:max(.5rem,env(safe-area-inset-bottom))}.abar-in textarea{min-width:min(14rem,100%)}
 #c-layout-dialog{padding:.8rem}.c-layout-settings{grid-template-columns:minmax(0,1fr)}
 .strip .right{gap:.3rem}.strip .brand{margin-right:0}#c-layout-open{padding:.4rem .5rem;max-width:100%}
}
@media(pointer:coarse){.c-layout-handle[data-axis=x]{width:22px}.c-layout-handle[data-axis=y]{height:22px}.side-a{min-height:44px}#c-layout-dialog button,#c-layout-dialog select{min-height:44px}#c-layout-dialog input[type=range]{height:40px}}
@media(prefers-reduced-motion:reduce){main,.side{transition:none!important}}
@media print{#c-layout-open,#c-layout-dialog,.c-layout-handle{display:none!important}.c-layout-split{display:block!important}.c-layout-viewport{height:auto!important;overflow:visible!important}html,body{font-size:inherit!important}html[data-c-layout-width] main{width:auto!important;max-width:none!important;margin:0!important}}
/* Independent Scriba shells retain their base typography and theme. */
html{font-size:calc(var(--c-layout-root-font,var(--c-layout-base-font))*var(--c-layout-scale))!important}
#c-layout-dialog{--hair:var(--line,#c9d2cb);--panel:var(--white,#fffef8);--accent:var(--green,#245a48);--accent-soft:var(--green-soft,#e9f0e9);--ink:#263b30;--muted:#5b6d62;box-sizing:border-box}
html[data-theme=dark] #c-layout-dialog{--panel:#202927;--hair:#465650;--ink:#ecf0e9;--muted:#a5b8af;--accent:#a4d3bd;--accent-soft:#30483d}
#c-layout-dialog *{box-sizing:border-box}#c-layout-dialog label{display:block}#c-layout-dialog label.c-layout-panel-control{display:grid}#c-layout-dialog select{display:block;width:100%;min-width:0;color:inherit;background:var(--panel);border:1px solid var(--hair);border-radius:5px}#c-layout-dialog button,#c-layout-open{border:1px solid var(--hair,var(--line,#b8c8bf));border-radius:6px;background:var(--panel,var(--white,#fffef8));color:var(--ink,#263b30);cursor:pointer;padding:.45rem .65rem;font:inherit;font-size:.8rem}
#c-layout-dialog label[hidden]{display:none!important}.c-layout-handle{color:var(--accent,var(--green,#245a48))}.c-layout-handle:focus-visible,.c-layout-handle:hover{background:var(--accent-soft,var(--green-soft,#e9f0e9));outline-color:var(--accent,var(--green,#245a48))}
.c-layout-split[hidden],.c-layout-split.hidden,.c-layout-three[hidden],.c-layout-three.hidden{display:none!important}
.c-layout-three{display:grid!important;grid-template-columns:minmax(0,var(--c-layout-first,28%)) minmax(0,var(--c-layout-second,38%)) minmax(0,1fr)!important;gap:1rem;min-width:0}.c-layout-three>*{min-width:0!important;grid-column:auto!important}.c-layout-three.c-layout-stacked{grid-template-columns:minmax(0,1fr)!important}
.masthead-end,.sm-masthead nav,.reader-header nav,.journey-guide-header nav{flex-wrap:wrap;min-width:0}dialog[open]{max-width:calc(100vw - 16px);max-height:calc(var(--c-layout-vh) - 20px)}dialog>header,dialog>[class$="-header"]{flex-wrap:wrap}dialog>#c-layout-open{float:right;margin-bottom:.6rem}
.c-layout-split.c-layout-stacked>*{grid-column:1!important}.c-layout-viewport{max-width:100%}
@media(max-width:600px){.masthead,.sm-masthead,.reader-header,.journey-guide-header{flex-wrap:wrap;gap:.65rem}.masthead-end{justify-content:flex-start}.reader-evidence-grid{grid-template-columns:minmax(0,1fr)}#c-layout-dialog footer button{flex:1 1 150px}}
@media print{.reader-grid.c-layout-split:not([hidden]):not(.hidden){display:grid!important;grid-template-columns:2fr 1fr!important}.reader-grid.c-layout-stacked>*{grid-column:auto!important}}
.c-layout-handle[data-axis=y][data-side=start]{top:0;bottom:auto}.fpanel>.c-layout-handle[data-axis=x][data-side=start]{left:0}.fpanel>.c-layout-handle[data-axis=x][data-side=end]{right:0}

.c-layout-dialog-size{width:var(--c-layout-dialog-width)!important;max-width:calc(100vw - 24px)!important}
/* Cursus-only display presets; independent Scriba shells keep their own controls. */
.c-layout-presets{display:flex;flex-wrap:wrap;gap:.4rem;margin:.8rem 0}.c-layout-presets>button{flex:1}
#c-layout-dialog .c-layout-presets>[aria-pressed=true]{background:var(--accent);color:var(--panel);border-color:var(--accent)}
html[lang^=zh] #c-layout-panel-controls:empty::after{content:'此页使用单栏内容，可在上方调整页面宽度与字号。'}
html[data-c-layout-mode=focus] .strip .who{display:none}
/* The composer folds without removing its input or any audience controls. */
.abar{max-height:min(48dvh,28rem);overflow:auto;overscroll-behavior:contain;box-sizing:border-box}
.abar .abar-head{display:flex;align-items:center;gap:.6rem;min-width:0;margin-bottom:.35rem}
.abar .abar-head>button{font-size:.75rem;padding:.25rem .55rem;margin:0;white-space:nowrap}
.abar .abar-head .abar-to{min-width:0;flex:1}.abar .abar-head .chip{max-width:100%}
.abar #abar-draft-state{font-size:.72rem;white-space:nowrap}
.abar #abar-editor[hidden],.abar #abar-options[hidden]{display:none!important}
/* Fold the entire bottom panel, including lecture room controls mounted outside the editor. */
#abar.compact-fold{left:auto;right:.65rem;bottom:.5rem;width:max-content;max-width:calc(100vw - 1.3rem);padding:.25rem .4rem;border:1px solid var(--hair);border-radius:.7rem;overflow:hidden;box-shadow:0 2px 12px rgba(0,0,0,.12)}
#abar.compact-fold>:not(.abar-head){display:none!important}
#abar.compact-fold .abar-head{margin:0;gap:.4rem}
#abar.compact-fold .abar-to{display:none}
#abar .abar-head>button{min-height:36px;font-size:.8rem}
#abar.compact-fold #abar-draft-state:empty{display:none}
.abar .abar-in{gap:.4rem;align-items:end;flex-wrap:nowrap}
.abar .abar-in textarea{font-size:1rem;height:2.6rem;min-height:2.6rem;min-width:0;max-height:10rem}
.abar .abar-in button{font-size:.85rem;padding:.5rem .7rem;min-height:2.6rem;white-space:nowrap}
.abar #abar-options{margin-top:.55rem;padding-top:.5rem;border-top:1px solid var(--hair);display:flex;align-items:start;gap:.65rem;flex-wrap:wrap}
.abar #abar-options .abar-extra{flex:1;min-width:0;margin-top:0}
.abar .abar-mark:empty{display:none}.abar #abar-kind{max-width:100%}
.fpanel .fgeometry{display:grid;grid-template-columns:1fr 1fr;gap:.4rem .6rem;padding:.55rem .65rem;border-bottom:1px solid var(--hair);font-size:.76rem;max-height:35dvh;overflow:auto;min-height:0;flex:0 1 auto}
.fpanel .fgeometry[hidden],.fpanel.fold>.fgeometry{display:none!important}
.fpanel .fgeometry label{display:block;min-width:0;margin:0}.fpanel .fgeometry input{display:block;width:100%;box-sizing:border-box;font-size:.82rem;padding:.35rem .4rem;margin:.15rem 0 0}
.fpanel .fgeometry small{grid-column:1/-1;color:var(--muted);line-height:1.4}.fpanel .fgeometry button{font-size:.75rem;margin:0}
.fpanel .fresize{touch-action:none}.fpanel .fresize:focus-visible{outline-offset:0}
@media(max-width:600px){.abar #abar-draft-state{display:none}.abar .abar-in{flex-wrap:wrap}.abar .abar-in textarea{flex-basis:100%;width:100%}.abar .abar-in button{flex:1}.abar .abar-head .chip{font-size:.75rem}.abar .abar-head{gap:.3rem}.fpanel .fgeometry{font-size:.75rem}}
@media(pointer:coarse){#abar .abar-head>button,.abar .abar-in button{min-height:44px}.fpanel .fgeometry input{min-height:40px}}
@media print{.abar{display:none!important}}
