:root{color-scheme:dark;font-family:Inter,system-ui,sans-serif;background:#11151b;color:#e9eef6}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button,a{cursor:pointer}button{background:#222c38;color:#e9eef6;border:1px solid #3c4a5b;border-radius:6px;padding:7px 11px}button:hover,button[aria-pressed=true]{background:#34475d}button:disabled{opacity:.5;cursor:wait}a{color:#98c7ff;text-decoration:none;font-size:12px}header{height:auto;min-height:56px;padding:10px 16px;display:flex;align-items:center;gap:12px;border-bottom:1px solid #35404d}nav{display:flex;gap:5px;margin-left:auto}#body{height:calc(100dvh - var(--header-height,56px));display:flex}main{min-width:0;flex:1;display:flex;gap:1px;background:#35404d}.pane{min-width:0;flex:1;display:flex;flex-direction:column;background:#151b23}.pane-title{height:35px;padding:7px 10px;display:flex;justify-content:space-between;gap:10px;font-size:13px}.pane-title small{font-size:11px;color:#a2aebb;margin-left:7px}iframe{border:0;width:100%;flex:1;background:#fff}main[data-layout=t3] .chrome,main[data-layout=chrome] .t3,main[data-layout=rstudio] .chrome,main:not([data-layout=rstudio]) .rstudio{display:none}aside{width:var(--user-aside-width,var(--aside-width,340px));flex-shrink:0;padding:var(--panel-pad,16px);overflow:auto;border-left:1px solid #35404d;background:#141c26}#skills-panel,#delegation-panel,#files-panel{--aside-width:min(560px,46vw)}#update-panel{--aside-width:min(460px,40vw)}.quota-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}h2{font-size:16px;margin:0}.caption,#quota-state{font-size:12px;color:#9cabbc;line-height:1.5}.card{border-top:1px solid #35404d;padding:13px 0}.card h3{font-size:14px;margin:0 0 8px}.card p{font-size:12px;color:#adbacb;margin:5px 0;overflow-wrap:anywhere}.window{margin:9px 0}.window-label{display:flex;justify-content:space-between;gap:8px;font-size:12px;margin-bottom:5px}progress{width:100%;height:8px;accent-color:#64c3a5}.unknown{color:#edc779!important}.badge{font-size:10px;color:#a3cafa;margin-left:7px}.pairing{min-height:100dvh;display:grid;place-items:center}.pairing form{width:min(420px,90vw);padding:28px;background:#19212c;border:1px solid #35404d;border-radius:10px}.pairing p{font-size:14px;line-height:1.5;color:#adbacb}.pairing label{display:block;font-size:13px;margin-top:20px}.pairing input{display:block;width:100%;padding:10px;margin:8px 0 15px;background:#101720;color:white;border:1px solid #526378;border-radius:5px}#login-error{color:#ffb7aa}body [hidden]{display:none!important}@media(max-width:1050px){main[data-layout=split],main[data-layout=rstudio]{flex-direction:column}.pane{min-height:0}aside{--aside-width:min(420px,42vw)}}@media(max-width:700px){header{gap:5px;padding:7px;font-size:12px}button{padding:6px;font-size:12px}aside{position:fixed;right:0;top:var(--header-height,56px);bottom:0;background:#141c26;--aside-width:min(460px,92vw);width:var(--aside-width);z-index:12;max-height:calc(100dvh - var(--header-height,56px))}nav{margin-left:0}.pane-title a{font-size:10px}}

#panes{gap:0}#panes[data-layout=split] .t3,#panes[data-layout=rstudio] .t3{flex:var(--split-ratio,50) 1 0}#panes[data-layout=split] .chrome,#panes[data-layout=rstudio] .rstudio{flex:calc(100 - var(--split-ratio,50)) 1 0}#splitter{flex:0 0 10px;cursor:col-resize;touch-action:none;background:#263342;position:relative}#splitter::after{content:"";position:absolute;background:#8194ab;border-radius:2px;width:2px;height:36px;left:4px;top:calc(50% - 18px)}#splitter:hover,#splitter:focus-visible,#panes.resizing #splitter{background:#456384;outline:none}#panes:not([data-layout=split]):not([data-layout=rstudio]) #splitter{display:none}#panes.resizing{user-select:none}#panes.resizing iframe{pointer-events:none}@media(max-width:1050px){#splitter{cursor:row-resize}#splitter::after{width:36px;height:2px;left:calc(50% - 18px);top:4px}}


#update-panel p,#security-panel p{font-size:13px;line-height:1.5}#panes[data-layout=t3] .t3 .pane-title{display:none}
header nav{margin-left:auto;gap:6px}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:7px;border-color:transparent;background:transparent}.icon-button[aria-expanded=true]{background:#34475d;border-color:#526378}.icon-button:focus-visible{outline:2px solid #98c7ff;outline-offset:2px}@media(max-width:480px){header{gap:4px}header strong{font-size:10px}header nav{gap:2px}.icon-button{width:30px;height:34px;padding:5px}}

#security-panel input{display:block;width:100%;padding:9px;margin:8px 0 12px;background:#101720;color:white;border:1px solid #526378;border-radius:5px}#security-panel{overflow:auto}

#update-panel{overflow:auto}.harness-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 0;font-size:13px}.harness-row button{flex-shrink:0}

#skills-panel{overflow:auto;color:#eef3f8}#skills-panel[hidden]{display:none}#skills-panel textarea,#skills-panel select{display:block;width:100%;box-sizing:border-box;margin:.5rem 0;padding:.6rem}#skills-panel pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:.8rem}#skills-panel .incident{border-top:1px solid #536176;padding:.8rem 0}#skills-panel button{margin:.2rem}.maintenance-actions{display:flex;flex-wrap:wrap}

#resources{margin-left:auto;display:flex;gap:12px;align-items:flex-end;font-size:10px;white-space:nowrap}.resource{display:grid;gap:3px;min-width:54px}.resource>span{white-space:normal;overflow-wrap:anywhere}.resource meter{width:100%;height:7px;appearance:none;border:0;background:#303946;border-radius:3px}.resource meter::-webkit-meter-bar{background:#303946;border:0}.resource meter::-webkit-meter-optimum-value{background:#69cbb1}.resource meter.busy::-webkit-meter-optimum-value{background:#ed8f66}.resource meter::-moz-meter-bar{background:#69cbb1}.resource meter.unknown{opacity:.35}header{flex-wrap:wrap}@media(max-width:900px){#resources{width:100%;justify-content:flex-end;gap:10px}.resource{flex:1;max-width:140px}}
/* Phones do not get the meter strip. Measured at 390px it was 73px of a 141px
   header — more than half the chrome standing between you and the workspace —
   for five numbers that are one tap away in the Infrastructure panel. It is
   display:none rather than a narrower layout because there is no width at which
   five labelled meters earn a row on a phone; resources.js stops polling while
   it is hidden, so a phone also stops fetching /api/resources every 10s. */
@media(max-width:700px){#resources{display:none}}

.resource[class*="infra-"]{min-width:42px;grid-template-columns:auto auto;align-items:center;gap:4px}.resource[class*="infra-"] span{font-size:10px}.resource[class*="infra-"] i{width:7px;height:7px;border-radius:50%;background:#e06f62;display:inline-block}.resource.infra-online i{background:#69cbb1;box-shadow:0 0 6px #69cbb188}.resource.infra-timeout i{background:#edc779}
#infra-panel h2{font-size:16px}.infra-row{display:grid;grid-template-columns:1fr auto;gap:3px 12px;padding:12px 0;border-top:1px solid #35404d}.infra-row small{color:#9cabbc;font-family:monospace}.infra-state{font-size:12px;color:#ed8f66}.infra-online{color:#69cbb1}.infra-timeout{color:#edc779}
.infra-busy{color:#edc779!important}.resource.infra-busy i{background:#edc779}

#delegation-panel{overflow:auto;color:#eef3f8}#delegation-panel[hidden]{display:none}#delegation-panel h2{font-size:16px}#delegation-panel button{margin:.2rem}#delegation-panel pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:.78rem;color:#adbacb;margin:.4rem 0 0}#delegation-status{font-size:12px;color:#9cabbc;overflow-wrap:anywhere}.inline-check{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#adbacb;margin:.2rem .4rem}
.delegation-row{border-top:1px solid #35404d;padding:.7rem 0}.delegation-row summary{display:flex;flex-wrap:wrap;align-items:center;gap:8px;cursor:pointer;font-size:13px}.delegation-row summary small{color:#9cabbc;font-size:11px;font-family:monospace}.delegation-row .job-reason{color:#edc779;font-size:11px;flex-basis:100%;font-style:normal}.delegation-row .caption{margin:.4rem 0 0}.delegation-recent{border-top:1px solid #35404d;padding-top:.6rem;margin-top:.6rem}.delegation-recent>summary{cursor:pointer;font-size:12px;color:#9cabbc}
.job-state{font-size:10px;text-transform:uppercase;letter-spacing:.06em;padding:2px 7px;border-radius:999px;border:1px solid currentColor;flex-shrink:0}.job-running{color:#69cbb1}.job-stalled{color:#edc779}.job-orphaned{color:#ed8f66}.job-completed{color:#7f96ad}.job-hold{color:#edc779}.job-failed{color:#ed8f66}.job-abandoned{color:#6d7d8f}
.icon-button{position:relative}#delegation-badge{position:absolute;top:2px;right:2px;min-width:15px;height:15px;padding:0 3px;margin:0;display:grid;place-items:center;font-size:9px;font-weight:700;line-height:1;color:#11151b;background:#edc779;border-radius:999px}

#delegation-new{border:1px solid #3c4a5b;border-radius:9px;padding:.7rem .9rem;margin-bottom:.8rem;background:#141d28}#delegation-new>summary{cursor:pointer;font-size:13px;font-weight:600}#delegation-new label{display:block;font-size:11px;color:#9cabbc;margin:.6rem 0 .25rem}#delegation-new textarea{width:100%;box-sizing:border-box;padding:.55rem;background:#101720;color:#e9eef6;border:1px solid #3c4a5b;border-radius:6px;font:inherit;font-size:12px}.subagent-row{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.2rem}.subagent-row span{flex:1 1 118px;min-width:0}.subagent-row select,.subagent-row input{width:100%;box-sizing:border-box;padding:.4rem;background:#101720;color:#e9eef6;border:1px solid #3c4a5b;border-radius:6px;font-size:12px}#subagent-status{font-size:12px;color:#9cabbc;overflow-wrap:anywhere}#subagent-status.error{color:#ffb7aa}
.job-stop{margin-left:auto;padding:2px 9px;font-size:11px;border-color:#7d4a4a;background:#2a1c1c;color:#ffb7aa}.job-stop:hover:not(:disabled){background:#3d2626}
.job-reload{margin:.4rem 0 0;padding:2px 9px;font-size:11px}.job-output{margin-top:.3rem}.job-chunk h4{margin:.5rem 0 .2rem;font-size:11px;color:#9cabbc;font-weight:600}.job-chunk pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:.75rem;max-height:340px;overflow:auto;background:#0f151d;border:1px solid #27323f;border-radius:6px;padding:.5rem;margin:0}

/* Phones. The panel stops floating and becomes the screen: a 780px card inset
   from a 360px viewport leaves no room to read a result, and a summary row that
   wraps puts Stop under your thumb by accident. Controls grow to touch size. */
@media(max-width:600px){
 /* An id-level --aside-width out-specifies an element rule, so the phone
    override has to name the same ids or the panel stays desktop-narrow. */
 aside,#skills-panel,#delegation-panel,#files-panel,#update-panel,#security-panel,#infra-panel,#quota-panel{--aside-width:100vw}
 aside{border-left:0}
 aside#delegation-panel{--panel-pad:.9rem}
 #delegation-panel h2{font-size:15px}
 #delegation-new{padding:.6rem}
 .subagent-row span{flex:1 1 100%}
 .subagent-row select,.subagent-row input,#subagent-objective{padding:.6rem;font-size:16px}
 #subagent-start{width:100%;margin:.4rem 0 0;padding:10px}
 /* Refresh is not a primary action: given the whole width it pushed the job
    list — the reason the panel was opened — a further 60px down the screen. It
    shares one row with the auto-refresh checkbox that belongs to it. */
 #delegation-panel .maintenance-actions{align-items:center;gap:8px;margin:0 0 .5rem}
 #delegation-refresh{flex:0 0 auto;margin:0;padding:7px 14px;min-height:34px}
 #delegation-panel .inline-check{margin:0}
 .delegation-row summary{gap:6px;padding:2px 0}
 .delegation-row summary small{flex-basis:100%;margin-left:0}
 /* The facts line takes a full row, so Stop starts the next one. Left-aligned
    and full-height is a deliberate target, not a squeezed corner of the title. */
 .job-stop,.job-reload{margin-left:0;padding:7px 14px;font-size:12px;min-height:34px}
 .job-chunk pre{max-height:50dvh;font-size:.8rem}
 #delegation-badge{min-width:17px;height:17px;font-size:10px}
}
/* The toolbar is the only way to reach any panel, and it now carries eleven
   buttons. Below roughly 380px they no longer fit on one line and the nav was
   forcing the whole document wider than the viewport, which scrolls every panel
   sideways. Wrapping keeps the targets tappable instead of shrinking them past
   usefulness; the header's ResizeObserver republishes --header-height, so the
   panels anchored to it follow the taller header. */
@media(max-width:600px){
 header nav{flex-wrap:wrap;justify-content:flex-end;row-gap:4px}
}
/* Ten buttons still fit one row on a 360px phone if they are tight enough;
   below that the wrap above takes over rather than shrinking them further. */
@media(max-width:600px) and (min-width:340px){
 header nav{gap:2px}
 .icon-button{width:29px;height:34px;padding:4px}
}
@media(max-width:380px){
 aside#delegation-panel{--panel-pad:.7rem}
 #delegation-panel .caption{font-size:11px}
}

/* Sidebar grip. Mirrors the pane splitter: drag, arrow keys, double-click to
   reset. Hidden when no sidebar is open and on phones, where the sidebar
   covers the workspace and there is nothing to trade width against. */
#aside-grip{flex:0 0 8px;cursor:col-resize;touch-action:none;background:#263342;position:relative}
#aside-grip::after{content:"";position:absolute;background:#8194ab;border-radius:2px;width:2px;height:34px;left:3px;top:calc(50% - 17px)}
#aside-grip:hover,#aside-grip:focus-visible,#body.aside-resizing #aside-grip{background:#456384;outline:none}
#body.aside-resizing{user-select:none}#body.aside-resizing iframe{pointer-events:none}
@media(max-width:700px){#aside-grip{display:none}}

/* ── Sidebar chrome ─────────────────────────────────────────────────────────
   One header for every panel: it stays put while the body scrolls, so the
   title and the way out never scroll off. The negative margins let it span the
   panel's padding and sit flush against the edges. */
.panel-head{position:sticky;top:0;z-index:3;display:flex;align-items:center;justify-content:space-between;
 gap:10px;margin:calc(var(--panel-pad,16px) * -1) calc(var(--panel-pad,16px) * -1) 0;
 padding:12px var(--panel-pad,16px);background:#141c26;border-bottom:1px solid #2a3644}
/* Spacing below the header is the next element's, not a collapsing margin on
   the sticky header, which let the first line slide under it. */
/* The header's negative top margin pulls the following flow up by the same
   amount, so the gap has to pay that back before it adds any of its own. */
.panel-head + *{margin-top:calc(var(--panel-pad,16px) + 14px)!important}
.panel-head h2{font-size:14px;font-weight:600;letter-spacing:.01em;margin:0;color:#e9eef6}
.panel-head-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}
.panel-head-actions button{padding:5px 10px;font-size:12px}
.panel-close{width:28px;height:28px;padding:0;display:grid;place-items:center;font-size:19px;line-height:1;
 border-color:transparent;background:transparent;color:#9cabbc}
.panel-close:hover{background:#26323f;color:#e9eef6}
aside{--panel-pad:16px}
#skills-panel,#delegation-panel{--panel-pad:1.2rem}
#files-panel,#security-panel,#infra-panel,#update-panel{--panel-pad:18px}

/* Sections read as sections: a rule above, room around, and a quieter weight
   than the panel title so the hierarchy is title > section > label. */
aside h3{font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:#9cabbc;
 margin:20px 0 8px;padding-top:14px;border-top:1px solid #232e3b}
aside h3:first-of-type{border-top:0;padding-top:0;margin-top:4px}
/* A quota card's heading is an account name, not a section: it must not be
   shouted in caps by the section rule above. */
aside .card h3{font-size:14px;font-weight:600;letter-spacing:normal;text-transform:none;
 color:#e9eef6;margin:0 0 8px;padding-top:0;border-top:0}

/* Explanatory text is support, not content: it should be legible and quiet
   rather than competing with the thing it explains. */
aside .caption{font-size:11.5px;line-height:1.55;color:#8493a5}
aside .caption strong{color:#a9b8c9;font-weight:600}

/* Buttons at one height, with a single emphasised action per group. */
aside button{min-height:30px;border-radius:7px}
.maintenance-actions{gap:6px;margin:2px 0 10px}
aside button.primary{background:#2b6cb0;border-color:#3b82c4;color:#f2f7ff}
aside button.primary:hover:not(:disabled){background:#3479c2}

/* Readable meters. A hairline cannot show the difference between 26% and 0%. */
aside meter,aside progress{height:7px;border-radius:999px;overflow:hidden}
.window-label{font-size:11.5px;color:#a9b8c9}

/* Say so when there is nothing, rather than showing an empty region. */
.empty-note{font-size:12px;color:#8493a5;padding:10px 0;margin:0}

/* Infrastructure sidebar styling */
.infra-card{padding:12px 0;border-top:1px solid #232e3b}
.infra-card:first-of-type{border-top:0;padding-top:4px}
.infra-card h3{font-size:13px;font-weight:600;margin:0 0 6px;color:#e9eef6;overflow-wrap:anywhere}
.infra-meter-row{margin:7px 0}.infra-meter-row progress{display:block;margin:0}
.infra-meter-row .window-label{display:flex;justify-content:space-between;gap:8px;font-size:11.5px;color:#a9b8c9;margin-bottom:4px;overflow-wrap:anywhere}
.infra-verdict{font-size:12px;line-height:1.45;color:#98c7ff;background:#182230;border-left:3px solid #3b82c4;padding:6px 9px;margin:8px 0 2px;border-radius:0 4px 4px 0;overflow-wrap:anywhere}
.infra-unreachable{color:#ffb7aa!important;font-weight:500}
.infra-no-gpu{font-style:italic;margin:4px 0}
progress.meter-ok{accent-color:#64c3a5}
progress.meter-warn{accent-color:#edc779}
progress.meter-danger{accent-color:#ed8f66}
progress.meter-ok::-webkit-progress-value{background:#64c3a5}
progress.meter-warn::-webkit-progress-value{background:#edc779}
progress.meter-danger::-webkit-progress-value{background:#ed8f66}
progress.meter-ok::-moz-progress-bar{background:#64c3a5}
progress.meter-warn::-moz-progress-bar{background:#edc779}
progress.meter-danger::-moz-progress-bar{background:#ed8f66}

/* Project explorer: each scrolling surface owns its overflow. */
#files-panel{padding:0;gap:0;display:flex;flex-direction:column;overflow:hidden;min-width:0;--panel-pad:0}
#files-panel .panel-head{position:relative;margin:0;padding:8px 12px;min-height:46px;flex-shrink:0;flex-wrap:nowrap}
#files-panel .panel-head+*{margin-top:0!important}#files-panel button{min-height:26px;padding:3px 8px;font-size:12px;border-radius:4px}
#files-panel :focus-visible{outline:1px solid #98c7ff;outline-offset:-1px}#files-explorer{display:flex;flex-direction:column;flex:1;min-height:0;min-width:0;overflow:hidden}
#files-tree-pane{flex:0 0 var(--tree-ratio,55%);display:flex;flex-direction:column;min-width:0;min-height:180px;overflow:hidden;background:#111821}
.files-toolbar{display:flex;align-items:center;gap:4px;padding:6px 8px;flex-wrap:wrap}.files-toolbar button{background:transparent;border-color:transparent}.files-toolbar a{margin-left:auto;font-size:11px}
.files-filter{display:flex;gap:4px;padding:0 8px 7px;min-width:0}.files-filter input{flex:1;min-width:0;width:0;background:#0e141c;color:#e9eef6;border:1px solid #354456;border-radius:4px;padding:5px 7px;font-size:12px}.files-filter button{background:transparent;border-color:transparent}
#files-list{flex:1;min-height:35px;overflow:auto;padding:3px 0 8px;font-size:12px}.tree-item{outline:none;min-width:0}.tree-row{height:24px;display:flex;align-items:center;gap:5px;cursor:pointer;position:relative;min-width:0;padding-right:8px}.tree-row:hover{background:#1d2a3a}.tree-item[aria-selected=true]>.tree-row{background:#283d54}.tree-item:focus>.tree-row{outline:1px solid #8194ab;outline-offset:-1px}.tree-chevron{width:12px;flex-shrink:0;text-align:center;color:#9cabbc;font-size:17px}.tree-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.tree-group{position:relative}.tree-group::before{content:"";position:absolute;left:14px;top:0;bottom:0;border-left:1px solid #35404d55;pointer-events:none}.tree-group .tree-group::before{left:30px}.tree-group .tree-group .tree-group::before{left:46px}.tree-note{font-size:11px;color:#8493a5;padding:4px 20px}.file-icon{width:16px;height:16px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round}.icon-python,.icon-json,.icon-js{color:#edc779}.icon-r,.icon-document,.icon-web{color:#86baff}.icon-table,.icon-spreadsheet,.icon-shell{color:#69cbb1}.icon-notebook,.icon-slides,.icon-pdf{color:#ed8f66}.icon-markdown,.icon-tex,.icon-image{color:#c5a1e4}.icon-folder{color:#98c7ff;fill:#98c7ff33}.icon-medical{color:#64c3a5}.icon-config,.icon-archive{color:#adbacb}.icon-default{color:#9cabbc}
#files-destination{padding:3px 9px;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:0}#files-progress{margin:0;flex-shrink:0}#files-status{margin:0;padding:4px 9px;min-height:24px;max-height:64px;overflow:auto;font-size:11px;color:#a9bacd;border-top:1px solid #2a3644;overflow-wrap:anywhere;flex-shrink:0}
#files-splitter{height:7px;flex:0 0 7px;background:#263342;cursor:row-resize;touch-action:none;position:relative}#files-splitter::after{content:"";position:absolute;width:30px;height:1px;left:calc(50% - 15px);top:3px;background:#8194ab}#files-splitter:hover,#files-splitter:focus{background:#456384}#files-panel.files-wide #files-explorer{flex-direction:row}.files-wide #files-splitter{height:auto;width:7px;cursor:col-resize}.files-wide #files-splitter::after{height:30px;width:1px;top:calc(50% - 15px);left:3px}
#files-preview{min-height:0;min-width:0;flex:1;display:flex;flex-direction:column;overflow:hidden;background:#151b23}#files-preview-head{flex-shrink:0;padding:10px 12px;border-bottom:1px solid #2a3644;overflow-wrap:anywhere}#files-preview-head:empty{display:none}#files-preview-head strong{font-size:13px;display:block}.preview-path{font:10px ui-monospace,monospace;color:#8493a5;margin:4px 0}.preview-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:6px}.preview-actions a{font-size:11px;padding:3px 0;margin-right:4px}#files-back{display:none}#files-preview-body{flex:1;min-height:0;min-width:0;overflow:auto;padding:12px;font-size:12px;position:relative}.preview-empty{color:#8493a5;text-align:center;line-height:1.6;margin:32px 12px}.preview-note{padding:8px;color:#edc779;background:#222c38;font-size:11px;margin:0 0 10px;overflow-wrap:anywhere}.preview-media{display:block;max-width:100%;margin:auto}img.preview-media{height:auto;object-fit:contain}iframe.preview-media{width:100%;height:100%;min-height:220px;background:#303946}.source-code{display:flex;min-width:100%;width:max-content;font:12px/1.65 ui-monospace,SFMono-Regular,Consolas,monospace}.source-code pre{font:inherit;margin:0;tab-size:4}.line-numbers{color:#667b93;user-select:none;text-align:right;padding-right:14px;flex-shrink:0;border-right:1px solid #2a3644;margin-right:12px!important}.source-text{white-space:pre}.wrap .source-code{width:100%}.wrap .source-text{white-space:pre-wrap;overflow-wrap:anywhere;min-width:0}.wrap .line-numbers{display:none}.syntax-comment{color:#8493a5}.syntax-string{color:#69cbb1}.syntax-number{color:#edc779}.syntax-keyword{color:#c5a1e4}
#files-panel.files-empty #files-tree-pane{flex:1 1 auto}.files-empty #files-preview{flex:0 0 112px}.files-empty #files-preview-body{padding:8px}.files-empty .preview-empty{margin:14px 8px}
.markdown-body{line-height:1.65;overflow-wrap:anywhere}.markdown-body h1{font-size:22px;line-height:1.3;margin:0 0 16px}.markdown-body h2{font-size:18px;margin:18px 0 8px}.markdown-body h3{font-size:15px;letter-spacing:normal;text-transform:none;color:#e9eef6;margin:14px 0 7px;padding:0;border:0}.markdown-body p{margin:10px 0}.markdown-body> :first-child{margin-top:0}.markdown-body blockquote{margin:12px 0;padding:0 12px;border-left:3px solid #526378;color:#adbacb}.markdown-body ul,.markdown-body ol{padding-left:24px}.markdown-body code{color:#edc779;background:#222c38;padding:1px 3px}.markdown-body .source-code{background:#111821;padding:10px;max-width:100%;overflow:auto;width:auto}.markdown-body hr{border:0;border-top:1px solid #35404d;margin:16px 0}.table-scroll{max-width:100%;overflow:auto;max-height:100%}#files-preview table{border-collapse:separate;border-spacing:0;font-size:12px;min-width:100%}#files-preview th,#files-preview td{padding:6px 9px;text-align:left;border-bottom:1px solid #2a3644;white-space:pre-wrap;overflow-wrap:anywhere;max-width:320px}#files-preview th{position:sticky;top:0;background:#222c38;z-index:1}#files-preview tr:nth-child(even){background:#192330}.notebook-cell{border-bottom:1px solid #35404d;padding:12px 0}.notebook-cell>.caption{margin-bottom:6px}.notebook-output{white-space:pre-wrap;overflow-wrap:anywhere;color:#adbacb;font-size:12px}
#body.files-maximized #panes,#body.files-maximized #aside-grip{display:none}#body.files-maximized #files-panel{width:100%;flex:1;border:0}.files-resizing{user-select:none}.files-resizing iframe{pointer-events:none}
@media(max-width:700px){#files-panel{width:100vw;--aside-width:100vw}#files-tree-pane{flex:1;min-height:0}#files-splitter,#files-preview{display:none}#files-panel.phone-preview #files-tree-pane{display:none}#files-panel.phone-preview #files-preview{display:flex}#files-back{display:block;margin-bottom:8px}#files-panel .panel-head{padding:7px 10px;min-height:42px}#files-preview-head{padding:8px 10px}#files-preview-body{padding:10px}.tree-row{height:24px}.files-toolbar{padding:8px}.files-filter input{padding:7px}#workspace>header{max-width:100%;min-width:0}#workspace>header nav{max-width:100%;min-width:0;flex-wrap:wrap}}
.quota-section{border-top:1px solid #35404d;padding:10px 0}.quota-section>h3{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#9cabbc;margin:2px 0 4px}.route-row{border-top:1px solid #243140;padding:10px 0;min-width:0}.quota-section>h3+.route-row{border-top:0}.route-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;min-width:0}.route-title{display:flex;gap:7px;align-items:baseline;min-width:0;flex-wrap:wrap}.route-rank{font-size:12px;color:#8493a5;min-width:1.4em}.route-title code{font:600 12.5px ui-monospace,SFMono-Regular,Menlo,monospace;color:#b8d7ff;overflow-wrap:anywhere}.route-title>span:not(.route-rank):not(.route-score){font-size:12px;color:#c9d4e0}.route-score{font-size:10.5px;color:#8f9eb0;border:1px solid #33414f;border-radius:4px;padding:0 4px;white-space:nowrap}.route-percent{font-size:20px;font-weight:650;line-height:1;color:#f1f5fa;white-space:nowrap;font-variant-numeric:tabular-nums}.route-row>progress{display:block;width:100%;height:7px;margin:7px 0 5px}.route-meta{font-size:11.5px;color:#c2ccd8;overflow-wrap:anywhere}.route-reason{font-size:11.5px;color:#9cabbc;margin-top:3px;overflow-wrap:anywhere}.state-out .route-reason,.state-login .route-reason,.state-unavailable .route-reason{color:#ffb7aa}.state-unmeasured .route-reason{color:#edc779}.state-out .route-percent{color:#ffb7aa}.state-local code,.state-explicit code{color:#8ed6bc}.route-other{margin-top:4px;font-size:11px;color:#8f9eb0;line-height:1.5;overflow-wrap:anywhere}.route-other .warn{color:#edc779}.route-row details{margin-top:5px;font-size:11px}.route-row summary{color:#8f9eb0;cursor:pointer;width:max-content}.route-details{padding:2px 0 0 10px;border-left:1px solid #2a3644;margin-top:4px}.route-details .quota-window{margin:7px 0}.quota-window>span:first-child{display:block;font-size:11px;color:#a9b8c9}.quota-window progress{display:block;width:100%;height:5px;margin:3px 0}.quota-reset{display:block;color:#8493a5;font-size:10.5px}.quota-section>.caption{margin:8px 0 2px}
/* RStudio pane: the switch and link keep their width; the status text gives way. */
.pane-tools{display:flex;align-items:center;gap:10px;flex-shrink:0}.pane-tools .inline-check{margin:0;white-space:nowrap}#rstudio-status{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pane.rstudio .pane-title>span:first-child{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
@media(max-width:480px){.pane-tools .inline-check{font-size:10px}}

#files-panel .files-follow-control{margin:0 0 0 auto;white-space:nowrap;flex-shrink:0}#files-panel .panel-head-actions{margin-left:0}

#glm-dot{position:absolute;top:3px;right:3px;width:7px;height:7px;border-radius:50%;background:#8493a5;box-shadow:0 0 0 1px #11151b}
#glm-dot[data-state=up]{background:#64c3a5}
#glm-dot[data-state=loading]{background:#edc779}
#glm-dot[data-state=failed]{background:#ff6b6b}
#dsflash-dot{position:absolute;top:3px;left:3px;width:7px;height:7px;border-radius:50%;background:#8493a5;box-shadow:0 0 0 1px #11151b}
#dsflash-dot[data-state=up]{background:#64c3a5}
#dsflash-dot[data-state=loading]{background:#edc779}
#dsflash-dot[data-state=failed]{background:#ff6b6b}
#servers-panel{overflow-wrap:anywhere}
#servers-panel meter{display:block;width:100%;accent-color:#64c3a5}
#servers-panel meter::-webkit-meter-optimum-value{background:#64c3a5}
#servers-panel .tabbar{display:flex;gap:4px;margin:2px 0 8px}
#servers-panel [role=tab]{flex:1;background:none;border:none;border-bottom:2px solid #8493a5;color:inherit;font:inherit;padding:4px 2px;cursor:pointer}
#servers-panel [role=tab][aria-selected=true]{border-bottom-color:#64c3a5;font-weight:bold}

.chrome-title{height:auto;min-height:35px;align-items:center;flex-wrap:wrap;gap:5px 10px}.chrome-switch{display:flex;gap:4px}.chrome-switch button{padding:3px 6px;font-size:12px;white-space:nowrap}.chrome-title #chrome-status{min-width:0;margin:0;overflow-wrap:anywhere}.chrome-title>a{margin-left:auto;white-space:nowrap}
