/* The user's NeoMaterial CSS and JS remain unmodified. */
/* Graphite light: neutral (no warm cast). Near-white canvas, ~L80–95 ramp. */
:root[data-palette="graphite"][data-scheme="light"][data-density="compact"][data-contrast="high"]{
 --canvas:#e3e3e3;
 --panel:#f5f5f5;
 --control:#ffffff;
 --well:#d4d4d4;
 --text:var(--graphite-lead);
 --text-secondary:var(--graphite-tungsten);
 --text-quiet:var(--graphite-iron);
 --accent:var(--graphite-iron);
 --line:#c2c2c2;
 --surface-shadow-ink:48 48 48;
}
/*
 * Shell width = engraving column (2000×1333 at available height) + narrow sidebar.
 */
:root{
 --site-gutter:24px;
 --mm-shell-art-w:2000;
 --mm-shell-art-h:1333;
 --mm-shell-ratio:calc(var(--mm-shell-art-w) / var(--mm-shell-art-h));
 --mm-shell-max-block:calc(100dvh - 2 * var(--site-gutter));
 --mm-shell-gap:18px;
 --mm-shell-pad:16px;
 /* Credits row stays inside the shell — reserve it so art does not push it out. */
 --mm-credits-block:1.75rem;
 --sidebar-width:244px;
 --mm-shell-content-block:calc(var(--mm-shell-max-block) - 2 * var(--mm-shell-pad) - var(--mm-credits-block));
 --mm-shell-art-inline:calc(var(--mm-shell-content-block) * var(--mm-shell-ratio));
 --mm-shell-width:min(100%,calc(var(--mm-shell-art-inline) + var(--sidebar-width) + var(--mm-shell-gap) + 2 * var(--mm-shell-pad)));
 --card-min-width:220px;
 --card-max-width:280px;
 --card-target-width:220px;
 --card-gap:16px
}
*{box-sizing:border-box}html{width:100%;height:100%;overflow:hidden;background:var(--canvas);color-scheme:light}body{margin:0;width:100%;height:100dvh;overflow:hidden;padding:var(--site-gutter);display:grid;grid-template-rows:minmax(0,1fr);place-items:center;background:var(--canvas);color:var(--text);font:var(--font-weight-regular) 16px/1.5 var(--font)}button,input{font:inherit}a{color:inherit;text-decoration:none}button{cursor:pointer;color:inherit;border:0;background:none}button,a,input{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
/* No UA blue focus rings — graphite only, and never on fields inside wells. */
:where(a,button,input,textarea,select,summary,[tabindex]):focus{outline:none}

.nm-field:focus-within,:where(.mm-search,.nm-field) :is(input,textarea):focus,:where(.mm-search,.nm-field) :is(input,textarea):focus-visible{outline:none;box-shadow:none}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--font);font-weight:600;overflow-wrap:break-word}p{line-height:1.65}.control-label{position:relative;z-index:var(--z-content);display:inline-flex;align-items:center;justify-content:inherit;gap:12px}
/* Only the post well scrolls in the main layout. Its toolbar and footer occupy
   real rows, so neither can overlap the cards or create document overflow. */
.site-shell.nm-panel{
 display:grid;grid-template-columns:var(--sidebar-width) minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;
 column-gap:var(--mm-shell-gap);row-gap:0;
 width:var(--mm-shell-width);max-width:100%;
 height:var(--mm-shell-max-block);max-height:var(--mm-shell-max-block);min-height:0;
 margin:0;justify-self:center;align-self:center;
 padding:var(--mm-shell-pad);border-radius:var(--radius-panel);isolation:isolate;position:relative
}
.site-shell>.sidebar{grid-column:1;grid-row:1 / -1;min-height:0}
.site-shell>.page{grid-column:2;grid-row:1;min-height:0}
.site-shell>.mm-credits-frame{grid-column:2;grid-row:2;min-width:0}
.sidebar{min-height:0;overflow:auto;scrollbar-width:none;padding:7px 5px 10px;overscroll-behavior:contain}.sidebar::-webkit-scrollbar{display:none}.site-brand{display:block;font-size:32px;line-height:1.12;font-weight:700;letter-spacing:-.6px;margin:0;text-wrap:balance}.site-description{margin:0;font-size:13px;color:var(--text-quiet);line-height:1.45}.sidebar nav{display:grid;gap:14px}.nav-news.nm-scroll{max-height:none;padding:6px;border-radius:var(--radius-inset);overflow:visible;contain:none;clip-path:none;z-index:auto}.nav-link{display:flex;align-items:center;width:100%;font-size:15px;font-weight:500;line-height:1.4;min-height:34px;padding:6px 8px;border-radius:var(--radius-control-rect);color:var(--text-secondary)}.nav-link:not(.active):hover{color:var(--text);background:transparent}.nav-link.active,.nav-link.active.nm-button{display:flex;justify-content:flex-start;height:auto;min-height:34px;padding:6px 8px;line-height:1.4;font-size:15px;font-weight:600;color:var(--text);white-space:normal}.sidebar .nm-accordion{display:grid;gap:12px}.sidebar .nm-disclosure-trigger{font-size:16px;line-height:normal;min-height:38px;gap:4px;text-align:left}.sidebar .nm-disclosure-body{padding:5px 4px 0 13px}.subnav{display:grid;padding-left:12px;border-left:var(--border-width) solid var(--line)}.subnav a{display:flex;align-items:center;font-size:15px;font-weight:var(--font-weight-medium);line-height:normal;min-height:33px;padding:5px 4px}.subnav a:hover{background:transparent;color:var(--text)}.sidebar-bottom{display:grid;gap:9px;border-top:1px solid var(--line);margin:18px 7px 0;padding-top:14px;font-size:12px;color:var(--text-quiet)}.source-link{font-size:13px}.source-link:hover{text-decoration:none}
.page{display:flex;flex-direction:column;min-width:0;min-height:0;gap:10px}main{display:flex;min-width:0;min-height:0;flex:1}.news-section{display:flex;flex-direction:column;width:100%;min-width:0;min-height:0;gap:12px}.posts-toolbar{display:flex;flex:none;align-items:center;justify-content:space-between;gap:12px;min-width:0}.filters.nm-button-group{max-width:100%;min-width:0;overflow-x:auto;scrollbar-width:none}.filters::-webkit-scrollbar{display:none}.filters button{flex:0 0 auto;white-space:nowrap;font-size:14px;line-height:1.4;min-height:30px;padding:6px 12px}.filter-short{display:none}.search.mm-search{width:270px;flex:0 0 270px}.search input{width:100%;font-size:15px;font-weight:var(--font-weight-regular);color:var(--text)}.search-close{display:none}
.content-well.nm-scroll{flex:1;max-height:none;min-height:0;width:100%;padding:16px;border-radius:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-gutter:stable;contain:none;clip-path:none;z-index:auto;box-shadow:none;background:transparent;background-image:none}
/* Bounded fluid-width masonry; the image's true width/height attributes reserve its
   original ratio. JS positions cards at integer coordinates without scaling. */
.news-grid{position:relative;display:grid;grid-template-columns:repeat(auto-fill,var(--layout-card-width,var(--card-target-width)));gap:var(--card-gap);align-items:start;width:100%;min-width:0}.news-grid[data-layout="masonry"]{display:block}.news-card{position:relative;min-width:0;width:min(var(--layout-card-width,var(--card-target-width)),100%);padding:0;border-radius:var(--radius-inset);overflow:hidden;background:transparent;box-shadow:none}.news-grid[data-layout="masonry"]>.news-card{position:absolute;top:0;left:0}.card-image{display:block;width:100%;height:auto;border-radius:var(--radius-inset);background:transparent;border:0}.card-body{padding:14px 4px 4px}.news-card h2{font-size:clamp(1.125rem,1.5vw,1.375rem);font-weight:600;line-height:1.3;margin-bottom:8px;letter-spacing:-.2px}.news-card h2 a:after{content:'';position:absolute;inset:0;border-radius:inherit}.news-card:hover h2{text-decoration:none;text-decoration-thickness:1px;text-underline-offset:3px}.news-card:has(a:focus-visible){outline:2px solid var(--text);outline-offset:3px}.news-card h2 a:focus-visible{outline:none}.card-meta{display:block;font-size:12px;font-weight:var(--font-weight-regular);line-height:1.35;color:var(--text-quiet);font-variant-numeric:tabular-nums}.more-row{display:flex;justify-content:center;align-items:center;gap:14px;margin:20px 0 2px;min-height:28px}.more-row>span{font-size:13px;color:var(--text-quiet)}.soft-button.nm-button-text{display:inline-flex;align-items:center;justify-content:center;gap:14px;height:auto;min-height:34px;padding:8px 14px;font-size:14px;font-weight:600;line-height:1.4}.empty-state{padding:24px;font-size:16px;color:var(--text-secondary)}.text-link{display:inline-flex;font-size:15px;font-weight:600;line-height:1.5;min-height:34px;align-items:center;text-decoration:none;text-underline-offset:4px}.text-link:hover{color:#111}
/* The fixed bottom row retains the complete directory in an explicit popover. */
footer{flex:none;min-width:0;padding:0 2px;position:relative;z-index:10}.footer-bottom{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:18px;min-height:34px;font-size:12px;color:var(--text-quiet)}.footer-bottom>.footer-copy{justify-self:start;min-width:0}.footer-bottom>a:hover,.scroll-top:hover{text-decoration:none}.scroll-top{font-size:12px;padding:4px 0}.footer-directory{position:relative;flex:none}.footer-directory>summary{display:inline-flex;align-items:center;min-height:30px;height:auto;padding:6px 12px;font-size:12px;list-style:none;cursor:pointer}.footer-directory>summary::-webkit-details-marker{display:none}.footer-directory[open]>summary .control-label>span{transform:rotate(180deg)}.footer-main{position:absolute;right:0;bottom:calc(100% + 12px);width:min(760px,calc(100vw - 60px));max-height:calc(100dvh - 140px);overflow:auto;overscroll-behavior:contain;background:var(--panel);background-image:var(--panel-face);box-shadow:var(--shadow-float);border-radius:var(--radius-float);padding:20px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}.footer-main h2{font-size:15px;line-height:1.4;margin-bottom:8px}.footer-main a{display:block;font-size:14px;line-height:1.6;color:var(--text-secondary);padding:4px 0}.footer-main a:hover{text-decoration:none;text-underline-offset:3px}.mobile-header,.scrim{display:none}
dialog{width:min(780px,calc(100% - 32px));max-height:calc(100dvh - 40px);padding:24px;border:0;border-radius:var(--radius-panel);background:var(--panel);background-image:var(--panel-face);color:var(--text);box-shadow:var(--shadow-float);overscroll-behavior:contain}dialog::backdrop{background:#292a2d99}.dialog-close{display:flex;margin:0 0 18px auto}.reader-image{display:block;width:100%;height:auto;max-height:380px;object-fit:contain;background:var(--well);border-radius:var(--radius-inset);margin-bottom:20px}dialog h2{font-size:25px;line-height:1.4;margin:14px 0 20px;text-wrap:pretty}dialog p{font-size:16px;line-height:1.75;margin-bottom:15px;overflow-wrap:anywhere}dialog .text-link{margin-top:8px}
@media(max-width:1190px){:root{--mm-shell-gap:14px;--mm-shell-pad:14px}.site-shell.nm-panel{column-gap:var(--mm-shell-gap);padding:var(--mm-shell-pad)}.content-well.nm-scroll{padding:14px}.posts-toolbar{gap:10px}.search.mm-search{width:190px;flex-basis:190px}.filters button{padding-inline:9px}.footer-bottom{gap:12px}}
@media(max-width:850px){:root{--site-gutter:16px;--mm-shell-width:100%;--mm-shell-max-block:none;--mm-shell-pad:12px;--mm-shell-gap:12px}body{grid-template-rows:46px minmax(0,1fr);gap:var(--site-gutter);place-items:stretch}.mobile-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:2px 8px 6px;position:relative;z-index:20;justify-self:stretch;width:100%}.mobile-header>a{font-size:20px;font-weight:700;letter-spacing:-.4px}.menu-toggle.nm-button-text{display:inline-flex;align-items:center;min-height:36px;height:auto;padding:8px 12px;font-size:15px;line-height:1.4}.site-shell.nm-panel{display:block;width:100%;max-width:none;height:100%;max-height:none;align-self:stretch;justify-self:stretch;padding:var(--mm-shell-pad);border-radius:var(--radius-panel)}.page{height:100%}.sidebar{position:fixed;top:var(--site-gutter);left:var(--site-gutter);bottom:var(--site-gutter);width:min(310px,calc(100vw - 48px));max-height:none;height:auto;z-index:30;padding:22px 17px;background:var(--panel);background-image:var(--panel-face);box-shadow:var(--shadow-float);border-radius:var(--radius-float);transform:translateX(calc(-100% - 2 * var(--site-gutter)));visibility:hidden;transition:transform var(--drawer-exit-ease);overscroll-behavior:contain}.menu-open .sidebar{transform:translateX(0);visibility:visible}.scrim:not([hidden]){display:block;position:fixed;inset:0;background:#292a2d66;z-index:25}.subnav a{min-height:38px}.nav-link{min-height:40px}.sidebar .nm-disclosure-trigger{min-height:42px}.menu-open .mobile-header{z-index:31;pointer-events:none}.menu-open .mobile-header>a{visibility:hidden}.menu-open .menu-toggle{pointer-events:auto;position:fixed;right:18px;top:18px;width:36px;height:36px;min-height:36px;padding:0}.menu-open .menu-toggle .control-label{display:none}.footer-main{grid-template-columns:repeat(2,minmax(0,1fr));max-height:min(60dvh,440px)}.footer-bottom{gap:12px}.footer-bottom>span{font-size:11px}.footer-directory>summary{padding-inline:9px}}
@media(max-width:560px){:root{--card-min-width:220px;--card-max-width:220px;--card-target-width:168px;--card-gap:12px}.mobile-header>a{font-size:19px}.site-shell.nm-panel{padding:10px;border-radius:var(--radius-panel)}.news-section{gap:10px}.page{gap:8px}.content-well.nm-scroll{padding:10px;border-radius:0}.posts-toolbar{gap:8px;min-height:40px}.filters.nm-button-group{flex:1}.filters button{font-size:13px;min-height:32px;padding:6px 7px}.filter-full{display:none}.filter-short{display:inline}.search.mm-search{width:auto;flex:none}.search input{font-size:16px}.news-card h2{font-size:17px}.card-body{padding:9px 5px 7px}.card-meta{font-size:14px}.more-row{gap:10px;flex-wrap:wrap;margin-top:17px}.footer-bottom{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 10px;min-height:50px}.footer-bottom>span{margin:0;font-size:11px}.footer-bottom>a{font-size:11px}.scroll-top{text-align:right;font-size:11px;padding:0}.footer-directory>summary{font-size:12px;min-height:28px;padding:5px 8px}.footer-main{padding:17px;gap:18px 14px;right:0;max-height:55dvh;width:calc(100vw - 48px)}.soft-button.nm-button-text{min-height:40px}dialog{padding:19px}dialog h2{font-size:22px}.reader-image{max-height:280px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important}}
@media(forced-colors:active){.site-shell.nm-panel,.content-well,.news-card,.nav-news,.soft-button,.search,.filter,.footer-main{border:1px solid CanvasText}.nav-link.active{outline:2px solid Highlight}}

/* Safari 26+ samples viewport-constrained edge colors rather than relying only
   on meta theme-color (WebKit LocalFrameView::fixedContainerEdges). The empty
   text clip keeps this sampling surface paintless: page pixels stay unchanged. */
.browser-toolbar-tint{position:fixed;inset:0 0 auto;height:11px;z-index:2147483647;pointer-events:none;background-color:var(--canvas);background-clip:text;-webkit-background-clip:text;border:0;outline:0;box-shadow:none;transition:none}

:root{--frame-surface:var(--panel-fill,var(--panel));--frame-noise:none}
.site-shell.nm-panel{background-color:var(--frame-surface);background-image:var(--panel-face);background-size:100% 100%}
.sidebar{background:transparent}
@media(max-width:850px){.sidebar{background-color:var(--frame-surface);background-image:var(--panel-face);background-size:100% 100%}}
/* Both masks share the exact centre of the library's raised arrow face. */
.sidebar .nm-disclosure-trigger{padding-inline-end:calc(var(--nest-pad) + var(--control-size) + var(--space-inline))}
.sidebar .nm-disclosure-trigger::after{position:absolute;inset-inline-end:calc(var(--nest-pad) + (var(--control-size) - 12px)/2);inset-block-start:50%;width:12px;height:12px;margin:0;border:0;background-color:currentColor;transform-origin:50% 50%;transform:translateY(-50%);mask:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2012%2012%22%3E%3Cpath%20d%3D%22m2%204%204%204%204-4%22%20fill%3D%22none%22%20stroke%3D%22white%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E") center/12px 12px no-repeat;-webkit-mask:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2012%2012%22%3E%3Cpath%20d%3D%22m2%204%204%204%204-4%22%20fill%3D%22none%22%20stroke%3D%22white%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E") center/12px 12px no-repeat}
.sidebar .nm-disclosure-trigger[aria-expanded="true"]::after{transform:translateY(-50%) rotate(180deg)}

/* One inset governs both sides of the fixed footer row — keep in sync with --mm-shell-pad. */
.site-shell.nm-panel{--frame-inset:var(--mm-shell-pad);padding:var(--mm-shell-pad)}
.page{gap:var(--frame-inset)}
@media(max-width:560px){:root{--mm-shell-pad:10px}}

/* Link feedback uses the Graphite accent, never an underline. */
a:hover,a:active,.sidebar a:hover,.source-link:hover,.text-link:hover,.news-card:hover h2,.footer-main a:hover,.footer-bottom>a:hover,.scroll-top:hover{color:var(--graphite-licorice);text-decoration:none}
a,.text-link,.news-card h2{text-decoration:none}
/* Switch to the compact, complete toolbar before labels can be clipped. */
@media(max-width:950px){
 .filter-full{display:none}.filter-short{display:inline}
 .filters button{padding-inline:8px}
.search.mm-search{width:auto;flex:none}
.posts-toolbar.search-open .filters{display:none!important}
.posts-toolbar.search-open .search{display:flex;width:100%;flex:1}
.posts-toolbar.search-open .search-close{display:inline-grid}
.search input{font-size:16px}
}
@media(max-width:360px){.filters button{padding-inline:4px}}

.site-shell.nm-panel{background-blend-mode:normal}
@media(max-width:850px){.sidebar{background-blend-mode:normal}}

.brand-block{display:flex;flex-direction:column;align-items:center;gap:12px;width:100%;margin:0 0 18px;text-align:center}
.brand-identity{display:block;width:100%;max-width:100%;margin:0;padding:0;border-radius:0;overflow:visible;contain:none;clip-path:none;background:transparent;background-image:none;box-shadow:none}
.brand-icon{display:block;width:100%;height:auto;object-fit:contain}
.brand-block .site-brand{width:100%;max-width:100%;padding:0;text-align:center}
.brand-block .site-description{width:100%;max-width:100%;padding:0;text-align:center;text-wrap:pretty}
#main:focus,#posts-frame:focus{outline:none}

/* Circular disclosure faces inside the rounded menu wells. */
.sidebar .nm-disclosure-trigger::before{border-radius:var(--radius-control)}

/* The directory spans the content frame, anchored above the fixed footer. */
.footer-directory{position:static}
.footer-main{inset-inline:0;bottom:calc(100% + var(--frame-inset));width:auto;max-height:min(60dvh,480px);background-image:var(--panel-face);background-size:100% 100%;background-blend-mode:normal;transform-origin:bottom center}
@media(prefers-reduced-motion:reduce){.footer-directory[open] .footer-main{animation:none}}

/* Equal vertical and end insets place the circle inside the pill cap. */
.sidebar .nm-disclosure-trigger{--disclosure-height:38px;--disclosure-end-inset:calc((var(--disclosure-height) - var(--control-size)) / 2);height:var(--disclosure-height)}
.sidebar .nm-disclosure-trigger::before{inset-inline-end:var(--disclosure-end-inset)}
.sidebar .nm-disclosure-trigger::after{inset-inline-end:calc(var(--disclosure-end-inset) + (var(--control-size) - 12px) / 2)}
@media(max-width:850px){.sidebar .nm-disclosure-trigger{--disclosure-height:42px}}

/* The directory is part of the frame layout, below the news well. */
.footer-main{display:none;position:static;inset:auto;width:100%;margin:0 0 var(--frame-inset);padding:8px 0;max-height:min(45dvh,400px);box-shadow:none;border:0;border-radius:0;background:transparent;transform-origin:bottom center}
@media(prefers-reduced-motion:reduce){.page:has(.footer-directory[open]) .footer-main{animation:none}}

/* Keep the directory control at the left edge inside the post frame. */
.posts-frame-wrap{position:relative;display:flex;flex:1;min-width:0;min-height:0}
.posts-frame-wrap .content-well{padding-bottom:64px}
.posts-frame-wrap>.footer-directory{position:absolute;left:16px;bottom:12px;z-index:3}
@media(max-width:560px){.posts-frame-wrap>.footer-directory{left:10px;bottom:10px}}

/* Brand column: icon width sets the measure for title and description. */
.brand-identity .brand-icon{border-radius:0}

/* Shared 4px spacing rhythm, applied after responsive component rules. */
:root{--rhythm:4px;--gap-small:calc(2 * var(--rhythm));--gap-medium:calc(3 * var(--rhythm));--gap-large:calc(4 * var(--rhythm));--card-gap:16px}
.site-shell.nm-panel{--frame-inset:var(--gap-large);column-gap:var(--gap-large);row-gap:0}
.page,.news-section{gap:var(--frame-inset)}
.sidebar{padding:0}
.brand-block{gap:var(--gap-medium);padding-top:var(--gap-large);margin:0 0 calc(2 * var(--gap-large))}
.brand-identity,.brand-block .site-brand,.brand-block .site-description{max-width:100%}
.sidebar nav{gap:var(--gap-large)}
.nav-news.nm-scroll{padding:var(--gap-small)}
.nav-link,.nav-link.active.nm-button{padding:var(--gap-small);min-height:36px}
.sidebar .nm-accordion{gap:var(--gap-medium)}
.sidebar .nm-disclosure-trigger{--disclosure-height:40px;min-height:var(--disclosure-height);padding-inline-start:var(--gap-medium)}
.sidebar .nm-disclosure-body{padding:var(--gap-small) var(--gap-small) 0 var(--gap-medium)}
.subnav{padding-inline-start:var(--gap-medium)}
.subnav a{min-height:36px;padding:var(--gap-small) var(--rhythm)}
.sidebar-bottom{gap:var(--gap-small);margin:var(--gap-large) var(--gap-small) 0;padding-top:var(--gap-large)}
.posts-toolbar{gap:var(--gap-medium)}
.content-well.nm-scroll{padding:var(--frame-inset)}
.posts-frame-wrap .content-well{padding-bottom:calc(32px + 3 * var(--frame-inset))}
.posts-frame-wrap>.footer-directory{left:var(--frame-inset);bottom:var(--frame-inset)}
.news-card{padding:0}
.card-body{padding:var(--gap-medium) var(--rhythm) var(--rhythm)}
.news-card h2{margin-bottom:var(--gap-small)}
.more-row{gap:var(--gap-medium);margin:var(--gap-large) 0 0}
.soft-button.nm-button-text{gap:var(--gap-medium);min-height:36px;padding:var(--gap-small) var(--gap-medium)}
footer{padding:0}
.footer-bottom{gap:var(--gap-large);min-height:32px}
.footer-main{gap:var(--gap-large);padding:var(--gap-small) 0;margin-bottom:var(--frame-inset)}
.footer-directory>summary{min-height:32px;padding:var(--gap-small) var(--gap-medium)}
.dialog-close{margin-bottom:var(--gap-large)}
.reader-image{margin-bottom:var(--gap-large)}
dialog h2{margin:var(--gap-large) 0}dialog p{margin-bottom:var(--gap-large)}
@media(max-width:850px){
 .site-shell.nm-panel{--frame-inset:var(--gap-medium)}
 .sidebar{padding:var(--gap-large)}
 .sidebar .nm-disclosure-trigger{--disclosure-height:44px}
 .subnav a{min-height:40px}
 .mobile-header{padding:0 var(--gap-small);gap:var(--gap-medium)}
}
@media(max-width:560px){
 :root{--card-gap:12px}
 .footer-bottom{gap:var(--gap-small) var(--gap-medium);min-height:48px}
 .footer-directory>summary{padding:var(--gap-small)}
 dialog{padding:var(--gap-large)}
}
