:root{color-scheme:dark;--bg:#0b0f0e;--panel:#101614;--line:#29392f;--text:#d0dbd3;--muted:#85998d;--green:#9ae6b5;--warm:#d8c395;font:20px/1.6 ui-monospace,'Cascadia Code','SFMono-Regular',Consolas,'Noto Sans Mono',monospace;background:var(--bg);color:var(--text)}
*{box-sizing:border-box;scrollbar-width:thin;scrollbar-color:#3d5345 transparent}body{margin:0}button,input,a{-webkit-tap-highlight-color:transparent}button,input,textarea,select{font:inherit}button,a{color:inherit}button{border:1px solid var(--line);background:transparent;padding:8px 12px;border-radius:5px;cursor:pointer}button:hover{background:#1d2b23;border-color:#577760}button:disabled{opacity:.5;cursor:default}:focus-visible{outline:2px solid var(--green);outline-offset:3px}a{text-underline-offset:4px}[hidden]{display:none!important}
.terminal-shell{width:100%;max-width:none;margin:0;padding:18px clamp(14px,2vw,36px);min-height:100dvh;display:flex;flex-direction:column}header{display:flex;justify-content:space-between;align-items:center;gap:16px;padding-bottom:12px;border-bottom:1px solid var(--line)}.wordmark{display:flex;align-items:center;gap:12px;font-size:20px;letter-spacing:1px}.signal{width:8px;height:8px;background:var(--green);border-radius:50%;box-shadow:0 0 14px #9ae6b544;flex-shrink:0}.subtitle{font-size:14px;color:var(--muted)}.lock{font-size:16px;color:var(--green);max-width:45%;overflow-wrap:anywhere}.intro{padding:18px 0 20px;display:grid;grid-template-columns:1fr auto;column-gap:20px;align-items:center}.eyebrow{font-size:12px;letter-spacing:2px;color:var(--muted)}.intro .eyebrow{grid-column:1/-1}h1{font:450 clamp(24px,2.6vw,34px)/1.4 system-ui,sans-serif;letter-spacing:2px;margin:6px 0}.intro p{font-size:16px;color:var(--muted);margin:0;max-width:50vw}
.workspace{flex:1;background:var(--panel);border:1px solid var(--line);border-radius:7px;overflow:hidden;box-shadow:0 18px 70px #0004;--pane-columns:minmax(0,1fr);--pane-height:auto;--show-to-rows:none;--show-to-columns:inline;--file-divider-bottom:1px solid var(--line);--file-divider-right:0;--files-max-height:25dvh;--log-max-height:57dvh}
.workspace[data-layout="columns"]{--pane-columns:minmax(180px,1fr) minmax(0,2.5fr);--pane-height:clamp(460px,72dvh,1100px);--show-to-rows:inline;--show-to-columns:none;--file-divider-bottom:0;--file-divider-right:1px solid var(--line);--files-max-height:none;--log-max-height:none}
@media(min-width:900px){.workspace[data-layout="auto"]{--pane-columns:minmax(240px,1fr) minmax(0,2.5fr);--pane-height:clamp(460px,72dvh,1100px);--show-to-rows:inline;--show-to-columns:none;--file-divider-bottom:0;--file-divider-right:1px solid var(--line);--files-max-height:none;--log-max-height:none}}
.workspace-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 14px;border-bottom:1px solid var(--line)}.workspace-toolbar button{font-size:15px;padding:5px 10px}.layout-to-rows{display:var(--show-to-rows)}.layout-to-columns{display:var(--show-to-columns)}.workspace-panes{display:grid;grid-template-columns:var(--pane-columns);height:var(--pane-height)}.file-panel,.terminal-panel{display:flex;flex-direction:column;min-width:0;min-height:0}.file-panel{border-bottom:var(--file-divider-bottom);border-right:var(--file-divider-right)}.terminal-panel{min-height:420px;container-type:inline-size}.workspace[data-files="hidden"] .file-panel{display:none}.workspace[data-files="hidden"] .workspace-panes{grid-template-columns:minmax(0,1fr);height:clamp(460px,72dvh,1100px)}.workspace[data-files="hidden"] .transcript{max-height:none}
.directory-bar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 16px;background:#141e18;border-bottom:1px solid var(--line);font-size:17px}.directory-bar>span{min-width:0;overflow-wrap:anywhere;color:var(--green)}.directory-bar button{white-space:nowrap;font-size:15px;padding:6px 10px}.files{flex:1;min-height:85px;max-height:var(--files-max-height);overflow:auto;padding:8px}.file{width:100%;display:flex;align-items:center;gap:12px;padding:10px 8px;border:1px solid transparent;text-align:left;font-size:20px}.file-kind{width:24px;display:inline-flex;flex-shrink:0;color:var(--muted)}.file-icon{width:23px;height:23px;flex-shrink:0;vertical-align:middle}.file[data-kind="directory"] .file-kind,.file[data-kind="directory"] .filename{color:var(--green)}.filename{flex:1;min-width:0;overflow-wrap:anywhere}.file-size{font-size:13px;color:var(--muted);white-space:nowrap}.empty,.directory-error{font-size:16px;color:var(--muted);margin:14px 8px;line-height:1.8}.directory-error:empty{display:none}
.transcript{flex:1;min-height:0;max-height:var(--log-max-height);overflow:auto;padding:18px 22px 4px;display:flex;flex-direction:column;scrollbar-width:none}.transcript::-webkit-scrollbar{display:none}.transcript pre{flex-shrink:0;font:inherit;font-size:20px;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.7;margin:0 0 18px;color:#b4c6ba}.transcript .command-echo{margin-bottom:7px;color:var(--text)}.prompt-user{color:var(--green);font-weight:600}.prompt-path{color:#a7bcae}.prompt-separator,.prompt-symbol{color:var(--muted)}.prompt-command{color:#eef5ef}.command-line{flex-shrink:0;display:flex;align-items:center;gap:12px;margin:0;padding:15px 22px 20px}.command-line label{font-size:20px;max-width:55%;overflow-wrap:anywhere;flex-shrink:0}.command-line input{min-width:0;flex:1;border:0;background:transparent;color:#eef5ef;font-size:20px;caret-color:var(--green);outline:none;padding:5px 0}.command-line:focus-within{background:#15271a55}.busy{font-size:13px;color:var(--muted);white-space:nowrap}.transcript .listing-output{display:flex;flex-wrap:wrap;gap:10px 24px}.listing-entry{display:inline-flex;align-items:center;gap:9px;max-width:100%;min-width:0}.listing-entry .ls-name{overflow-wrap:anywhere}.entry-directory{color:var(--green)}.entry-file{color:var(--text)}.entry-executable{color:var(--warm)}.entry-link{color:#8fd3d8}.file.link .filename-text{font-style:italic}.listing-long{flex-direction:column;gap:8px!important}.listing-long .listing-entry{flex-wrap:wrap}.ls-meta{color:var(--muted);font-size:15px;white-space:pre-wrap;overflow-wrap:anywhere}.ls-meta:empty{display:none}
@container(max-width:600px){.command-line{flex-wrap:wrap;gap:4px 12px}.command-line label{max-width:100%;flex-basis:100%}.file-size{display:none}}
.completion-pager{flex-shrink:0;padding:12px 16px;border-top:1px solid var(--line);background:#142019}.completion-hint{font-size:13px;color:var(--muted);line-height:1.7;margin:0 0 8px}.completion-options{display:flex;flex-wrap:wrap;gap:6px;max-height:180px;overflow:auto}.completion-options button{display:flex;align-items:center;gap:12px;text-align:left;max-width:100%;min-width:0;padding:6px 10px;font-size:17px}.completion-options button>span{overflow-wrap:anywhere;min-width:0}.completion-options small{font-size:12px;color:var(--muted)}.completion-options [aria-selected="true"]{background:#294a35;border-color:#8aba96;color:#e5f6e9}footer{display:flex;justify-content:space-between;gap:12px;padding:14px 0 4px;color:var(--muted);font-size:12px}.loading{padding:8vw}
dialog { color:var(--text); background:#101714; border:1px solid #3d5345; border-radius:8px; box-shadow:0 20px 120px #000b; padding:0; } dialog::backdrop { background:#020706d9; backdrop-filter:blur(5px); } #auth { width:420px; max-width:calc(100vw - 30px); padding:32px; } #auth h2 { font-weight:500; font-family:system-ui,sans-serif; } #auth p { font-size:12px; color:var(--muted); line-height:1.8; } #auth label { display:block; font-size:12px; margin:25px 0 10px; } #password { width:100%; border:1px solid #405448; background:#080d0a; border-radius:4px; padding:12px; } #auth #auth-error { color:#ffb6a9; min-height:22px; } .auth-actions { display:flex; justify-content:flex-end; gap:12px; } .primary { background:#95d6aa; border-color:#95d6aa; color:#0a2112; } #viewer { width:min(1200px,94vw); height:90dvh; max-width:100vw; max-height:100dvh; } #viewer-surface { height:100%; position:relative; background:#101714; } #viewer-surface:fullscreen { width:100vw; height:100dvh; } #fullscreen-error { position:absolute; bottom:16px; left:16px; right:16px; z-index:5; margin:0; padding:12px 16px; border:1px solid #705847; background:#261d16; color:#f1d2b5; font-size:12px; overflow-wrap:anywhere; } .viewer-bar { height:56px; display:flex; justify-content:space-between; align-items:center; padding:8px 20px; gap:15px; border-bottom:1px solid var(--line); font-size:12px; } #viewer-title { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } .viewer-bar>div { display:flex; align-items:center; gap:12px; flex-shrink:0; } .viewer-bar button { padding:7px 10px; } #viewer-content { height:calc(100% - 56px); overflow:auto; } .media-frame { height:100%; display:flex; flex-direction:column; gap:20px; align-items:center; justify-content:center; padding:30px; } .media-frame img,.media-frame video { max-width:100%; max-height:100%; object-fit:contain; } .media-frame audio { width:min(600px,90%); } .markdown { max-width:800px; margin:0 auto; padding:35px 40px 80px; font-family:system-ui,sans-serif; line-height:1.95; font-size:16px; overflow-wrap:anywhere; } .markdown h1 { font-size:32px; letter-spacing:1px; } .markdown h2,.markdown h3 { margin-top:1.6em; font-weight:550; } .markdown a { color:var(--green); } .markdown img { max-width:100%; } .markdown pre,.markdown code { font-family:ui-monospace,monospace; background:#080d0a; border-radius:4px; } .markdown pre { padding:20px; overflow:auto; line-height:1.6; } .markdown :not(pre) > code { padding:2px 5px; } .markdown blockquote { border-left:2px solid #6f9b7e; padding-left:22px; margin-left:0; color:#9bb5a5; } .markdown table { border-collapse:collapse; width:100%; font-size:14px; } .markdown th,.markdown td { padding:8px 12px; border:1px solid var(--line); } .text-preview { padding:30px; white-space:pre-wrap; overflow-wrap:anywhere; font-size:14px; line-height:1.85; } .viewer-error { color:inherit; } .slides-view #viewer-content { overflow:hidden; } .game-view #viewer-content { overflow:hidden; } .game-view iframe { width:100%; height:100%; border:0; display:block; } #dropzone { position:fixed; inset:16px; z-index:90; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:20px; background:#0b2019f2; border:2px dashed var(--green); font-size:24px; pointer-events:none; border-radius:8px; } #dropzone span { color:var(--muted); font-size:13px; }
/* Shared modal typography; all login fields use the same theme. */
#auth{width:480px;padding:28px}#auth p{font-size:16px}#auth label{font-size:17px;margin:16px 0 7px}#auth input{width:100%;border:1px solid #405448;background:#080d0a;color:var(--text);border-radius:5px;padding:11px 12px;font-size:20px}#auth h2{font-size:26px;margin:14px 0}.auth-actions{margin-top:20px}.auth-actions button{font-size:17px}#viewer{width:min(1500px,96vw);height:93dvh}.viewer-bar{font-size:17px;height:64px}.viewer-bar button{font-size:16px}#viewer-content{height:calc(100% - 64px)}.markdown{font-size:20px;max-width:1060px;padding:32px 42px 70px}.markdown table{font-size:18px}.markdown h1{font-size:34px}.text-preview{font:20px/1.8 ui-monospace,monospace}.media-frame{padding:20px}#fullscreen-error{font-size:16px}.pdf-view{display:flex;flex-direction:column;height:100%}.pdf-toolbar{display:flex;align-items:center;justify-content:center;gap:14px;flex-shrink:0;padding:10px 12px;background:#101714;border-bottom:1px solid var(--line);font-size:16px}.pdf-toolbar button{font-size:16px;min-width:40px}.pdf-toolbar [role=status]{min-width:8ch;text-align:center}.pdf-zoom{display:flex;gap:6px;margin-left:10px}.pdf-stage{flex:1;min-height:0;overflow:auto;position:relative;display:flex;flex-direction:column;align-items:safe center;gap:16px;padding:20px;outline:none}.pdf-frame{flex-shrink:0;position:relative;min-height:0;width:calc(min(100%,1000px)*var(--pdf-zoom,1));background:white;box-shadow:0 8px 40px #0007}.pdf-page{position:absolute;inset:0;display:block;width:100%;height:100%}
#editor{width:min(1500px,94vw);height:90dvh;max-width:100vw;max-height:100dvh;overflow:hidden}#editor[open]{display:flex;flex-direction:column}.editor-bar,.editor-footer{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 18px;flex-shrink:0}.editor-bar{border-bottom:1px solid var(--line)}.editor-bar>div{display:flex;align-items:center;flex-wrap:wrap;gap:12px;min-width:0}#editor-title{font-size:18px;overflow-wrap:anywhere;font-weight:500}#editor-dirty{color:var(--warm);font-size:14px}#editor-body{flex:1;min-height:0;overflow:hidden}.editor-footer{border-top:1px solid var(--line);font-size:15px;flex-wrap:wrap}.editor-footer>div{display:flex;gap:10px;flex-shrink:0;flex-wrap:wrap}#editor-status{flex:1;min-width:180px;overflow-wrap:anywhere}#editor button{font-size:16px}#editor .cm-textfield{background:#0b0f0e;color:var(--text);border:1px solid var(--line)}#editor .cm-button{background:#24372a;color:var(--text);border:1px solid var(--line)}
.text-preview code{font:inherit}.preview-bar{position:sticky;top:0;z-index:2;display:flex;justify-content:flex-end;padding:8px 16px;background:#101714;border-bottom:1px solid var(--line)}.preview-button{display:inline-grid;place-items:center;width:40px;height:40px;padding:0}.preview-icon{width:20px;height:20px}.no-preview{color:var(--muted);font-size:16px}.markdown math[display="block"]{margin:12px 0}.markdown .diagram{display:block;max-width:100%;margin:20px auto;padding:16px;border-radius:6px;background:#141e18}
.slides{height:100%;display:flex;flex-direction:column}.preview-bar+.slides{height:calc(100% - 57px)}.slides .enhanced{flex:1;min-height:0;display:grid;place-items:safe center;overflow:auto}.slide.markdown{width:100%;max-width:none;margin:0;padding:0 40px;zoom:var(--scale,1);font-size:32px;line-height:1.6;text-align:center}.slide.markdown h1{font-size:2em;letter-spacing:3px;margin:0 0 .5em}.slide.markdown h2{font-size:1.5em;margin:0 0 .6em}.slide ul,.slide ol{display:inline-block;text-align:left}.slide pre{text-align:left;padding:25px}.slide code{color:var(--green)}.slide blockquote{border-left:3px solid var(--green);padding:20px}.slide img{max-height:460px}.slides-bar{display:flex;align-items:center;justify-content:center;gap:10px;height:56px;flex-shrink:0;border-top:1px solid var(--line);font-size:16px;color:var(--muted)}
.table-preview,.archive,.cards{padding:24px}.table-preview table{border-collapse:collapse;font-size:16px}.table-preview th,.table-preview td{padding:6px 12px;border:1px solid var(--line);text-align:left;vertical-align:top}.table-preview th{position:sticky;top:0;background:#1b2b20;color:#eef5ef}.preview-note{margin:0 0 12px;color:var(--muted);font-size:14px}.archive ul{list-style:none;margin:0;padding:0;font-size:16px}.archive li{display:flex;justify-content:space-between;gap:16px;padding:6px 0;border-bottom:1px solid var(--line);overflow-wrap:anywhere}.archive li.directory{color:var(--green)}.archive li span:last-child{color:var(--muted);white-space:nowrap}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;font-family:system-ui,sans-serif}.card{padding:16px 18px;border:1px solid var(--line);border-radius:6px;background:#141e18}.card h3{margin:0 0 10px;font-size:18px;color:#eef5ef}.card dl{display:grid;grid-template-columns:max-content 1fr;gap:4px 12px;margin:0;font-size:15px}.card dt{color:var(--muted)}.card dd{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}.diff span{display:block;min-height:1lh}.diff-file{color:#eef5ef;font-weight:600}.diff-hunk{color:#82aaff}.diff-added{color:#c3e88d;background:#1c2e1a}.diff-removed{color:#f07178;background:#2e1a1c}
.hl-comment{color:#6f8a79;font-style:italic}.hl-keyword,.hl-label{color:#c9a2f0}.hl-string,.hl-literal{color:#c3e88d}.hl-number,.hl-constant{color:#f7a26c}.hl-function,.hl-constructor,.hl-macro{color:#82aaff}.hl-type,.hl-attribute,.hl-namespace{color:#ffcb6b}.hl-property{color:#89ddff}.hl-tag,.hl-error{color:#f07178}.hl-operator,.hl-punctuation{color:#a3b8ab}.hl-embedded{color:var(--text)}.hl-title{color:#eef5ef;font-weight:600}.hl-strong{font-weight:700}.hl-emphasis{font-style:italic}.hl-link{color:#82aaff;text-decoration:underline}.hl-strikethrough{text-decoration:line-through}.hl-diff-add{color:#c3e88d}.hl-diff-delete{color:#f07178}
@media(max-width:650px){.terminal-shell{padding:14px 12px}.subtitle,.intro .eyebrow{display:none}.intro{display:block;padding:16px 0}.intro p{font-size:15px;max-width:none}.wordmark{font-size:17px;gap:8px}.lock{font-size:14px}.file-size{display:none}.file{gap:10px}.files{max-height:23dvh}.workspace[data-layout="columns"]{--pane-columns:minmax(110px,1fr) minmax(0,2fr)}.workspace[data-layout="columns"] .file{font-size:16px;gap:6px}.workspace[data-layout="columns"] .file-icon{width:18px;height:18px}.workspace[data-layout="columns"] .file-kind{width:18px}.workspace[data-layout="columns"] .directory-bar{padding:9px;font-size:14px}.directory-bar{padding:10px 12px}.command-line{padding:12px 14px 17px}.transcript{padding:14px 14px 0}footer span:last-child{display:none}#viewer,#editor{width:100vw;height:100dvh;max-height:100dvh;border-radius:0}.viewer-bar{padding:8px 12px;gap:8px}.viewer-bar>div{gap:8px}#download{display:none}.markdown{padding:24px 20px 50px;font-size:20px}.markdown table{display:block;overflow:auto}.editor-footer>div{width:100%;justify-content:flex-end}.editor-bar .eyebrow{display:none}.pdf-toolbar{gap:8px;padding:8px}.pdf-zoom{margin-left:4px}.pdf-stage{padding:10px;gap:10px}.slide.markdown{padding:0 16px}.table-preview,.archive,.cards{padding:14px}.workspace-toolbar button{font-size:14px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
/* Terminal tabs: one transcript and command line each; only the active one shows. */
.terminal-tabs{display:flex;flex-direction:column;min-width:0;min-height:0}
.terminal-tabs>.terminal-panel{flex:1}
.terminal-panel[hidden]{display:none!important}
.tab-bar{display:flex;align-items:stretch;gap:2px;padding:6px 10px 0;border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none;flex-shrink:0}
.tab-bar::-webkit-scrollbar{display:none}
.tab{display:flex;align-items:center;border:1px solid transparent;border-bottom:0;border-radius:5px 5px 0 0;color:var(--muted)}
.tab[aria-selected="true"]{border-color:var(--line);background:#101714;color:var(--text)}
.tab button{background:none;border:0;color:inherit;font-size:14px;padding:5px 9px;white-space:nowrap}
.tab .tab-close{padding:5px 8px 5px 2px;opacity:.6}
.tab .tab-close:hover{opacity:1}
.tab-new{background:none;border:0;color:var(--muted);font-size:16px;padding:4px 10px}
.tab-new:hover,.tab:hover{color:var(--text)}
/* Search in a preview: a panel over its top right, and the matches it highlights. */
#viewer-search[hidden],.preview-search[hidden]{display:none}
.preview-search{position:absolute;top:76px;right:72px;z-index:6;display:flex;align-items:center;gap:6px;padding:8px 10px;background:#16211b;border:1px solid #3d5345;border-radius:6px;box-shadow:0 8px 30px #0009;max-width:calc(100% - 32px)}
.preview-search input{width:min(320px,50vw);border:1px solid #405448;background:#080d0a;color:var(--text);border-radius:4px;padding:6px 8px;font:16px ui-monospace,monospace}
.preview-search input[aria-invalid="true"]{border-color:#c46a5a}
.preview-search button{padding:4px 8px;font-size:15px;min-width:32px}
.search-toggle[aria-pressed="true"]{background:#2b4434;border-color:var(--green);color:var(--text)}
.search-status{font-size:14px;color:var(--muted);min-width:7ch;max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.search-status.search-error{color:#ffb6a9}
::highlight(preview-search){background-color:#6b5a1f}
::highlight(preview-search-current){background-color:#e0b84a;color:#111}
@media(max-width:650px){.preview-search{left:16px;right:16px;top:70px;flex-wrap:wrap}.preview-search input{flex:1;width:auto}}
/* Full screen, the content has the whole screen: the bars float over it, hidden until the pointer moves (app.js adds .chrome). A game keeps its bar above it: its frame takes the pointer, so moving it there shows nothing. */
#viewer:not(.game-view) #viewer-surface:fullscreen #viewer-content{height:100%}#viewer:not(.game-view) #viewer-surface:fullscreen .viewer-bar{position:absolute;inset:0 0 auto;z-index:4;background:#101714f0}#viewer:not(.game-view) #viewer-surface:fullscreen .preview-bar{position:absolute;top:64px;right:0;z-index:3;border:0;background:none}#viewer:not(.game-view) #viewer-surface:fullscreen .preview-bar+.slides{height:100%}#viewer:not(.game-view) #viewer-surface:fullscreen .slides-bar{position:absolute;inset:auto 0 0;z-index:3;background:color-mix(in srgb,var(--slide-bg,#101714) 94%,transparent)}#viewer:not(.game-view) #viewer-surface:fullscreen :is(.viewer-bar,.preview-bar,.slides-bar){transition:opacity .2s}#viewer:not(.game-view) #viewer-surface:fullscreen:not(.chrome) :is(.viewer-bar,.preview-bar,.slides-bar){opacity:0;pointer-events:none}
/* Phones: the terminal is the app. It takes the visible screen, kept in --app-height by app.js as the on-screen keyboard opens and closes, with the command line at its foot; while the keyboard is open (.keyboard), the header and the files make room. Inputs keep 16px text, below which iOS zooms in. */
@media(max-width:650px){html,body{height:100%;overflow:hidden}.terminal-shell{position:fixed;inset:0 0 auto;height:var(--app-height,100dvh);transform:translateY(var(--app-top,0px));min-height:0;padding:8px 8px 0}.intro,footer,.layout-toggle{display:none}header{padding-bottom:8px;gap:8px}.wordmark{min-width:0;white-space:nowrap}.lock{max-width:62%;display:inline-flex;min-width:0;padding:6px 10px;white-space:nowrap}.lock-name{min-width:0;overflow:hidden;text-overflow:ellipsis}.lock-action{flex-shrink:0;white-space:pre}.workspace{flex:1;min-height:0;display:flex;flex-direction:column;margin-top:8px;border-radius:7px 7px 0 0;border-bottom:0}.workspace-toolbar{padding:4px 8px}.workspace-panes{flex:1;min-height:0;height:auto!important;display:flex;flex-direction:column}.file-panel{flex:0 1 auto;max-height:38%}.files{max-height:none;min-height:0}.file{padding:8px 6px;font-size:17px}.terminal-tabs{flex:1;min-height:0}.terminal-panel{min-height:0}.transcript{max-height:none}.transcript pre{font-size:16px;margin-bottom:12px}.command-line label,.command-line input{font-size:16px}.listing-long{overflow-x:auto}.listing-long .listing-entry{flex-wrap:nowrap;white-space:nowrap}.listing-long .ls-name,.listing-long .ls-meta{overflow-wrap:normal;white-space:pre}.keyboard header,.keyboard .workspace-toolbar,.keyboard .file-panel{display:none}.keyboard .workspace{margin-top:0}}
/* The keys a phone's keyboard lacks, on touch screens. */
.touch-keys{display:none}@media(pointer:coarse){.touch-keys{display:flex;gap:6px;padding:0 10px 8px;flex-shrink:0}.touch-keys button{flex:1;min-width:44px;padding:8px 0;font-size:15px}}
/* Slide themes (viewer.rs SLIDE_THEMES), for slides alone: Light, the default, Dark, Sepia and Night. On the light ones, code takes colors that read on a light page. */
.slides{--slide-bg:#fbfbf8;--slide-text:#1f2622;--slide-muted:#5f6d64;--slide-accent:#16794a;--slide-code:#eef1ec;--slide-line:#d3dbd5;background:var(--slide-bg);color:var(--slide-text)}.slides[data-theme=dark]{--slide-bg:#101714;--slide-text:#d0dbd3;--slide-muted:#85998d;--slide-accent:#9ae6b5;--slide-code:#080d0a;--slide-line:#29392f}.slides[data-theme=sepia]{--slide-bg:#f5ecd9;--slide-text:#3a2f22;--slide-muted:#7a6a55;--slide-accent:#8a4b17;--slide-code:#ebdfc4;--slide-line:#d8c7a6}.slides[data-theme=night]{--slide-bg:#0e1a2b;--slide-text:#e2ebf6;--slide-muted:#8ea3bd;--slide-accent:#7cc4ff;--slide-code:#15253b;--slide-line:#2a3d57}
.slides .slide.markdown{color:var(--slide-text)}.slides .slide a{color:var(--slide-accent)}.slides .slide pre,.slides .slide code{background:var(--slide-code)}.slides .slide code{color:var(--slide-accent)}.slides .slide pre code{color:var(--slide-text)}.slides .slide blockquote{border-left-color:var(--slide-accent);color:var(--slide-muted)}.slides .slide th,.slides .slide td{border-color:var(--slide-line)}.slides .diagram{background:var(--slide-code)}.slides .slides-bar{position:relative;background:var(--slide-bg);border-top-color:var(--slide-line);color:var(--slide-muted)}.slides .slides-bar button{background:transparent;color:var(--slide-text);border-color:var(--slide-line)}.slides .slides-bar button:disabled{opacity:.35}.slides-theme{position:absolute;right:12px;top:50%;transform:translateY(-50%);background:var(--slide-bg);color:var(--slide-text);border:1px solid var(--slide-line);border-radius:4px;padding:5px 6px;font:inherit;font-size:14px}
.slides:is([data-theme=light],[data-theme=sepia]) :is(.hl-comment){color:#6b7a70}.slides:is([data-theme=light],[data-theme=sepia]) :is(.hl-keyword,.hl-label){color:#7a3db8}.slides:is([data-theme=light],[data-theme=sepia]) :is(.hl-string,.hl-literal,.hl-diff-add){color:#2f7d1f}.slides:is([data-theme=light],[data-theme=sepia]) :is(.hl-number,.hl-constant){color:#b2540f}.slides:is([data-theme=light],[data-theme=sepia]) :is(.hl-function,.hl-constructor,.hl-macro,.hl-link){color:#1f5fbf}.slides:is([data-theme=light],[data-theme=sepia]) :is(.hl-type,.hl-attribute,.hl-namespace){color:#8a6100}.slides:is([data-theme=light],[data-theme=sepia]) .hl-property{color:#0b7285}.slides:is([data-theme=light],[data-theme=sepia]) :is(.hl-tag,.hl-error,.hl-diff-delete){color:#c0392b}.slides:is([data-theme=light],[data-theme=sepia]) :is(.hl-operator,.hl-punctuation){color:#55625a}.slides:is([data-theme=light],[data-theme=sepia]) .hl-title{color:var(--slide-text)}
@media(max-width:650px){.slides-theme{position:static;transform:none;margin-left:4px}}
/* Back, before the title, after a link led to another file. */
.viewer-bar>.viewer-heading{display:flex;align-items:center;gap:10px;flex:1 1 auto;min-width:0}#viewer-title{direction:rtl;text-align:left}.viewer-heading #viewer-title{min-width:0}#viewer-back{padding:6px 10px;flex-shrink:0}#viewer-back[hidden]{display:none}
/* A file name keeps to one line. One too long for it slides to show the rest, back and forth: while pointed at or focused, or always on touch screens, which point at nothing (app.js measures --overflow). */
.filename{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;overflow-wrap:normal}@keyframes name-scroll{0%,15%{transform:translateX(0)}85%,100%{transform:translateX(var(--overflow))}}@media(hover:hover){.file:is(:hover,:focus-visible) .filename[data-overflow]{text-overflow:clip}.file:is(:hover,:focus-visible) .filename[data-overflow] .filename-text{display:inline-block;animation:name-scroll var(--duration,6s) ease-in-out infinite alternate}}@media(hover:none){.filename[data-overflow]{text-overflow:clip}.filename[data-overflow] .filename-text{display:inline-block;animation:name-scroll var(--duration,6s) ease-in-out infinite alternate}}@media(prefers-reduced-motion:reduce){.filename[data-overflow]{text-overflow:ellipsis!important}.filename .filename-text{display:inline!important}}
/* Either pane may be hidden; the other takes the room. */
.pane-toggles{display:flex;gap:8px;flex-wrap:wrap}.workspace[data-terminal="hidden"] .terminal-tabs{display:none}.workspace[data-terminal="hidden"] .workspace-panes{grid-template-columns:minmax(0,1fr);height:clamp(460px,72dvh,1100px)}.workspace[data-terminal="hidden"] .file-panel{border:0}.workspace[data-terminal="hidden"] .files{max-height:none}@media(max-width:650px){.workspace[data-terminal="hidden"] .file-panel{flex:1;max-height:none}}
