@import url('ui-foundation.css');

/* Keep the viewport as the sticky outline's scroll container. */
html:has(.wiki-article-wrap),body:has(.wiki-article-wrap){overflow-x:clip}

.wiki-article-wrap{--article-reader-max:1100px;width:min(calc(100% - 2 * var(--page-pad)),var(--article-reader-max));max-width:var(--article-reader-max);margin:28px auto 64px;padding:0;min-width:0;background:transparent;box-shadow:none}
.wiki-article-wrap.wiki-article-sections{--article-reader-max:1380px}
.wiki-article-wrap>.crumb{margin-bottom:18px;color:var(--color-text-muted);font-size:13px;overflow-wrap:anywhere}
.wiki-article-wrap>h1{margin:0 0 12px;color:var(--color-text);font:600 clamp(30px,5vw,46px)/1.12 var(--font-editorial);overflow-wrap:anywhere}
.wiki-article-wrap>nav{margin:12px 0;color:var(--color-text-muted);font-size:13px}.wiki-article-wrap>nav a{color:var(--color-accent);text-underline-offset:3px}.wiki-locale-missing{color:var(--color-text-muted)}.wiki-article-wrap>.wiki-lead{max-width:760px;color:var(--color-text-secondary);font-size:17px;line-height:1.65}
.wiki-article-cover{width:100%;aspect-ratio:16/9;max-height:540px;margin:22px 0 26px;overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-2)}/* The box is reserved before the image arrives, so the text below it does not jump. */
.wiki-article-cover img{display:block;width:100%;height:100%;object-fit:cover}
.wiki-article-body{max-width:100%;min-width:0;margin:22px 0;padding:clamp(20px,4vw,36px);color:var(--color-text-secondary);font:16px/1.75 var(--font-ui);overflow-wrap:anywhere}
.wiki-article-body :is(h2,h3,h4){color:var(--color-text);line-height:1.25;overflow-wrap:anywhere}.wiki-article-body h2{margin:1.6em 0 .7em;font:600 clamp(25px,4vw,34px)/1.2 var(--font-editorial)}.wiki-article-body h3{margin:1.45em 0 .65em;font:600 clamp(20px,3vw,25px)/1.25 var(--font-editorial)}.wiki-article-body h4{margin:1.35em 0 .55em;font-size:18px}.wiki-article-body :is(p,ul,ol,blockquote,pre,figure,details){max-width:100%}.wiki-article-body :is(a,code,pre){overflow-wrap:anywhere;word-break:break-word}.wiki-article-body a{color:var(--color-accent);text-decoration:underline;text-underline-offset:3px}.wiki-article-body :is(ul,ol){padding-inline-start:1.4em}.wiki-article-body li+li{margin-top:.35em}
.wiki-article-body :is(img,video){display:block;width:auto;max-width:100%;height:auto;margin:20px auto}.wiki-article-body video{width:100%;background:#000}.wiki-article-body figure{margin:24px 0}.wiki-article-body figcaption{margin-top:8px;color:var(--color-text-muted);font-size:13px;line-height:1.5;text-align:center}.wiki-article-body pre{overflow:auto;padding:14px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-2);white-space:pre}.wiki-article-body blockquote{margin:20px 0;padding:4px 0 4px 18px;border-left:3px solid var(--color-accent);color:var(--color-text-secondary)}
.wiki-table-scroll{max-width:100%;margin:22px 0;overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-sm);scrollbar-width:thin}.wiki-table-scroll:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}.wiki-table-scroll table{width:100%;min-width:max-content;margin:0;border-collapse:collapse}.wiki-table-scroll :is(th,td){padding:11px 13px;border:0;border-right:1px solid var(--color-border);border-bottom:1px solid var(--color-border);text-align:left;vertical-align:top}.wiki-table-scroll :is(th,td):last-child{border-right:0}.wiki-table-scroll tr:last-child td{border-bottom:0}.wiki-table-scroll th{background:var(--color-surface-2);color:var(--color-text);font-weight:600}
.wiki-article-body details:not(.section-post-menu):not(.section-post-group){margin:18px 0;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface-2)}.wiki-article-body details:not(.section-post-menu):not(.section-post-group)>summary{min-height:44px;padding:11px 14px;color:var(--color-text);font-weight:600;cursor:pointer}.wiki-article-body details:not(.section-post-menu):not(.section-post-group)>:not(summary){margin-inline:14px}
.wiki-article-body .section-post-group a{text-decoration:none}
.article-reader-layout{display:grid;grid-template-columns:minmax(210px,260px) minmax(0,1fr);gap:28px;align-items:start}.has-article-outline{width:min(calc(100% - 2 * var(--page-pad)),1320px);max-width:1320px}.article-reader-layout>.wiki-article-body{margin-top:0}.article-outline{position:sticky;top:104px;min-width:0;max-height:calc(100dvh - 124px);overflow:auto;border-left:2px solid var(--color-border);color:var(--color-text);box-sizing:border-box}.article-outline>summary{box-sizing:border-box;padding:8px 12px;color:var(--color-text);font-weight:700;cursor:pointer}.wiki-article-body .article-outline>summary{padding:8px 12px}.article-outline-search{display:block;width:auto;max-width:calc(100% - 24px);min-height:40px;margin:2px 12px 10px;padding:8px 10px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font:inherit;box-sizing:border-box}.article-outline nav{display:grid;min-width:0}.article-outline nav a{box-sizing:border-box;max-width:100%;min-height:40px;padding:8px 12px;border-left:2px solid transparent;color:var(--color-text-secondary);font-size:14px;line-height:1.35;text-decoration:none;overflow-wrap:anywhere}.article-outline nav a:hover,.article-outline nav a:focus-visible{color:var(--color-text);background:var(--color-surface-2)}.article-outline nav a.is-active{border-left-color:var(--color-accent);color:var(--color-accent);background:color-mix(in srgb,var(--color-accent) 8%,transparent)}.article-outline nav a.is-subsection{padding-left:30px;color:var(--color-text-muted);font-size:13px}.article-outline nav a[hidden]{display:none}.article-outline-empty{margin:8px 14px 14px;color:var(--color-text-muted);font-size:13px}.mobile-back-to-top{display:none}

.wiki-article-wrap.has-article-outline{width:min(calc(100% - 2 * var(--page-pad)),1380px);max-width:1380px}

@media(max-width:760px){
 .article-reader-layout{display:block}.article-outline{position:sticky;top:72px;z-index:3;display:block;max-height:calc(100dvh - 84px);margin:16px 0;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);box-shadow:0 6px 18px #0002;overflow:auto}
 .article-outline>summary{display:flex;align-items:center;justify-content:space-between;min-height:48px;padding:10px 14px;list-style:none}.article-outline>summary::-webkit-details-marker{display:none}.article-outline>summary:after{content:'+';color:var(--color-accent);font-size:20px}.article-outline[open]>summary:after{content:'−'}
 .article-outline nav{border-top:1px solid var(--color-border)}.article-outline nav a{min-height:44px;padding:11px 14px;border-bottom:1px solid var(--color-border)}.article-outline nav a:last-child{border-bottom:0}.article-outline nav a.is-subsection{padding-left:30px;font-size:14px}
 .mobile-back-to-top{position:fixed;right:14px;bottom:18px;z-index:20;display:grid;width:48px;height:48px;padding:0;place-items:center;border:1px solid var(--color-accent);border-radius:50%;background:var(--color-surface);color:var(--color-accent);box-shadow:0 7px 22px #0004;font-size:22px;cursor:pointer}.mobile-back-to-top[hidden]{display:none}
 .wiki-article-body :is(h2,h3){scroll-margin-top:136px}.wiki-article-body.section-post .section-post-pane :is(h2,h3){scroll-margin-top:16px}
 .wiki-table-scroll,.section-post-table{-webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain}
 .wiki-article-body :is(img,video){height:auto!important}.wiki-article-body figure>img{border-radius:var(--radius-sm)}
 .wiki-tabs-controls{scroll-snap-type:x proximity;padding:8px}.wiki-tabs-controls button{min-height:48px;scroll-snap-align:start}.wiki-article-body [data-wiki-tab]{padding:16px}
 .section-post-menu{position:static;top:auto;max-height:55dvh;padding:0 12px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);box-shadow:0 6px 18px #0002}
 .section-post-menu>summary{min-height:48px}
}
@media(max-width:480px){
 .wiki-article-wrap{width:calc(100% - 24px);margin:18px auto 44px}
 .wiki-article-wrap>.crumb{margin-bottom:14px;font-size:12px}
 .wiki-article-wrap>h1{font-size:30px}
 .wiki-article-wrap>.wiki-lead{font-size:16px;line-height:1.6}
 .wiki-article-cover{margin:18px 0 20px;border-radius:var(--radius-sm)}
 .wiki-article-body{margin:18px 0;padding:18px 16px;font-size:16px;line-height:1.7}
 .wiki-article-body h2{font-size:26px}.wiki-article-body h3{font-size:21px}
 .wiki-article-body :is(img,video){margin:16px auto}
 .wiki-table-scroll{margin-inline:0}
 .section-post-menu{max-height:none;margin-bottom:14px}.section-post-menu>summary{min-height:44px;margin:0;padding:9px 0;font-size:20px}.section-post-pane{padding:18px 16px}
}
.wiki-interface .wiki-table-scroll table{min-width:540px;width:100%}
.wiki-interface .wiki-table-scroll table:has(tr>:nth-child(3)){min-width:720px}
.wiki-interface .wiki-table-scroll :is(th,td){white-space:normal;overflow-wrap:anywhere}
.wiki-interface .wiki-table-scroll td p{margin:0 0 8px}
.wiki-interface .wiki-table-scroll td p:last-child{margin-bottom:0}
.wiki-interface .wiki-article-body img:is([width="24"],[width="25"],[width="27"],[width="28"],[width="31"],[width="32"],[width="33"],[width="35"],[width="36"],[width="40"],[width="48"],[width="64"]){display:inline-block;margin:0 4px 0 0;vertical-align:middle}
.wiki-article-body img[data-image-viewer]{cursor:zoom-in}.wiki-article-body img[data-image-viewer]:focus-visible{outline:2px solid var(--color-accent);outline-offset:4px}
.article-image-viewer{position:fixed;inset:0;width:96vw;max-width:1600px;max-height:96dvh;margin:auto;padding:56px 16px 16px;border:1px solid var(--color-border);border-radius:12px;background:var(--color-surface);color:var(--color-text);overflow:auto}.article-image-viewer::backdrop{background:#000d}.article-image-viewer>img{display:block;max-width:100%;max-height:calc(96dvh - 120px);width:auto;height:auto;margin:auto;object-fit:contain}.article-image-viewer>button{position:absolute;right:8px;top:8px;width:44px;height:44px;border:1px solid var(--color-border);border-radius:50%;background:var(--color-surface);color:var(--color-text);font-size:28px;cursor:pointer}.article-image-viewer>p{text-align:center;overflow-wrap:anywhere;margin:12px 0 0}.article-image-viewer>button:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}
.article-image-viewer,.article-image-viewer *{box-sizing:border-box}
.section-copy-link{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;width:44px;height:44px;margin-left:6px;padding:0;border:0;border-radius:6px;background:transparent;color:var(--color-accent);font:20px var(--font-ui);cursor:pointer;opacity:0}.wiki-article-body :is(h2,h3):hover>.section-copy-link,.section-copy-link:focus-visible{opacity:1}.section-copy-link:focus-visible{outline:2px solid var(--color-accent)}.section-link-status{display:block;color:var(--color-text);font:14px var(--font-ui);overflow-wrap:anywhere}.section-link-status a{text-decoration:underline;color:var(--color-accent)}@media(hover:none),(max-width:760px){.section-copy-link{opacity:1}}
.section-link-status:not(:empty){position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:20;max-width:calc(100vw - 32px);padding:12px 16px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-surface);box-shadow:0 4px 20px #0003}
/* Collapsible heading tree. Keep navigation links separate from toggles. */
.article-outline .outline-row{display:flex;align-items:center;min-width:0}.article-outline .outline-row>a{flex:1;min-width:0}.article-outline .outline-children{margin-left:12px;padding-left:5px;border-left:1px solid var(--color-border)}.article-outline .outline-children[hidden],.article-outline .outline-group[hidden]{display:none}.article-outline .outline-toggle{display:grid;place-items:center;flex:0 0 36px;width:36px;min-height:36px;padding:0;border:0;border-radius:6px;background:transparent;color:var(--color-text-muted);cursor:pointer}.article-outline .outline-toggle::before{content:'';width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform .16s ease}.article-outline .outline-toggle[aria-expanded=true]::before{transform:translateY(2px) rotate(225deg)}.article-outline .outline-toggle:hover{background:var(--color-surface-2);color:var(--color-accent)}.article-outline .outline-toggle:focus-visible{outline:2px solid var(--color-accent);outline-offset:-3px}.article-outline .outline-row>a.is-subsection{padding-left:12px}
.article-outline nav a.is-active{border-left-color:transparent;background:transparent;color:var(--color-accent)}.article-outline .outline-row>a.is-server{margin:0;padding:10px 6px 8px 2px;border-left:0;border-radius:0;background:transparent;color:var(--color-text);font:600 16px/1.35 var(--font-editorial)}.article-outline .outline-row>a.is-server:hover,.article-outline .outline-row>a.is-server.is-active{background:transparent;color:var(--color-accent)}.article-outline .outline-group:has(> .outline-row > a.is-server)>.outline-children .outline-row>a{font-size:13px}.article-outline .outline-row:has(> .outline-toggle)>a{padding-left:2px}
.article-outline:has(a.is-server) .outline-children{margin-left:13px;padding-left:13px;border-left:1px solid var(--color-border)}.article-outline:has(a.is-server) .outline-group:has(> .outline-row > a.is-server){margin-top:0}.article-outline:has(a.is-server) .outline-group:has(> .outline-row > a.is-server)>.outline-row{border-top:0}.article-outline:has(a.is-server) .outline-group:has(> .outline-row > a.is-server)>.outline-children{margin-left:12px;padding-left:13px;border-left:1px solid var(--color-border)}.article-outline:has(a.is-server) .outline-children>.outline-group{position:relative}.article-outline:has(a.is-server) .outline-children>.outline-group::before{content:'';position:absolute;left:-14px;top:19px;width:14px;border-top:1px solid var(--color-border);pointer-events:none}.article-outline:has(a.is-server) .outline-children>.outline-group:last-child::after{content:'';position:absolute;left:-14px;top:20px;bottom:0;width:1px;background:var(--color-surface);pointer-events:none}
.article-outline .outline-toggle{flex:0 0 22px;width:22px;min-height:36px;margin:0 0 0 3px;padding:0;border:0;border-radius:0;background:transparent;color:var(--color-text-muted)}.article-outline .outline-toggle::before{width:0;height:0;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:6px solid currentColor;border-right:0;transform:none;transition:transform .15s ease}.article-outline .outline-toggle[aria-expanded=true]::before{transform:rotate(90deg)}.article-outline .outline-toggle:hover{background:transparent;color:var(--color-accent)}.article-outline .outline-toggle:focus-visible{outline:0;box-shadow:inset 0 -2px var(--color-accent)}
/* Balance contents: the heading and server links control navigation; branches show hierarchy. */
.article-outline:has(a.is-server) .outline-toggle{display:none}
.article-outline:has(a.is-server) .outline-row>a{padding:9px 6px;border:0;border-radius:0;background:transparent;line-height:1.35}
.article-outline:has(a.is-server) .outline-row>a:hover,.article-outline:has(a.is-server) .outline-row>a.is-active{border:0;background:transparent;color:var(--color-accent)}
.article-outline:has(a.is-server) .outline-row>a.is-server{padding:10px 6px;font:600 15px/1.35 var(--font-editorial)}
.article-outline:has(a.is-server) .outline-group:has(> .outline-row > a.is-server)>.outline-children .outline-row>a{padding:8px 6px;color:var(--color-text-muted);font-size:13px}
.article-outline:has(a.is-server) .outline-group:has(> .outline-row > a.is-server)>.outline-children .outline-row>a:hover,.article-outline:has(a.is-server) .outline-group:has(> .outline-row > a.is-server)>.outline-children .outline-row>a.is-active{color:var(--color-accent)}
.wiki-article-body.article-card,.wiki-article-body.article-card:hover{border-color:var(--color-border);box-shadow:none;transform:none;transition:none}.wiki-article-body .balance-class-skills>summary:focus-visible{outline:0;box-shadow:inset 0 -2px var(--color-accent)}
