html,body{height:100%;margin:0;overflow:hidden}
sys0-shell{display:flex;flex-direction:column;height:100%}
.sys0-connection{position:fixed;top:0;left:50%;z-index:2147483647;transform:translateX(-50%);padding:4px 10px;color:var(--color-surface);background:var(--color-error);border:var(--border-line);box-shadow:2px 2px 0 var(--color-shadow);font:var(--font-size-small) var(--font-ui);white-space:nowrap;pointer-events:none}
.sys0-connection[data-state=connecting]{background:var(--color-text-disabled)}
.sys0-connection[hidden]{display:none}
.desktop{position:relative;flex:1;overflow:hidden;isolation:isolate;--wm-shelf-height:0px}
/* A window a tour's stop sets aside: hidden in this tab, never closed (display/shell.ts tourAside). */
.desktop>[data-tour-aside]{display:none!important}
.desktop>.desktop-icons{margin-bottom:var(--wm-shelf-height)}
.desktop>.notification-center{position:absolute;inset:0 0 0 auto;z-index:20005}
.desktop>.toaster{position:absolute;bottom:calc(12px + var(--wm-shelf-height));right:12px;z-index:20006;pointer-events:none}
.toaster>.toast:not([data-leaving]){pointer-events:auto}
.desktop>.window{position:absolute;margin:0;min-width:200px;min-height:120px}
[data-sys0-dismissed]:not([data-window-motion=closing]){display:none!important}
/* A window leaving: closed, it is dismissed at once and only its fade is drawn after; minimized, it fades and is then
   hidden. Each a one-shot display/window-motion.ts ends on a timer, its last frame held until then; sys0.css draws it. */
.desktop>.window[data-window-motion=minimizing]{pointer-events:none}
/* A theme the person chose fades the whole screen, old to new, as one picture (display/theme-fade.ts). Only the desktop
   starts a view transition, and only for this, so its pseudo-elements are drawn here, not in sys0.css, whose rules
   are the catalogue's. A click while it fades reaches the root and does nothing. */
::view-transition-old(root),::view-transition-new(root){animation-duration:250ms;animation-timing-function:ease}
html[data-motion=high]::view-transition-old(root),html[data-motion=high]::view-transition-new(root){animation-duration:350ms}
iframe.view.unpainted,iframe.lens.unpainted{opacity:.01;pointer-events:none}
html[data-booting] sys0-shell{opacity:.01;pointer-events:none}
iframe.drawing{position:absolute;margin:0;border:0;pointer-events:none}
.window-body>iframe.kept{position:absolute;inset:0;width:100%;height:100%;margin:0;border:0;pointer-events:none;background:transparent}
.window-body>.kept-shield{position:absolute;inset:0}
.window[aria-busy=true]>.window-body>.kept-shield{cursor:progress}
.window-body>iframe.view[style*="display: none"]~iframe.kept,.window-body>iframe.view[style*="display: none"]~.kept-shield{display:none}
.window>.view-unpainted{flex:none;max-height:40%;margin:0;padding:12px;box-sizing:border-box;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;background:var(--color-surface);color:var(--color-error);font:var(--font-size-small) var(--font-ui)}
.desktop>.window:not(.system-window)>.window-body{flex:1;position:relative;min-height:0;margin:0;overflow:hidden}
.desktop>.window.physical{background:transparent!important;border:0!important;box-shadow:none!important;padding:0!important;backdrop-filter:none!important;outline:0}
.desktop>.window.physical::before,.desktop>.window.physical::after{display:none!important}
.desktop>.window.physical>.title-bar{display:none}
.desktop>.window.physical>.window-body{background:transparent!important;border:0!important;padding:0!important;margin:0!important}
.window.physical iframe.view{background:transparent}
.desktop>.window.physical>.grip{display:none!important}
.window iframe{width:100%;height:100%;border:0;display:block}
.window-body>iframe.lens{position:absolute;inset:0}
.window-body>.icon-view{height:100%;box-sizing:border-box}
.finder{display:grid;grid-template-columns:minmax(96px,round(down,22%,1px)) 1fr;gap:var(--space)}
.finder>.places{margin:0;overflow:auto;min-height:0}
.finder>.places [role=option]{display:flex;align-items:center;gap:var(--space)}
.finder>.places .icon-image{--icon-size:var(--launcher-icon-size)}
.finder>.icon-view,.finder>.drive{min-width:0;min-height:0}
.finder>.drive{display:grid;grid-template-columns:minmax(140px,round(down,45%,1px)) 1fr;gap:var(--space)}
/* After every pane's own display: the one not shown takes no place. */
.finder>[hidden]{display:none}
.finder .file-tree{min-height:0}
sys0-shell>.desktop>.system-window.share-dialog[role=dialog]{top:7%;width:min(600px,94vw);max-width:none;max-height:86%}
sys0-shell>.desktop>.system-window.share-dialog[role=dialog]>.window-body{display:flex;flex-direction:column;overflow:hidden;gap:var(--space);min-height:0}
.share-dialog .share-content{overflow:auto;min-height:0;padding:2px;display:flex;flex-direction:column;gap:var(--space);scrollbar-gutter:stable}
.share-dialog .share-content>*{flex-shrink:0}
.share-dialog .share-content>[hidden]{display:none}
.share-presence{position:absolute;left:0;top:0;z-index:5;pointer-events:none;will-change:transform}
.share-presence::before{content:"";position:absolute;left:0;top:0;border-style:solid;border-width:0 0 14px 9px;border-color:transparent transparent transparent var(--color-text);transform:skewY(30deg);transform-origin:0 0}
.share-presence>span{position:absolute;left:10px;top:14px;padding:0 4px;font:11px var(--font-ui);background:var(--color-text);color:var(--color-canvas);white-space:nowrap}
.share-dialog .window-body>footer{flex:none;margin-top:0;padding-top:var(--space-grouped);border-top:var(--border-line)}
.share-dialog [data-share-publish]{display:grid;gap:var(--space-grouped);min-width:0}
.share-dialog [data-share-publish]>h4{margin:0}
.share-dialog [data-share-publish]>.field-row{flex-wrap:wrap;gap:var(--space-grouped)}
.share-dialog [data-share-publish]>.field-row>*{margin:0}
.share-dialog .share-content>p{margin:0}
.share-dialog [data-share-band]{display:grid;gap:var(--space-grouped)}
.share-dialog [data-share-band]>.field-row{justify-content:space-between}
.share-dialog [data-share-band]>.field-row>h4{margin:0}
.share-dialog [data-share-band]>.field-row>[role=group]{display:flex;gap:var(--space-grouped)}
.share-dialog [data-share-band] textarea{display:block;width:100%;box-sizing:border-box}
.share-dialog .share-top{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,max-content);align-items:end;gap:var(--space)}
.share-dialog .share-top>.field-row-stacked{margin:0}
.share-dialog .share-top input,.share-dialog .share-top select{width:100%;box-sizing:border-box}
@container (max-width:420px){.share-dialog .share-top{grid-template-columns:minmax(0,1fr)}}
.share-dialog .share-content{container-type:inline-size}
.share-dialog [id$=share-link]{flex:1;min-width:0}
.share-dialog .share-qr{width:184px;height:184px;image-rendering:pixelated;align-self:flex-start;background:white}
.share-dialog .share-list>h4{margin:0 0 var(--space-grouped)}
.share-dialog .share-row{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:var(--space-grouped) var(--space);padding:var(--space-grouped) 0;border-top:var(--border-line)}
.share-dialog .share-row>div:first-child{flex:1 1 14em;min-width:0;display:grid;gap:3px;justify-items:start}
.share-dialog .share-row>.field-row{flex:none;flex-wrap:wrap;gap:var(--space-grouped);margin:0}
.share-dialog .share-row>.field-row>*{margin:0}
.share-dialog .share-row small{font-size:var(--font-size-small);color:var(--band-label-text)}
.share-dialog .share-row a{overflow-wrap:anywhere}
.share-dialog .share-editing{margin:0;font-weight:bold}
.share-dialog .share-note{font-size:var(--font-size-small);color:var(--band-label-text)}
.finder .file-preview{margin:0;min-height:0;overflow:auto;white-space:pre-wrap;word-break:break-word}
.window .shield{position:absolute;inset:0}
html.dragging *{cursor:inherit!important}
.hint{position:fixed;pointer-events:none}
.hint[hidden]{display:none}
.affordances{position:absolute;left:0;top:0;width:0;height:0;pointer-events:none;z-index:2147483647}
.affordances div{position:absolute}
.desktop>.affordances{z-index:auto}
.backside-window>.window-body{overflow:hidden}
.backside-window .back{display:flex}
.back{flex-direction:column;height:100%;box-sizing:border-box;isolation:isolate}
.back>.back-section{display:none}
.back [role=tablist]{padding-top:4px}
.back .use{flex:1;min-height:0;padding:0;overflow:auto}
.back .api-guide{padding:var(--space);max-width:65ch}
.back .api-guide section+section{margin-top:calc(2 * var(--space))}
.back .api-guide h2{margin:var(--space) 0 var(--space-grouped)}
.back .api-guide p{margin:var(--space-grouped) 0}
.back .api-guide pre{overflow:auto;padding:var(--space-grouped);background:var(--color-canvas);border:var(--border-line);font-family:var(--font-mono);font-size:var(--font-size-small);white-space:pre}
.back .use>iframe{height:480px;min-height:240px}
.back>[role=tabpanel]{flex:1;min-height:0;overflow:auto}
.back>[role=tabpanel]>h2:first-child,.back .definition-items>h2:first-child{margin-top:0}
.back .definition{display:flex;flex-direction:column;gap:var(--space-grouped);container:definition/inline-size}
.back .definition-head{margin:0}
.back .definition-split{flex:1;min-height:0;display:grid;grid-template-columns:minmax(12em,1fr) minmax(0,2fr);gap:var(--space)}
.back .definition-items,.back .definition-split>pre{min-height:0;overflow:auto;margin:0}
@container definition (max-width:36em){.back .definition-split{display:block;flex:none}.back .definition-split>pre{margin-top:var(--space)}}
.back .resources{container:resources/inline-size}
.back .data{flex:1;min-height:0;display:flex;flex-direction:column}
.back .spec{flex:1;min-height:0;display:flex;flex-direction:column;gap:var(--space-grouped)}
.back .spec>p{margin:0;font-size:var(--font-size-small)}
.back .spec textarea{flex:1;min-height:0;resize:none;font-family:var(--font-mono);font-size:var(--font-size-small);tab-size:2}
.back .spec>[hidden]{display:none}
.back .spec .spec-diff{flex:1;min-height:0;margin:0;overflow:auto;border:var(--border-line);background:var(--color-canvas);padding:2px 4px;font-family:var(--font-mono);font-size:var(--font-size-small);tab-size:2}
.back .spec [role=alert]{white-space:pre-wrap;color:var(--color-error)}
.back .spec [role=alert]:empty{display:none}
.back .vars{flex:1;min-height:0;overflow:auto}
.back .vars>p{margin:0 0 var(--space-grouped);font-size:var(--font-size-small)}
.back .vars [role=alert]{white-space:pre-wrap;color:var(--color-error)}
.back .vars [role=alert]:empty{display:none}
.back .schemas{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;container-type:inline-size}
.back .schemas>.schema-intro{margin:0 0 8px;font-size:var(--font-size-small)}
.backend-links{margin-block-end:var(--space)}
.backend-links [hidden]{display:none!important}
.backend-links .field-row-stacked{margin-block:var(--space)}
.backend-links .field-row{display:flex;gap:var(--space-grouped);flex-wrap:wrap}
.backend-links input{min-width:0;flex:1}
@media(pointer:coarse){.backend-links input{font-size:16px}.backend-links button{min-height:44px}}
.schema-browser{display:grid;grid-template-columns:minmax(170px,29%) minmax(0,1fr);flex:1;min-height:0;border:var(--border-line);background:var(--color-canvas);color:var(--color-text)}
.schema-sidebar{overflow:auto;border-inline-end:var(--border-line);padding:6px 0;min-width:0}
.schema-tree,.schema-tree ul{list-style:none;margin:0;padding:0}
.schema-tree ul{padding-inline-start:14px}
.schema-tree [role=treeitem]{outline:none;margin:0}
.schema-tree-row{display:flex;align-items:center;gap:5px;min-height:27px;padding:2px 8px;cursor:default;box-sizing:border-box}
.schema-tree-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.schema-tree [data-schema-id]>.schema-tree-row{padding-inline-start:15px}
.schema-tree [data-schema-node]>.schema-tree-row{font-weight:bold}
.schema-tree [aria-selected=true]>.schema-tree-row{background:var(--color-highlight);color:var(--color-highlight-text)}
.schema-tree [role=treeitem]:focus-visible>.schema-tree-row{outline:2px solid var(--color-highlight);outline-offset:-2px}
.schema-disclosure{font-size:10px;width:10px;flex:none}
.back .schema-open-link,.back .schema-reference{appearance:none;min-width:0;min-height:0;border:0;background:none;box-shadow:none;border-radius:0;color:inherit;font:inherit;padding:0;cursor:pointer;text-shadow:none}
.back .schema-open-link{width:21px;flex:none;font-size:15px;line-height:20px;opacity:.7}
.back .schema-open-link:hover{opacity:1}
.back .schema-reference{text-decoration:underline;text-underline-offset:2px}
.schema-detail{min-width:0;overflow:auto;padding:18px 20px}
.back .schema-title{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px}
.back .schema-title h2{font-size:1.3em;margin:0 0 4px;overflow-wrap:anywhere}
.back .schema-location{font-family:var(--font-mono);font-size:var(--font-size-small);overflow-wrap:anywhere;opacity:.7;margin:0}
.schema-description{line-height:1.5;margin:0 0 14px}
.schema-references{display:flex;flex-wrap:wrap;gap:6px 12px;margin-bottom:14px;font-size:var(--font-size-small)}
.schema-references>span{opacity:.7}
.back .schema-detail>[role=tablist]{padding:0;margin-bottom:12px}
.back .schema-policy-hint{font-size:var(--font-size-small);color:var(--color-text-disabled);line-height:1.5;margin:0 0 14px}
.schema-readable{display:grid;grid-template-columns:minmax(0,1fr) minmax(180px,.72fr);gap:24px;align-items:start}
.schema-reader{min-width:0;font-family:inherit;line-height:1.65;overflow-wrap:anywhere;user-select:text}
.schema-reader-row{white-space:pre-wrap;padding-inline-start:calc(var(--depth) * 1.25em);margin-top:.25em}
.schema-reader-row[data-kind=definition]{margin-top:1em}.schema-reader-row:first-child{margin-top:0}
.schema-reader-row[data-kind=attribute]::before{content:"•";color:var(--color-text-disabled);margin-inline-start:-1em;display:inline-block;width:1em}
.schema-reader-row[data-kind=comment]{font-style:italic;color:var(--color-text-disabled)}
.schema-reader [data-cls=name],.schema-reader [data-cls=concept]{color:var(--color-text);font-weight:bold;text-decoration:none}
.schema-reader [data-cls=punct]{color:var(--color-text-disabled)}
.schema-reader [data-cls=string],.schema-reader [data-cls=number],.schema-reader [data-cls=json]{color:var(--color-link)}
.schema-policies{min-width:0;border-inline-start:var(--border-line);padding-inline-start:16px}
.back .schema-policies>h3{font-size:1em;margin:0 0 6px}
.schema-fields{display:flex;flex-direction:column;gap:0}
.schema-field{padding:9px 0 0}
.schema-fields>.schema-field{border-bottom:var(--border-line);padding-bottom:9px}
.schema-field-line{display:flex;align-items:baseline;flex-wrap:wrap;gap:5px 10px;line-height:1.5}
.schema-field-line>strong{overflow-wrap:anywhere}
.schema-field-type{opacity:.65;font-size:var(--font-size-small)}
.schema-protection{font-size:var(--font-size-small);border:var(--border-line);padding:0 5px;border-radius:3px}
.schema-field-path,.schema-inherited{display:block;color:var(--color-text-disabled);font-size:var(--font-size-small);line-height:1.5;overflow-wrap:anywhere;margin-top:3px}
.schema-sensitive-control{display:flex;align-items:center;gap:6px;margin-top:7px;cursor:pointer}
.schema-sensitive-control .schema-protection{border:0;padding:0;font-size:inherit}
.back .schema-field-source{display:block;margin-top:5px;font-size:var(--font-size-small);text-align:start;overflow-wrap:anywhere}
.schema-policies .schema-field-description{display:none}
.back .schema-field p{margin:3px 0 0;font-size:var(--font-size-small);line-height:1.5;opacity:.8}
/* The format chosen is shown in the schema browser's own well: no frame of its own inside it. */
.back .schema-content{padding:0;border:0;box-shadow:none;background:none}
.back .schema-content pre{font-family:var(--font-mono);padding:0;white-space:pre-wrap;overflow-wrap:anywhere;word-break:normal;margin:0}
.schema-error{color:var(--color-error);margin:0 0 8px;white-space:pre-wrap}
.schema-error:empty{display:none}
.schema-status{font-size:var(--font-size-small);margin:0 0 8px}.schema-status:empty{display:none}
@container (max-width:560px){.schema-readable{grid-template-columns:minmax(0,1fr);gap:20px}.schema-policies{grid-row:1;max-height:18rem;overflow:auto;border-inline-start:0;border-bottom:var(--border-line);padding:0 0 12px}.schema-policies .schema-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:16px}}
@container (max-width:560px){.schema-browser{grid-template-columns:180px minmax(0,1fr)}.schema-detail{padding:12px}.back .schema-title{flex-direction:column;gap:8px}.schema-tree-row{font-size:var(--font-size-small)}}
.back .resources table,.back .access table{margin:0 0 var(--space);font-size:var(--font-size-small);width:100%}
.back caption{text-align:left;font-weight:bold;padding:0 0 var(--space-grouped)}
.back tbody th{text-align:left;white-space:nowrap;vertical-align:top;width:1%;padding-right:2ch}
.back td{word-break:break-word;font-variant-numeric:tabular-nums}
.back td.num,.back th.num{text-align:right;white-space:nowrap}
.back .none{margin:0 0 var(--space);font-size:var(--font-size-small)}
.back [role=toolbar]{display:flex;flex-wrap:wrap;gap:var(--space-grouped);margin:0 0 var(--space-grouped)}
.back .resources>p,.back .access>p{font-size:var(--font-size-small);margin:0 0 var(--space-grouped)}
/* The tab panel is the frame: the band's token field stands in it as the Share dialog's does, with no frame of its own. */
.back .access>.band{margin:0 0 var(--space)}
.back .access>.band-language{padding:0;background:none;border:0}
.back .schemas>.schema-browser{border:0}
.back .parts{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:baseline;gap:var(--space-grouped) var(--space);margin:0 0 var(--space)}
.back .parts .cost-now{grid-column:1/-1;margin:0;font-size:1em;font-weight:bold}
.back .part{display:contents}
.back .part-label{font-weight:bold}
.back .part-sub{font-size:var(--font-size-small);color:var(--color-text-disabled)}
.back .part [role=group]{display:flex;flex-wrap:wrap;gap:var(--space-grouped)}
.back .part button{min-width:0}
.back .part button[aria-busy=true]{cursor:progress}
.back .part .here{color:inherit}
.back .part-using{font-size:var(--font-size-small);white-space:nowrap;text-align:right}
.back .part output{grid-column:2/-1;font-size:var(--font-size-small)}
.back .part output:empty{display:none}
@container resources (max-width:34em){.back .parts{grid-template-columns:auto minmax(0,1fr)}.back .part-using{grid-column:2;white-space:normal;text-align:start}}
.back .part output[aria-invalid=true]{color:var(--color-error)}
.back details.where{margin:0 0 var(--space);font-size:var(--font-size-small)}
.back details.where>summary{cursor:pointer;margin:0 0 var(--space-grouped)}
.back .charts{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(220px,100%),1fr));gap:var(--space);margin:0 0 var(--space)}
.back .chart{margin:0;min-width:0}
.back .chart figcaption{display:flex;justify-content:space-between;gap:1ch;font-size:var(--font-size-small)}
.back .chart .plot{position:relative;height:64px;border-bottom:var(--border-line)}
.back .chart .plot.empty{display:flex;align-items:center;justify-content:center;font-size:var(--font-size-small);color:var(--color-text-disabled)}
.back .chart svg{display:block;width:100%;height:100%}
.back .chart rect{fill:var(--color-highlight)}
.back .chart rect[data-on]{fill:var(--color-text)}
.back .chart [role=tooltip]{position:absolute;bottom:100%;white-space:nowrap;pointer-events:none;z-index:1;font-size:var(--font-size-small)}
.back .chart .axis{display:flex;justify-content:space-between;gap:1ch;font-size:var(--font-size-small);color:var(--color-text-disabled);white-space:nowrap}
.back .chart .axis span{overflow:hidden;text-overflow:ellipsis}
.back .log{flex:1;min-height:0;overflow:auto}
.back .log p{margin:0 0 var(--space-grouped)}
.back .log ol{margin:0;padding:0;list-style:none;font-family:var(--font-mono);font-size:var(--font-size-small)}
.back .log [aria-invalid=true]{color:var(--color-error)}
.back .log li{white-space:pre-wrap;word-break:break-word;padding-left:2ch;text-indent:-2ch}
.back h2{font-size:1em;margin:var(--space) 0 var(--space-grouped)}
.back [role=listbox]{margin:0 0 var(--space)}
.back code{font-size:var(--font-size-small)}
.back pre{white-space:pre-wrap;word-break:break-all;font-size:var(--font-size-small)}
.back .evidence>p{margin:0 0 var(--space-grouped)}
.back .canon-evidence{display:flex;flex-direction:column;gap:var(--space);margin-top:var(--space)}
.back .canon-evidence dl{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:var(--space-grouped) var(--space);margin:0}
.back .canon-evidence dd{margin:0;overflow-wrap:anywhere}
.back .canon-evidence h3,.back .canon-evidence h4{margin:0 0 var(--space-grouped)}
.back .canon-evidence p{margin:0 0 var(--space-grouped)}
.back .lab>p{margin:0 0 var(--space-grouped)}
/* A room's talk (see Rooms): its chat docked at the window's side — a tab on the edge that is always there, and, open,
   the thread's view in a window beside it, as tall as the window; a chat docked too stands beyond the talk. */
.desktop>.window>.talk-tab{position:absolute;left:calc(100% + var(--window-border-width));top:calc(var(--title-bar-height) + 12px);writing-mode:vertical-rl;margin:0;padding:var(--space) 3px;min-width:0;min-height:0;line-height:1;white-space:nowrap;border-start-start-radius:0;border-end-start-radius:0}
.desktop>.window>.talk-tab[hidden]{display:none}
.desktop>.window>.talk-dock{position:absolute;left:calc(100% + var(--window-border-width) + 4px);top:calc(-1 * var(--window-border-width));height:calc(100% + 2 * var(--window-border-width));width:var(--talk-w);box-sizing:border-box;margin:0;display:flex;flex-direction:column}
.desktop>.window>.talk-dock[hidden]{display:none}
.talk-dock>.talk-navigation{display:none}
.talk-dock>.window-body{flex:1;min-height:0;margin:0;padding:0;overflow:hidden;display:flex}
.talk-dock>.window-body>iframe{flex:1;min-height:0;width:100%;border:0;display:block;background:var(--color-canvas)}
.talk-dock>.window-edges>[data-edge=e],.talk-dock>.window-edges>[data-edge=ne],.talk-dock>.window-edges>[data-edge=se]{cursor:ew-resize}
.desktop>.window.talking>.chat-dock{left:calc(100% + var(--window-border-width) + 8px + var(--talk-w))}
.desktop>.window.talking>.file-dock{left:calc(100% + var(--window-border-width) + 12px + var(--talk-w) + var(--chat-w))}
.desktop>.window>.agent0-dock{position:absolute;left:calc(100% + var(--window-border-width) + 4px + var(--agent0-offset));top:calc(-1 * var(--window-border-width));width:520px;box-sizing:border-box;margin:0;display:flex;flex-direction:column}
.agent0-dock>.window-body{display:flex;flex:1;min-height:0;margin:0;overflow:hidden}
/* Dev mode: three adjacent columns with independent heights. */
.desktop>.window>.chat-dock{position:absolute;left:calc(100% + var(--window-border-width) + 4px);top:calc(-1 * var(--window-border-width));height:var(--chat-h);width:var(--chat-w);box-sizing:border-box;margin:0;display:flex;flex-direction:column}
.chat-dock>.window-body{flex:1;position:relative;min-height:0;margin:0;overflow:hidden;display:grid;grid-template-columns:minmax(196px,44%) minmax(0,1fr)}
/* A dock's top and left belong to its window: its corners there resize only the way their edge does. */
.chat-dock>.window-edges>[data-edge=ne],.file-dock>.window-edges>[data-edge=ne]{cursor:ew-resize}
.chat-dock>.window-edges>[data-edge=sw],.file-dock>.window-edges>[data-edge=sw]{cursor:ns-resize}
.chat-dock>.window-edges>[data-edge=sw]{left:0}
/* The chat's last row keeps clear of the grip, and its default button's ring with it — where a theme has a grip at all. */
/* The dock's bar, one row: the window's thread, which opens the threads under it; New thread; Files, while its window
   is closed; and the menu of what is rarely wanted. */
.chat-dock .dock-bar{flex:none;position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-grouped);padding:var(--space-grouped);border-block-end:var(--border-line)}
.dock-bar>*{margin:0}
.dock-bar>button,.dock-menu>button{flex:none;min-width:0}
.dock-bar>.dock-thread-current{flex:1 1 12ch;display:flex;align-items:center;gap:6px;text-align:start}
.dock-thread-current[hidden],.dock-bar>button[hidden]{display:none}
.dock-thread-current>.chat-status{flex:none}
.dock-thread-title{flex:1 1 auto;min-width:4ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dock-thread-others{flex:0 100 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--font-size-small);font-variant-numeric:tabular-nums;opacity:.7}
.dock-thread-others>.chat-status{display:inline-block;margin-inline-end:4px;vertical-align:baseline}
.dock-thread-others[hidden]{display:none}
.dock-thread-current::after{content:"";flex:none;width:1em;height:1em;background:currentColor;opacity:.6;-webkit-mask:var(--icon-chat-open) center/contain no-repeat;mask:var(--icon-chat-open) center/contain no-repeat;transform:rotate(90deg)}
.dock-thread-current[aria-expanded=true]::after{transform:rotate(-90deg)}
.dock-bar-title{flex:1;min-width:0;font-weight:bold;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dock-bar-title[hidden]{display:none}
.dock-tools{padding-inline:8px;line-height:1}
.dock-menu{flex:none;position:relative;display:inline-flex}
.dock-menu>[role=menu]{left:auto;right:0}
.dock-menu-label{padding:var(--menu-item-padding);font-size:var(--font-size-small);color:var(--color-text-disabled)}
.dock-threads-popover{position:absolute;z-index:20;top:100%;left:var(--space-grouped);right:var(--space-grouped);max-height:min(420px,calc(var(--chat-h,100dvh) - 7 * var(--title-bar-height)));display:flex;flex-direction:column;color:var(--color-text);background:var(--color-surface);border:var(--menu-border);box-shadow:var(--menu-bevel)}
.dock-threads-popover[hidden]{display:none}
.chat-dock[data-inspection=expanded] .dock-bar{display:none}
/* While T3 Code is the editor the draft stands over its window, in the dock's own body. */
.chat-dock>.window-body>.chat-draft{padding:var(--space-grouped);border-block-end:var(--border-line)}
.chat-dock .chat[hidden]{display:none}
.dock-t3{flex:1;min-height:0;display:flex;flex-direction:column}
.dock-t3[hidden]{display:none}
.dock-t3-said{flex:none;margin:0;padding:2px var(--space-grouped);font-size:var(--font-size-small);color:var(--color-text-disabled);white-space:pre-wrap;max-height:4lh;overflow:auto}
.dock-t3-said[data-error]{color:var(--color-error)}
.dock-t3>iframe{flex:1;min-height:0;width:100%;border:0;display:block}
.chat-dock .chat-toolbar{padding-right:min(var(--grip-size) * 1000,calc(var(--grip-size) + var(--grip-offset) - var(--window-border-width) + var(--space-grouped)))}
.desktop>.window>.file-dock{position:absolute;left:calc(100% + var(--window-border-width) + 8px + var(--chat-w));top:calc(-1 * var(--window-border-width));width:var(--files-w);height:var(--files-h);box-sizing:border-box;margin:0;display:flex;flex-direction:column}
/* The Files window closes, and the dock's Files opens it again (`files-closed` on the window, from chat/i0's state). */
.chat-dock .files-open{display:none}
.desktop>.window.files-closed>.file-dock{display:none}
.desktop>.window.files-closed>.chat-dock .files-open{display:inline-block}
.file-dock>.window-body{flex:1;min-height:0;display:flex;flex-direction:column;gap:4px;margin:0;padding-inline:var(--space-grouped);overflow:hidden}
/* The Files window's tabs reach into the panel under them by the theme's overlap, the body's gap included. */
.file-dock>.window-body>[role=tablist]{flex:none;margin-bottom:calc(var(--tablist-overlap) - 4px)}
.file-dock-panel{flex:1;min-height:0;display:flex;flex-direction:column;gap:4px}
.file-dock-panel[hidden],.file-dock-panel>[hidden]{display:none}
.file-dock-none{overflow:auto;padding:0 4px}
.file-dock-none [role=alert]:empty{display:none}
.file-dock-said{margin:0;padding:0 4px;font-size:var(--font-size-small);overflow-wrap:anywhere}
.file-dock-text{flex:1;min-height:0;margin:0;overflow:auto;background:var(--color-canvas);padding:4px 4px 4px 8px;font-family:var(--font-mono);font-size:var(--font-size-small);white-space:pre;tab-size:2}
/* A line added is tinted, never drawn as a selection; one removed is struck through, in the error colour's tint. */
.file-dock-text :is(ins,del){margin-inline-start:-8px;padding-inline-start:8px}
.file-dock-text ins{display:block;min-width:fit-content;text-decoration:none;background:color-mix(in oklch,var(--ai-status-done) 16%,transparent);box-shadow:inset 2px 0 var(--ai-status-done)}
.file-dock-text.prose{white-space:pre-wrap;overflow-wrap:anywhere}
.file-dock-text.prose ins,.file-dock-text.prose del{min-width:0}
.file-dock-text del{display:block;min-width:fit-content;text-decoration:line-through;color:var(--color-text-disabled);background:color-mix(in oklch,var(--color-error) 10%,transparent);box-shadow:inset 2px 0 var(--color-error)}
.file-dock-doc{flex:1;min-height:0;overflow:auto;background:var(--color-canvas);padding:6px 8px}
.file-dock-browser{flex:1;min-height:0;display:flex}
.file-dock-browser[hidden]{display:none}
.file-dock-spec-row{flex:none;display:flex;align-items:center;gap:8px;min-height:0}
.file-dock-spec-row[hidden]{display:none}
.file-dock-spec-row>.file-dock-said{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--color-text-disabled)}
.file-dock-panel>button[aria-pressed],.file-dock-spec-row>button[aria-pressed]{align-self:flex-start;flex:none}
.spec-browser{flex:1;min-height:0;display:grid;grid-template-columns:minmax(130px,24%) minmax(0,1fr);gap:12px}
.spec-outline{overflow:auto;min-width:0;font-size:var(--font-size-small);border-inline-end:var(--border-line);padding-inline-end:6px}
.spec-outline ul{list-style:none;margin:0;padding:0}
.spec-outline button{all:unset;box-sizing:border-box;display:block;width:100%;padding:3px 6px 3px calc(6px + var(--depth) * 12px);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--color-text)}
.spec-outline button:hover{background:var(--color-highlight)}
.spec-outline button[aria-current=true]{background:var(--color-highlight);color:var(--color-highlight-text)}
.spec-outline button:focus-visible{outline:2px solid var(--color-link);outline-offset:-2px}
.spec-outline button[data-changed]::after{content:" \2022";color:var(--color-link)}
@container (max-width:460px){.spec-browser{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}.spec-outline{max-height:9em;border:0;border-block-end:var(--border-line);padding:0 0 4px}}
.spec-doc{position:relative;min-width:0;overflow:auto;line-height:1.55;user-select:text}
.spec-part{margin:0 0 16px;margin-inline-start:calc(var(--depth) * 14px)}
.spec-part+.spec-part{border-top:var(--border-line);padding-top:10px}
.spec-part>header{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;margin-bottom:2px}
.spec-part>header h3{margin:0;font-size:1.05em}
.spec-part>header>code{font-size:var(--font-size-small);color:var(--color-text-disabled)}
.spec-part>header>.field-row{margin-inline-start:auto;gap:4px;flex-wrap:wrap}
.spec-part[data-changed]>header h3::after{content:" \2022";color:var(--color-link)}
.spec-part[data-again]>.r-comment{margin:0}
/* Voice spec mode: the whole screen is the app's spec, the talk with its agent along the bottom (display/voice-spec.ts). */
.voice-spec{position:fixed;inset:0;z-index:100000;display:flex;flex-direction:column;gap:var(--space);padding:var(--space) calc(var(--space) * 2);box-sizing:border-box;background:var(--color-canvas);color:var(--color-text);font-family:var(--font-ui)}
.voice-spec-bar{display:flex;align-items:center;gap:var(--space);flex:none;padding-block-end:var(--space);border-block-end:var(--border-line)}
.voice-spec-bar>h1{margin:0;margin-inline-end:auto;font-size:1.3em}
.voice-spec-bar>label{display:flex;align-items:center;gap:var(--space-grouped);font-size:var(--font-size-small)}
.voice-spec-hearing{font-size:var(--font-size-small);color:var(--color-text-disabled);max-width:40ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.voice-spec-mic[aria-pressed=true]::before{content:"\25CF  ";color:var(--color-error)}
.voice-spec-doc{flex:1;min-height:0;display:flex;container-type:inline-size;font-size:1.15em}
.voice-spec-doc>.spec-browser{width:100%;max-width:1100px;margin-inline:auto;grid-template-columns:minmax(160px,22%) minmax(0,1fr)}
.voice-spec .spec-part.voice-spec-new{outline:2px solid var(--color-link);outline-offset:6px}
.voice-spec-none{margin:auto;color:var(--color-text-disabled)}
.voice-spec-talk{flex:none;display:grid;gap:4px;max-width:1100px;width:100%;margin-inline:auto;padding-block-start:var(--space);border-block-start:var(--border-line);min-height:4.5em}
.voice-spec-talk>p{margin:0}
.voice-spec-you{color:var(--color-text-disabled)}
.voice-spec-you:not(:empty)::before{content:"\201C"}.voice-spec-you:not(:empty)::after{content:"\201D"}
.voice-spec-partial{font-style:italic;color:var(--color-text-disabled)}
.voice-spec-agent{font-size:1.1em}
.voice-spec-agent[data-error]{color:var(--color-error)}
.spec-facet[data-facet=looks]{margin-top:8px;padding-inline-start:10px;border-inline-start:3px solid var(--color-highlight)}
.spec-facet[data-changed]{background:var(--color-canvas)}
.spec-editor{display:flex;flex-direction:column;gap:var(--space-grouped);min-height:14em}
.spec-editor .plain-field{min-height:22em}
.reader{line-height:1.65;white-space:normal;overflow-wrap:anywhere}
.r-row{padding-inline-start:calc(var(--depth) * 1.25rem)}
.r-definition{margin-top:.9rem}
.r-row:first-child{margin-top:0}
.r-name,.r-ref{font-weight:600}
.r-comment{margin-top:.9rem;font-style:italic;color:var(--color-text-disabled)}
.r-attribute{padding-inline-start:calc(var(--depth) * 1.25rem + 1rem);text-indent:-1rem;margin-top:.2rem}
.r-bullet{display:inline-block;width:1rem;text-indent:0;color:var(--color-text-disabled)}
.r-sep{color:var(--color-text-disabled)}
.r-directive{margin-top:.9rem;font-size:var(--font-size-small);color:var(--color-text-disabled)}
.r-directive:first-child{margin-top:0}
mark.slot{color:inherit;background:none;border-radius:1px;box-shadow:inset 0 -1.5px 0 hsl(var(--h) 55% 52%);transition:background-color .12s ease-out,box-shadow .12s ease-out}
.reader mark.slot{box-shadow:inset 0 -1px 0 hsl(var(--h) 55% 52% / .45);cursor:pointer}
mark.slot.active,mark.slot[aria-expanded=true]{background:hsl(var(--h) 60% 90%);box-shadow:inset 0 -2px 0 hsl(var(--h) 60% 44%);color:hsl(var(--h) 55% 30%)}
mark.slot:focus-visible{outline:2px solid hsl(var(--h) 60% 44%);outline-offset:1px}
mark.slot[data-missing]{color:var(--color-error);box-shadow:inset 0 -1.5px 0 var(--color-error)}
.slot-at{display:inline}
.slot-swatch{display:inline-block;width:.75em;height:.75em;margin-inline-end:4px;border:var(--border-line);border-radius:2px;vertical-align:-.05em}
.slot-edit{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-grouped);margin:var(--space-grouped) 0;padding:var(--space-grouped);text-indent:0;border:var(--border-line);background:var(--color-canvas);font-size:var(--font-size-small)}
.slot-edit>mark.slot{font-family:var(--font-mono)}
.slot-edit>small{flex-basis:100%;color:var(--color-text-disabled)}
.plain-field{position:relative;flex:1;min-height:12em;border:var(--border-line);background:var(--color-canvas)}
.plain-field:focus-within{outline:2px solid var(--color-highlight);outline-offset:-1px}
.plain-field>.plain-backdrop,.plain-field>textarea.plain-input{position:absolute;inset:0;width:100%;height:100%;min-height:0;margin:0;padding:6px 8px;box-sizing:border-box;border:0;border-radius:0;box-shadow:none;font-family:var(--font-mono);font-size:var(--font-size-small);line-height:1.6;letter-spacing:0;tab-size:2;white-space:pre;overflow:auto}
.plain-field>.plain-backdrop{overflow:hidden;color:var(--color-text);pointer-events:none}
.plain-field>textarea.plain-input{background:transparent;color:transparent;caret-color:var(--color-text);resize:none;outline:none}
.plain-backdrop .t-meta,.plain-backdrop .t-header,.plain-backdrop .t-bullet{color:var(--color-text-disabled)}
.plain-backdrop .t-comment{color:var(--color-text-disabled);font-style:italic}
.plain-backdrop .t-concept{color:var(--syntax-type)}
.var-control{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--space-grouped)}
.var-control>[role=alert]{flex-basis:100%;margin:0;white-space:pre-wrap;color:var(--color-error)}
.var-control>[role=alert]:empty{display:none}
.var-input{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--space-grouped);min-width:0}
.var-input input[type=range]{width:10em}
.var-input input[type=number]{width:7em}
.var-input input[type=text]{width:16ch;font-family:var(--font-mono)}
table.registry{width:100%;border-collapse:collapse;font-size:var(--font-size-small)}
table.registry th,table.registry td{padding:4px 8px;border-bottom:var(--border-line);text-align:start;vertical-align:middle}
table.registry thead th{font-weight:normal;color:var(--color-text-disabled)}
table.registry tbody th{font-family:var(--font-mono);font-weight:normal;white-space:nowrap}
table.registry tbody th mark.slot{box-shadow:none}
table.registry tbody th mark.slot::before{content:"";display:inline-block;width:.6em;height:.6em;margin-inline-end:6px;border-radius:1px;background:hsl(var(--h) 55% 52%)}
table.registry tr:has(mark.slot.active){background:color-mix(in srgb, var(--color-highlight) 12%, transparent)}
.registry-used{font-family:var(--font-mono);color:var(--color-text-disabled);overflow-wrap:anywhere}
.registry-value{display:flex;align-items:center;gap:6px;min-width:0}
.registry-value>.var-control{flex:1;min-width:0}
.registry-swatch{flex:none;box-sizing:border-box;width:1.4em;height:1.4em;border:var(--well-border);border-radius:2px}
.registry-swatch[hidden]{display:none}
/* In the Files window a var is two lines: its name and its control, then where it is read, on one line cut short. */
/* What a picked object is and where it comes from: its name, then a row for each source, then the evidence, closed. */
.selection-explanation{display:flex;flex-direction:column;gap:var(--space-grouped);font-size:var(--font-size-small)}
.selection-explanation>*{flex:none;margin:0}
.selection-head{display:flex;align-items:center;gap:var(--space-grouped)}
.selection-head>strong{flex:1;min-width:0;font-size:var(--font-size);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.selection-close{flex:none;min-width:0;padding:0 6px;border:none;border-radius:0;background:none;box-shadow:none;font-size:var(--font-size);line-height:1;color:var(--color-text-disabled)}
.selection-close:hover{color:var(--color-text);background:none}
.selection-sub,.selection-note{color:var(--color-text-disabled);text-wrap:pretty}
.selection-sub{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.selection-jumps{list-style:none;padding:0;display:flex;flex-direction:column}
.selection-jumps button{display:flex;align-items:baseline;gap:var(--space);width:100%;min-width:0;margin:0;padding:2px 4px;border:none;border-radius:0;background:none;box-shadow:none;font:inherit;text-align:start;color:var(--color-link);text-shadow:none}
.selection-jumps button>span:first-child{flex:none}
.selection-jumps button:hover{background:color-mix(in srgb,var(--color-highlight) 14%,transparent)}
.selection-path{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;direction:rtl;text-align:left;font-family:var(--font-mono);color:var(--color-text-disabled)}
.selection-explanation details>summary{cursor:default}
.selection-explanation details>:not(summary){margin:var(--space-grouped) 0 0}
.selection-explanation details pre{max-height:14lh;overflow:auto;padding:4px;background:var(--color-canvas);border:var(--border-line);font-family:var(--font-mono)}
.file-dock-design table.registry{display:block}
.file-dock-design table.registry tbody{display:grid;grid-template-columns:fit-content(40%) minmax(8ch,1fr);column-gap:var(--space)}
.file-dock-design table.registry thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.file-dock-design table.registry tr{display:grid;grid-template-columns:subgrid;grid-column:1/-1;align-items:center;padding:6px 4px;border-bottom:var(--border-line)}
/* A slot's own hue ties it to where a spec names it; no spec is beside it here. */
.file-dock-design table.registry tbody th mark.slot::before{display:none}
.file-dock-design table.registry th,.file-dock-design table.registry td{padding:0;border:0;min-width:0}
.file-dock-design table.registry tbody tr{background:none}
.file-dock-design table.registry tbody th{overflow:hidden;text-overflow:ellipsis}
.file-dock-design .registry-used{grid-column:1/-1;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;overflow-wrap:normal}
.file-dock-design .var-control input{width:100%;box-sizing:border-box}
/* A dialog opens centred by its margins, never a transform, so its frame lands on whole pixels. */
sys0-shell>.desktop>.system-window[role=dialog]{position:absolute;left:0;right:0;margin:0 auto;width:fit-content;top:30%;min-width:260px;max-width:420px}
sys0-shell>.desktop>.system-window.settings[role=dialog]{width:min(680px,calc(100vw - 24px));max-width:calc(100vw - 24px);top:12%;max-height:80%}
sys0-shell>.desktop>.system-window.resources-window[role=dialog]{top:5%;width:min(560px,94vw);max-width:none;max-height:86%}
sys0-shell>.desktop>.system-window.resources-window[role=dialog]>.window-body{display:flex;flex-direction:column;overflow:hidden;gap:var(--space);min-height:0}
.resources-window .window-body>footer{flex:none;margin-top:0}
.resources-window .resources-pane{overflow:auto;min-height:0;display:grid;align-content:start;gap:var(--space);padding:2px}
.resources-window .resources-pane>p{margin:0}
.resources-window .resources-pane fieldset{display:grid;gap:var(--space-grouped);min-width:0;margin:0}
.resources-window .resources-pane fieldset>*{margin:0}
.resources-window .resources-pane fieldset>div:empty,.resources-window .resources-pane fieldset>pre:empty{display:none}
.resources-window .resources-pane .field-row{flex-wrap:wrap;gap:var(--space-grouped)}
.resources-window .resources-pane .field-row>*{margin:0}
.resources-window .resources-pane .field-row>input[type=text],.resources-window .resources-pane .field-row>select{flex:1 1 12em;min-width:0}
.resources-window .resources-pane .field-row-stacked>select,.resources-window .resources-pane textarea{width:100%;box-sizing:border-box}
.resources-window .resources-pane pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:14rem;overflow:auto}
.resources-window .resources-pane img{display:block;max-width:100%;max-height:240px;object-fit:contain}
sys0-shell>.desktop>.system-window.shortcuts[role=dialog]{box-sizing:border-box;width:min(760px,calc(100vw - 24px))}
sys0-shell>.desktop>.system-window.about-sys0[role=dialog]{width:var(--about-width)}
sys0-shell>.desktop>.system-window[role=dialog] p{white-space:pre-wrap;margin:0}
sys0-shell>.desktop>.system-window[role=dialog]{display:flex;flex-direction:column;max-height:round(down,calc(70% - 8px - var(--wm-shelf-height)),1px)}
sys0-shell>.desktop>.system-window[role=dialog]>.title-bar{cursor:default;-webkit-user-select:none;user-select:none}
sys0-shell>.desktop>.system-window[role=dialog]>.window-body{overflow:auto;min-height:0;flex:1}
sys0-shell>.desktop>.system-window.settings[role=dialog]>.window-body{flex-basis:auto}
sys0-shell>.desktop>.system-window[role=dialog].placed{right:auto;margin:0;max-width:none;max-height:none;min-width:0}
sys0-shell>.desktop>.system-window.bug-report[role=dialog]{top:3%;width:min(1040px,96vw);height:calc(94% - var(--wm-shelf-height));max-width:none;max-height:calc(94% - var(--wm-shelf-height))}
sys0-shell>.desktop>.system-window.bug-report>.window-body{display:flex;flex-direction:column;gap:8px}
sys0-shell>.desktop>.system-window.bug-report .bug-content{display:grid;grid-template-columns:minmax(180px,1fr) minmax(0,2fr);gap:16px;flex:1;min-height:0}
sys0-shell>.desktop>.system-window.bug-report .bug-description{display:flex;flex-direction:column;min-height:0}
sys0-shell>.desktop>.system-window.bug-report textarea{display:block;box-sizing:border-box;width:100%;flex:1;min-height:60px;margin:4px 0 0;resize:none}
sys0-shell>.desktop>.system-window.bug-report footer{flex:none;margin-top:auto}
sys0-shell>.desktop>.system-window.bug-report .bug-evidence{display:flex;flex-direction:column;gap:8px;min-height:0;min-width:0}
sys0-shell>.desktop>.system-window.bug-report .bug-shot{display:flex;align-items:center;justify-content:center;flex:1 1 0;min-height:72px;overflow:hidden}
sys0-shell>.desktop>.system-window.bug-report .bug-shot>canvas{display:block;flex:none;touch-action:none;cursor:crosshair}
sys0-shell>.desktop>.system-window.bug-report .bug-shot-tools{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
@media(max-width:640px){sys0-shell>.desktop>.system-window.bug-report .bug-content{grid-template-columns:minmax(0,1fr);grid-template-rows:100px minmax(0,1fr);gap:8px}}
sys0-shell>.desktop>.system-window.bugs-list{top:6%;width:min(960px,96vw);max-width:none;max-height:84vh}
/* The phone presentation (display/shell.ts `PHONE`: the same query): drawn only, never written to the desktop. One window
   fills the desktop, its docks and the dialogs over it; the others stay mounted, hidden and inert. */
@media (max-width:600px){
.back>.back-section{display:flex;align-items:center;gap:var(--space-grouped);flex:none;min-height:44px;padding:var(--space-grouped) var(--space)}
.back>.back-section>select{flex:1;min-width:0}
.back>[role=tablist]{display:none}
html{-webkit-tap-highlight-color:transparent;overscroll-behavior:none}
sys0-shell{height:100dvh;box-sizing:border-box;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}
.desktop>.window:not(.system-window):not(.phone-front){visibility:hidden;pointer-events:none}
.desktop>.window.physical>.title-bar{display:none}
.desktop>.window.phone-front{transition:none!important;opacity:1!important;outline:0!important}
.desktop>.window.phone-front:not(.phone-scaled){left:0!important;top:0!important;right:0!important;bottom:var(--wm-shelf-height)!important;width:auto!important;height:auto!important;max-width:none;transform:none!important}
.desktop>.window.phone-front.wm-shaded>.window-body{display:block!important}
/* A window with a shape of its own is scaled down to fit and centred (`fitPhone`), its docks drawn at the desktop's size. */
.desktop>.window.phone-front.phone-scaled{left:var(--phone-x)!important;top:var(--phone-y)!important;transform:scale(var(--phone-scale))!important;transform-origin:0 0}
.desktop .window .window-edges,.desktop .window>.grip,.desktop>.window.physical>.grip,.wm-quick,.wm-divider,.wm-snap-preview{display:none!important}
.desktop>.window>.agent0-dock,.desktop>.window>.chat-dock,.desktop>.window>.file-dock,.desktop>.window>.talk-dock{inset:calc(-1 * var(--window-border-width));width:auto;height:auto}
.desktop>.window>.talk-tab{left:auto;right:8px;top:calc(var(--title-bar-height) + 8px);writing-mode:horizontal-tb;padding:var(--space-grouped) var(--space);border-radius:inherit}
.talk-dock>.talk-navigation{display:flex;flex-shrink:0;padding:var(--space-grouped) var(--space);border-bottom:var(--border-line)}
.talk-dock>.talk-navigation>button{min-width:44px;min-height:44px;touch-action:manipulation}
.desktop>.window.phone-scaled>:is(.agent0-dock,.chat-dock,.file-dock,.talk-dock){inset:auto;left:calc(var(--phone-x) / var(--phone-scale) * -1);top:calc(var(--phone-y) / var(--phone-scale) * -1);width:var(--phone-w);max-width:none;height:var(--phone-h);transform:scale(calc(1 / var(--phone-scale)));transform-origin:0 0}
.desktop>.window>.agent0-dock{height:auto!important;z-index:3}
.desktop>.window.phone-scaled>.agent0-dock{height:var(--phone-h)!important}
.file-dock>.window-body>[role=tablist],.chat-dock .chat-toolbar{flex-wrap:wrap}
/* The chat shows when it is turned on; Files takes its place when asked for (`phone-files` on the window, a class only) and gives it back by its close. */
.desktop>.window>.file-dock,.desktop>.window.phone-files>.chat-dock{display:none}
.desktop>.window.phone-files>.file-dock{display:flex}
.chat-dock .files-open{display:inline-block}
.file-dock,.file-dock>.window-body,.file-dock-panel,.file-dock .component-scope{min-width:0;max-width:100%;box-sizing:border-box}
.file-dock .component-scope-header{flex-wrap:wrap}
.file-dock .component-scope-header>.component-scope-toggle{flex:1 1 12ch}
.file-dock-list{min-width:0}
sys0-shell>.desktop>.system-window{left:var(--space)!important;right:var(--space)!important;top:var(--space)!important;width:auto!important;height:auto!important;min-width:0!important;max-width:none!important;max-height:calc(100% - 2 * var(--space) - var(--wm-shelf-height))!important;margin:0!important}
sys0-shell>.desktop>.system-window.bug-report[role=dialog]{height:calc(100% - 2 * var(--space) - var(--wm-shelf-height))!important}
sys0-shell>.desktop>.system-window[role=dialog]>.window-body>footer{position:sticky;bottom:0;background:var(--color-surface)}
/* The phone menu bar has a full-width title row and a separate utility row. Both can scroll sideways; utilities
   stay at the screen's left edge when titles scroll, so no icon can cover an app's menu. */
[role=menubar]{box-sizing:border-box;display:grid;grid-template-columns:repeat(var(--phone-menu-columns),max-content);grid-template-rows:repeat(2,minmax(44px,auto));min-width:0;max-width:100%;padding:0!important;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scrollbar-width:none;-webkit-backdrop-filter:none;backdrop-filter:none}
[role=menubar]::-webkit-scrollbar{display:none}
[role=menubar]>[role=menuitem]{grid-row:1;display:flex;align-items:center;justify-content:center}
.desktop>.notification-center{width:100%}
.desktop>.toaster{left:0;right:0;bottom:var(--wm-shelf-height);width:100%;padding:8px 8px max(8px,env(safe-area-inset-bottom));box-sizing:border-box}
.notification-center button,.toast>button{min-height:44px;min-width:44px}
[role=menubar] .menubar-end{grid-row:2;grid-column:1/-1;position:sticky;left:0;right:auto;justify-self:start;box-sizing:border-box;width:calc(100vw - env(safe-area-inset-left) - env(safe-area-inset-right));margin:0;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scrollbar-width:none;background:var(--color-surface)}
[role=menubar] .menubar-end::-webkit-scrollbar{display:none}
[role=menubar] .menubar-end::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--menubar-background)}
[role=menubar] .menubar-end>button{flex:none}
[role=menubar] .menubar-end>:is(.menubar-chat,.menubar-notifications,.menubar-launcher){order:-1}
[role=menubar] .menubar-end>.menubar-clock{display:none}
[role=menubar] .menubar-end>:is(.menubar-status,.menubar-music){max-width:12ch}
[role=menubar] [role=menuitem]>[role=menu]{position:fixed;top:var(--phone-menu-top);left:0;right:0;max-width:none;max-height:calc(100dvh - var(--phone-menu-top) - env(safe-area-inset-bottom));overflow-y:auto;overscroll-behavior:contain}
[role=menubar] [role=menu] [role=menu]{position:static}
[role=menubar] .menu-keys{display:none}
[role=menubar] [role=menuitem][aria-haspopup=menu]{flex-wrap:wrap}
[role=menubar] [role=menuitem]>[role=menu]>[role=menuitem][aria-haspopup=menu]>[role=menu]{flex-basis:100%}
[role=menubar] [role=menu]>:is([role=menuitem],[role=menuitemradio]){display:flex;align-items:center;min-height:44px}
}
/* A touch device in landscape can be wider than the phone window layout. Its menu bar still needs touch targets. */
@media (max-width:600px),(pointer:coarse){
[role=menubar]{min-height:44px}
[role=menubar]>[role=menuitem]{box-sizing:border-box;min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center;touch-action:manipulation}
[role=menubar]>[role=menuitem]+[role=menuitem]{margin-left:0}
[role=menubar]>[role=menuitem]:focus-visible{outline:2px solid currentColor;outline-offset:-2px}
[role=menubar] .menubar-end>button{position:relative;min-width:44px;min-height:44px;touch-action:manipulation}
}
@media (pointer:coarse) and (hover:none){
[role=menubar]>[role=menuitem]:hover:not(:focus-within),.menubar-end>button:hover:not([aria-pressed=true]){color:inherit;background:none;box-shadow:none}
}
@media (max-width:600px){
/* Touch: a control's hit area reaches 44px past what its theme draws, and a press leaves no hover behind. */
:where(.title-bar-controls>button)::after{content:"";position:absolute;top:calc((100% - 44px) / 2);height:44px;left:calc(var(--title-controls-gap) / -2);right:calc(var(--title-controls-gap) / -2)}
[role=tablist]>[role=tab]{min-height:44px}
button,[role=button],[role=menuitem],[role=tab],.title-bar{touch-action:manipulation}
}
@media (max-width:600px) and (hover:none){
[role=menubar]>[role=menuitem]:hover:not(:focus-within),.menubar-end>button:hover:not([aria-pressed=true]){color:inherit;background:none;box-shadow:none}
}
/* The spec editor (display/spec-editor.ts): an app's specs in a window of their own, one outline beside its contents and,
   when asked, its code. The highlighting is PlainType's palette (https://github.com/mrjf/PlainType, demo/web/styles.css, by
   the sys0 author): its token classes, with proofreader's marks for slots; everything else is the theme's own. */
/* Its window: as big as a long read wants and the desktop allows until it is moved or resized, then as big as it is made.
   Deeper than the shell's rule for every dialog (at most 420px: kernel/main.ts). */
sys0-shell>.desktop>.system-window.window.spec-editor-window[role=dialog]{display:flex;flex-direction:column;max-width:none}
sys0-shell>.desktop>.system-window.window.spec-editor-window[role=dialog]:not(.placed){top:5%;width:min(1100px,calc(100% - 48px));height:min(780px,calc(90% - var(--wm-shelf-height)));max-height:none}
sys0-shell>.desktop>.system-window.window.spec-editor-window[role=dialog]>.window-body{flex:1;display:flex;flex-direction:column;min-height:0;margin:0;padding:0;overflow:hidden}
sys0-shell>.desktop>.system-window.window.spec-editor-window[role=dialog]>.window-body>footer{display:none}
.se-root{--se-rule:color-mix(in srgb,var(--color-text) 13%,transparent);--se-faint:color-mix(in srgb,var(--color-text) 4%,var(--color-canvas));--se-accent:var(--color-link);--se-muted:var(--color-text-disabled);--se-read:15.5px;--t-header:var(--se-muted);--t-bullet:color-mix(in srgb,var(--color-text) 38%,transparent);--t-comment:var(--se-muted);--t-name:var(--color-text);--t-qualifier:#5b6370;--t-punct:color-mix(in srgb,var(--color-text) 42%,transparent);--t-desc:var(--color-text);--t-keyword:#3552a8;--t-concept:#0d6656;--t-type:#0d6656;--t-string:#7c4a0f;--t-number:#9a3b2b;--t-json:#4f5763;--t-meta:var(--se-muted);--t-code:#7c4a0f;container:spec-editor/inline-size;flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;background:var(--color-canvas);color:var(--color-text);font-family:var(--font-ui)}
.se-root [hidden]{display:none!important}
.se-root .t-header{color:var(--t-header)}.se-root .t-bullet{color:var(--t-bullet)}.se-root .t-comment{color:var(--t-comment);font-style:italic}.se-root .t-name{color:var(--t-name);font-weight:600}.se-root .t-qualifier{color:var(--t-qualifier)}.se-root .t-punct{color:var(--t-punct)}.se-root .t-desc{color:var(--t-desc)}.se-root .t-keyword{color:var(--t-keyword)}.se-root .t-type{color:var(--t-type)}.se-root .t-concept{color:var(--t-concept);font-weight:600}.se-root .t-string{color:var(--t-string)}.se-root .t-number{color:var(--t-number)}.se-root .t-json{color:var(--t-json)}.se-root .t-meta{color:var(--t-meta)}.se-root .t-code{color:var(--t-code);font-family:var(--font-mono);font-size:.9em}
/* The bar: where the page is zoomed, and the tools. */
.se-bar{display:flex;align-items:center;gap:var(--space);min-height:48px;padding:var(--space-grouped) var(--space);box-sizing:border-box;border-block-end:1px solid var(--se-rule)}
.se-crumbs{flex:1;min-width:0;display:flex;align-items:center;gap:2px;overflow:hidden;white-space:nowrap;font-size:var(--font-size-small)}
.se-crumbs>button{all:unset;cursor:pointer;padding:3px 6px;border-radius:4px;color:var(--se-muted);overflow:hidden;text-overflow:ellipsis;max-width:22ch}
.se-crumbs>button:hover{color:var(--color-text);background:var(--se-faint)}
.se-crumbs>button[aria-current]{color:var(--color-text);font-weight:600}
.se-crumbs>button:focus-visible{outline:2px solid var(--se-accent);outline-offset:-2px}
.se-crumb-sep{color:var(--t-bullet)}
.se-tools{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-grouped);flex:none}
.se-modes{display:flex;flex-wrap:wrap;gap:var(--space-grouped)}
.se-modes>button{margin:0;min-width:0}
/* The body: contents, the page, and the code when it is shown. */
.se-body{display:grid;grid-template-columns:clamp(180px,18cqi,260px) minmax(0,1fr);min-height:0}
.se-root.se-with-code .se-body{grid-template-columns:clamp(170px,15cqi,230px) minmax(0,1fr) minmax(340px,42%)}
.se-toc{overflow:auto;padding:22px 10px 40px 16px;border-inline-end:1px solid var(--se-rule);font-size:var(--font-size-small)}
.se-toc>h2{margin:0 0 10px;font-size:.78em;font-weight:650;letter-spacing:.08em;text-transform:uppercase;color:var(--se-muted)}
.se-toc ul{list-style:none;margin:0;padding:0}
.se-toc ul ul{padding-inline-start:12px;border-inline-start:1px solid var(--se-rule);margin-inline-start:6px}
.se-toc button{all:unset;box-sizing:border-box;display:flex;align-items:center;gap:6px;width:100%;padding:3px 8px;border-radius:4px;cursor:pointer;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.45}
.se-toc button:hover{background:var(--se-faint)}
.se-toc button:focus-visible{outline:2px solid var(--se-accent);outline-offset:-2px}
.se-toc button[aria-current=true]{background:color-mix(in srgb,var(--se-accent) 11%,transparent);font-weight:600}
.se-toc .se-toc-app{font-weight:650;margin-bottom:4px}
.se-toc button[data-again]{color:var(--se-muted);font-style:italic}
.se-toc button[data-changed]::after{content:"";flex:none;width:6px;height:6px;margin-inline-start:auto;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--se-muted)}
.se-toc button[data-pending]::after{content:"";flex:none;width:6px;height:6px;margin-inline-start:auto;border-radius:50%;background:var(--se-accent);box-shadow:none}
/* The page: one reading column, the zoomed node its title. */
.se-doc{overflow:auto;scroll-padding-top:24px;container-type:inline-size}
.se-page{max-width:46rem;margin:0 auto;padding:40px 48px 30vh;font-size:var(--se-read);line-height:1.68}
.se-zoom{margin:0 0 26px}
.se-zoom>h1{margin:0;font-size:2em;line-height:1.18;font-weight:680;letter-spacing:-.018em}
.se-zoom>p{margin:6px 0 0;color:var(--se-muted);font-size:var(--font-size-small)}
.se-zoom>.se-path{font-family:var(--font-mono)}
.se-zoom>.se-zoom-kind{margin:0 0 8px;text-transform:uppercase;letter-spacing:.08em;font-size:.72em;font-weight:650}
.se-zoom>.se-line{font-size:1.32em;line-height:1.45;font-weight:500}
.se-rows,.se-rows ol{list-style:none;margin:0;padding:0}
.se-rows ol{margin-inline-start:.55rem;padding-inline-start:1.15rem;border-inline-start:1px solid var(--se-rule)}
.se-node{position:relative}
.se-line{position:relative;display:grid;grid-template-columns:1.05rem 1.05rem minmax(0,1fr);align-items:start;column-gap:2px;margin-inline-start:-2.1rem;padding:1px 4px 1px 0;border-radius:5px;outline:none}
.se-line>.se-fold{grid-column:1}.se-line>.se-bullet{grid-column:2}.se-line>.se-text,.se-line>.se-error{grid-column:3}
.se-zoom>.se-line{grid-template-columns:minmax(0,1fr);margin:0}.se-zoom>.se-line>.se-text,.se-zoom>.se-line>.se-error{grid-column:1}
.se-line:focus-visible{background:var(--se-faint);box-shadow:inset 2px 0 0 var(--se-accent)}
.se-fold,.se-bullet{all:unset;box-sizing:border-box;width:1.05rem;height:1.68em;display:grid;place-items:center;cursor:pointer;border-radius:4px}
.se-fold::before{content:"";width:0;height:0;border-block:4px solid transparent;border-inline-start:5.5px solid var(--t-bullet);transition:transform .12s ease-out}
.se-node[aria-expanded=true]>.se-line>.se-fold::before{transform:rotate(90deg)}
.se-fold{opacity:0;transition:opacity .12s ease-out}
.se-line:hover>.se-fold,.se-line:focus-visible>.se-fold,.se-node[aria-expanded=false]>.se-line>.se-fold{opacity:1}
.se-bullet::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--t-bullet);transition:box-shadow .12s ease-out,background-color .12s ease-out}
.se-bullet:hover::before{background:var(--color-text);box-shadow:0 0 0 4px var(--se-rule)}
.se-bullet[data-folded]::before{background:var(--color-text);box-shadow:0 0 0 4px var(--se-rule)}
.se-fold:focus-visible,.se-bullet:focus-visible{outline:2px solid var(--se-accent)}
.se-text{min-width:0;overflow-wrap:anywhere;cursor:text;border-radius:4px}
.se-text code{font-family:var(--font-mono);font-size:.86em;padding:.05em .3em;border-radius:3px;background:var(--se-faint);color:var(--t-code)}
.se-ref{font-weight:620}
.se-term{font-weight:650}
.se-term-sep{color:var(--t-punct)}
.se-comment{color:var(--se-muted)}
.se-empty{color:var(--se-muted);font-style:italic}
/* A spec: its component's name as a heading, its folder beside it. */
.se-spec{margin-top:2.1em}
.se-rows>.se-spec:first-child,.se-rows>.se-section:first-child{margin-top:0}
.se-spec>.se-line>.se-bullet::before{width:8px;height:8px;border-radius:2px}
.se-spec-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;cursor:default}
.se-spec-name{margin:0;font-size:1.28em;line-height:1.3;font-weight:670;letter-spacing:-.01em}
.se-spec-meta{display:flex;align-items:baseline;gap:8px;font-size:var(--font-size-small);color:var(--se-muted)}
.se-spec-meta code{background:none;padding:0;color:inherit}
.se-tag{font-size:.86em;padding:0 6px;border-radius:999px;box-shadow:inset 0 0 0 1px var(--se-rule);color:var(--se-muted);white-space:nowrap}
.se-tag-draft{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--se-accent) 45%,transparent);color:var(--se-accent)}
/* A section: named quietly, as the reader names it. */
.se-section{margin-top:1.15em}
.se-heading{display:flex;align-items:baseline;gap:8px;cursor:default;font-size:.72em;font-weight:680;letter-spacing:.085em;text-transform:uppercase;color:var(--se-muted);padding-top:.2em}
.se-heading>code{text-transform:none;letter-spacing:0;font-weight:400;background:none;padding:0}
.se-heading[data-design=true]{color:color-mix(in srgb,var(--se-accent) 70%,var(--se-muted))}
.se-checks>.se-line .se-heading{font-size:.68em;letter-spacing:.07em}
.se-test>.se-line .se-text{color:color-mix(in srgb,var(--color-text) 82%,transparent);font-size:.96em}
.se-again{color:var(--se-muted);font-style:italic}
/* Rows written here and not yet committed: the bullet in the accent, the line faintly marked. */
.se-line[data-pending]{background:color-mix(in srgb,var(--se-accent) 7%,transparent)}
.se-line[data-pending]>.se-bullet::before{background:var(--se-accent)}
.se-error{margin:2px 0 4px;padding:4px 8px;border-radius:4px;color:var(--color-error);background:color-mix(in srgb,var(--color-error) 8%,transparent);font-size:var(--font-size-small)}
.se-adder{margin:0}
.se-add{all:unset;cursor:pointer;margin-inline-start:-.2rem;padding:0 4px;border-radius:4px;font-size:var(--font-size-small);color:var(--se-muted);opacity:0;transition:opacity .12s ease-out}
.se-node:hover>ol>.se-adder>.se-add,.se-add:focus-visible,.se-rows>.se-adder>.se-add{opacity:.75}
.se-add:hover{opacity:1;color:var(--color-text);background:var(--se-faint)}
.se-add::before{content:"+ "}
/* Writing a row: its ***plain in a field over its highlighted copy, in the reading face. */
.se-editor{position:relative}
.se-editor>.se-backdrop,.se-editor>.se-input{margin:0;padding:0 4px;box-sizing:border-box;width:100%;border:0;font:inherit;line-height:inherit;letter-spacing:inherit;white-space:pre-wrap;overflow-wrap:anywhere;tab-size:2}
.se-editor>.se-backdrop{position:absolute;inset:0;pointer-events:none;color:var(--color-text);overflow:hidden}
.se-editor>.se-input{position:relative;display:block;resize:none;overflow:hidden;min-height:1lh;background:transparent;color:transparent;caret-color:var(--color-text);outline:none;border-radius:4px;box-shadow:0 0 0 1px var(--se-rule),0 0 0 4px color-mix(in srgb,var(--se-accent) 12%,transparent)}
.se-editor>.se-input::selection{background:color-mix(in srgb,var(--se-accent) 25%,transparent);color:transparent}
.se-line.se-editing{background:none}
/* The foot: what is waiting, the model to implement it with, and the threads implementing it. */
.se-foot{border-block-start:1px solid var(--se-rule);padding:8px 18px;display:grid;grid-template-columns:minmax(0,1fr);gap:6px;background:var(--color-canvas)}
.se-commit{display:flex;align-items:center;gap:12px;min-height:32px}
.se-said{flex:1;min-width:0;margin:0;color:var(--se-muted);font-size:var(--font-size-small);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.se-foot[data-pending=true] .se-said{color:var(--color-text)}
.se-said[data-error]{color:var(--color-error);white-space:normal}
.se-commit-tools{display:flex;align-items:center;gap:8px;flex:none}
.se-implement::after{content:" \23CE";opacity:.6}
.se-runs{list-style:none;margin:0;padding:0;display:grid;gap:2px;font-size:var(--font-size-small)}
.se-runs>li{display:grid;grid-template-columns:10px minmax(0,1fr) auto auto auto;align-items:center;gap:10px;padding:3px 0}
.se-runs button{margin:0;min-height:0}
.se-run-dot{width:8px;height:8px;border-radius:50%;background:var(--se-muted)}
.se-runs>li[data-status=working]>.se-run-dot,.se-runs>li[data-status=starting]>.se-run-dot{background:var(--se-accent);animation:se-pulse 1.4s ease-in-out infinite}
.se-runs>li[data-status=done]>.se-run-dot{background:#1d7448}
.se-runs>li[data-status=failed]>.se-run-dot{background:var(--color-error)}
.se-run-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.se-run-model,.se-run-status{color:var(--se-muted);white-space:nowrap}
.se-run-status{max-width:46ch;overflow:hidden;text-overflow:ellipsis}
.se-runs>li[data-status=failed]>.se-run-status{color:var(--color-error)}
@keyframes se-pulse{50%{opacity:.35}}
@media (prefers-reduced-motion:reduce){.se-runs>li>.se-run-dot{animation:none!important}.se-fold::before,.se-bullet::before,.se-add,.se-fold{transition:none}}
/* The code beside the spec: its folder's files, a line at a time, what the row names marked. */
.se-code{overflow:auto;border-inline-start:1px solid var(--se-rule);background:var(--se-faint);padding:18px 18px 40vh}
.se-code-head{display:flex;align-items:baseline;gap:10px;margin:0 0 14px}
.se-code-head>h2{margin:0;font-size:1em;font-weight:650}
.se-code-head>code{font-family:var(--font-mono);font-size:var(--font-size-small);color:var(--se-muted)}
.se-code-none{color:var(--se-muted);font-size:var(--font-size-small)}
.se-file{margin:0 0 16px;border-radius:6px;background:var(--color-canvas);box-shadow:0 0 0 1px var(--se-rule);overflow:hidden}
.se-file>header{display:flex;align-items:center;gap:8px;padding:6px 10px;border-block-end:1px solid var(--se-rule);font-size:var(--font-size-small)}
.se-file-name{font-family:var(--font-mono);font-weight:600}
.se-file-as{margin:0 0 0 auto;min-height:0;font-size:.9em}
.se-file-body{margin:0;padding:8px 0;font-family:var(--font-mono);font-size:12.5px;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere;tab-size:2;counter-reset:none}
.se-cl{display:block;padding:0 12px 0 46px;text-indent:-34px;min-height:1lh}
.se-cl::before{content:attr(data-n);display:inline-block;width:26px;margin-inline-end:8px;text-align:end;text-indent:0;color:var(--t-bullet);user-select:none}
.se-cl[data-hit]{background:color-mix(in srgb,#e2b100 13%,transparent)}
mark.se-hit{background:color-mix(in srgb,#e2b100 40%,transparent);color:inherit;border-radius:2px}
@container (max-width:560px){.se-page{padding:24px 18px 30vh}.se-line{margin-inline-start:-1.6rem}}
@container spec-editor (max-width:640px){.se-bar,.se-tools,.se-commit,.se-commit-tools{flex-wrap:wrap}.se-said{flex-basis:100%}.se-commit-tools{flex:1 1 100%;min-width:0;justify-content:flex-end}.se-model{min-width:0;max-width:100%}}
@container spec-editor (max-width:820px){.se-body,.se-root.se-with-code .se-body{grid-template-columns:minmax(0,1fr)}.se-toc{display:none}.se-root.se-with-code .se-doc{display:none}.se-crumbs{display:none}}
