/* The paper stays quiet; the animated graph lives outside its edges. */
:root{
  color-scheme:light;
  --ink:#263129;--muted:#626d62;--line:#dde2d8;--blue:#3157ac;--purple:#7944bb;
  --paper:#fff;--pale:#f4f6f2;--accent:#5d793f;--heading:#34462d;
  --code:#f5f7f9;--code-ink:#233247;--inline-code:#eef2f4;--green-wash:#eef4e8;
  --success:#286148;--warning:#94531f;--error:#a12832;--diagram-filter:none;
  --syntax-keyword:#7846a2;--syntax-type:#075f77;--syntax-title:#2148a5;
  --syntax-number:#9b4b23;--syntax-string:#23663e;--syntax-comment:#647081;
  --syntax-meta:#79552c;--syntax-symbol:#8c354f;
}
:root[data-theme="dark"]{color-scheme:dark;
  --ink:#e0e5dc;--muted:#a5b0a1;--line:#364034;--blue:#a6bcff;--purple:#cfaaee;
  --paper:#191e1a;--pale:#232a24;--accent:#a2bb7b;--heading:#c8d8b7;
  --code:#202825;--code-ink:#dde6dc;--inline-code:#29322c;--green-wash:#303d2c;
  --success:#a0d3b3;--warning:#e0b287;--error:#f0a6ac;--diagram-filter:invert(.87) hue-rotate(180deg);
  --syntax-keyword:#d8adee;--syntax-type:#8ed0df;--syntax-title:#a6bcff;
  --syntax-number:#edb88f;--syntax-string:#a1d5ac;--syntax-comment:#a2afa5;
  --syntax-meta:#d9c298;--syntax-symbol:#edabc1;}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]){color-scheme:dark;
  --ink:#e0e5dc;--muted:#a5b0a1;--line:#364034;--blue:#a6bcff;--purple:#cfaaee;
  --paper:#191e1a;--pale:#232a24;--accent:#a2bb7b;--heading:#c8d8b7;
  --code:#202825;--code-ink:#dde6dc;--inline-code:#29322c;--green-wash:#303d2c;
  --success:#a0d3b3;--warning:#e0b287;--error:#f0a6ac;--diagram-filter:invert(.87) hue-rotate(180deg);
  --syntax-keyword:#d8adee;--syntax-type:#8ed0df;--syntax-title:#a6bcff;
  --syntax-number:#edb88f;--syntax-string:#a1d5ac;--syntax-comment:#a2afa5;
  --syntax-meta:#d9c298;--syntax-symbol:#edabc1;}}
body{background:var(--paper);isolation:isolate}
.reader-masthead,.reader-layout{background:var(--paper);position:relative}
.reader-layout{min-height:calc(100vh - 131px)}
.reader-masthead{z-index:2;border-color:var(--line)}
.margin-cells{position:fixed;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none;
  mask-image:linear-gradient(to right,#000,transparent max(0px,calc((100vw - 1138px)/2)),transparent min(100vw,calc((100vw + 1138px)/2)),#000)}
.reader-masthead .wordmark,.calendar-month,.calendar-years [aria-current],.calendar-day a,
.archive-sidebar h2,.archive-toggle,.calendar-posts h3,.blogroll h3,.blogroll a,
.series-navigation [aria-current=page],.chronological .archive-year{color:var(--heading)}
.lambda-mark{color:var(--accent)}
.reader-masthead .tagline,.reader-masthead nav,.archive-sidebar,.calendar-day h4,.calendar-kind,
.blogroll a span,.post-navigation span,.post-navigation .all-entries,.figure-label,
.interactive-figure figcaption,.interactive-figure .figure-editorial,.lede{color:var(--muted)}
.reader-masthead nav a:hover{color:var(--heading)}
.prose a,.comment a{color:var(--blue);text-decoration-color:color-mix(in srgb,var(--blue) 40%,transparent)}
.prose code,.comment code{background:var(--inline-code)}
.prose pre,.implementation pre{background:var(--code);border-color:var(--line)}
.prose pre code,.implementation pre code{color:var(--code-ink);background:none}
.hljs-keyword{color:var(--syntax-keyword)}.hljs-type,.hljs-built_in{color:var(--syntax-type)}
.hljs-title,.hljs-function .hljs-title{color:var(--syntax-title)}
.hljs-number,.hljs-literal{color:var(--syntax-number)}.hljs-string,.hljs-char{color:var(--syntax-string)}
.hljs-comment{color:var(--syntax-comment)}.hljs-meta{color:var(--syntax-meta)}.hljs-symbol{color:var(--syntax-symbol)}
.archive-tools input,.archive-search-row select,.automaton-controls input,.automaton-controls select,
.automaton-controls button,.figure-controls select,.figure-controls button,.associative-inputs input,
.leaf input,textarea{background:var(--pale);color:var(--ink);border-color:var(--line)}
.experiment{background:var(--paper)}
.group-step,.half,.half-b,.leaf,.tree-node{background:var(--pale);border-color:var(--line)}
.group-result,.match,.ancestor-node circle{background:var(--green-wash);border-color:var(--line);color:var(--success)}
.prose .associativity-status,.tree-summary>span,#runtime.ready{color:var(--success)}
.associativity-status.failed,.associativity .failed,#runtime.failed,.match.failed{color:var(--error)}
.match.failed{background:var(--pale);border-color:var(--error)}
.group-result dl,dl,.interactive-figure{border-color:var(--line)}
.changed{background:var(--green-wash);color:var(--blue);border-color:var(--blue)}
.retained-key{background:var(--pale)}
.calendar-day:target{background:var(--green-wash);outline-color:var(--green-wash)}
.term-free,.bit-x{color:var(--warning)}.term-bound,.term-binder,.bit-y{color:var(--blue)}
.grid-cell,.tape-node rect,.tree-node circle{fill:var(--pale);stroke:var(--line)}
.region-cell,.active-node rect,.ancestor-node circle{fill:var(--green-wash);stroke:var(--accent)}
.selected-cell{fill:var(--accent)}.selected-key{fill:var(--paper)}
.axis,.tree-node .query-label{fill:var(--muted)}
.tape-node text,.tree-node text{fill:var(--ink)}.tape-node .adjoint{fill:var(--warning)}
.tape-edge,.tree-edge{stroke:var(--muted);color:var(--muted)}
.active-edge,.compared-node circle{stroke:var(--warning);color:var(--warning)}
.morton-path{stroke:var(--accent)}
.category-diagram img,.wavelet-diagram img{filter:var(--diagram-filter)}
.skip-link{background:var(--paper);color:var(--ink);border-color:var(--accent)}
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline-color:var(--accent)}
button:hover{background:var(--green-wash)}
::selection{background:var(--green-wash);color:var(--ink)}

.appearance{position:relative;font:inherit}
.appearance>summary{padding:8px 0;list-style:none;white-space:nowrap}
.appearance>summary::-webkit-details-marker{display:none}
.appearance>summary:hover{color:var(--heading)}
.appearance-panel{position:absolute;right:0;top:100%;width:244px;background:var(--paper);color:var(--ink);
  border:1px solid var(--line);border-radius:6px;padding:18px;box-shadow:0 8px 30px #0002;text-align:left;z-index:10}
.appearance-panel fieldset{border:0;padding:0;margin:0 0 18px}
.appearance-panel legend{font-weight:600;margin-bottom:8px}
.theme-options{display:flex;gap:12px}
.theme-options label{display:flex;align-items:center;gap:4px;cursor:pointer;min-height:32px}
.theme-options input{accent-color:var(--accent);margin:0}
.background-label{display:block;font-weight:600;margin-bottom:8px}
.appearance-panel select{width:100%;padding:7px;border:1px solid var(--line);border-radius:3px;background:var(--pale);color:var(--ink);font:inherit}
.appearance-panel p{font-size:0.6875rem;color:var(--muted);margin:10px 0 0}
@media(max-width:1000px){.margin-cells{display:none}body{background:var(--paper)}}
@media(max-width:700px){.appearance-panel{right:auto;left:0}.reader-masthead nav{gap:0 18px}.appearance{position:static}.masthead-links{position:relative}.appearance-panel{top:100%;left:43px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
@media print{
  :root,:root[data-theme="dark"]{
  color-scheme:light;
  --ink:#263129;--muted:#626d62;--line:#dde2d8;--blue:#3157ac;--purple:#7944bb;
  --paper:#fff;--pale:#f4f6f2;--accent:#5d793f;--heading:#34462d;
  --code:#f5f7f9;--code-ink:#233247;--inline-code:#eef2f4;--green-wash:#eef4e8;
  --success:#286148;--warning:#94531f;--error:#a12832;--diagram-filter:none;
  --syntax-keyword:#7846a2;--syntax-type:#075f77;--syntax-title:#2148a5;
  --syntax-number:#9b4b23;--syntax-string:#23663e;--syntax-comment:#647081;
  --syntax-meta:#79552c;--syntax-symbol:#8c354f;}
  body,.reader-layout,.reader-masthead{background:#fff}
  .margin-cells,.appearance{display:none!important}
}

/* Respect the browser's base font size, then apply the reader's saved choice. */
html{font-size:calc(100% * var(--reader-text-scale,1))}
.article-meta,.archive-tools label,.archive-tools p,.entry-date,.entry-date time,
.archive-sidebar,.archive-month-grid,.blogroll a span,.reader-masthead nav{font-size:1rem}
.entry-author,.blogroll a{font-size:1.125rem}
.prose{font-size:1.25rem}
.prose pre,.implementation pre{font-size:.9375rem}
.reader-masthead{flex-wrap:wrap}
.reader-masthead nav{flex-wrap:wrap;justify-content:flex-end}
.masthead-links{max-width:100%}
.entry-date{flex-wrap:wrap}
.entry-date>span{margin-left:auto}
.appearance-panel{width:min(320px,calc(100vw - 44px));max-height:calc(100dvh - 32px);overflow-y:auto}
.theme-options{flex-wrap:wrap}
.text-size-buttons{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.text-size-buttons button{min-width:44px;min-height:44px;padding:6px 10px}
.text-size-buttons output{display:inline;font:inherit;font-variant-numeric:tabular-nums;min-width:4ch;text-align:center;letter-spacing:0}
.text-size-buttons button:disabled{cursor:default}
@media(max-width:700px){
  .reader-masthead nav{justify-content:flex-start}
  .appearance-panel{position:fixed;top:16px;left:22px;right:22px;width:auto}
  .reader-masthead .wordmark{font-size:clamp(1.15rem,6.5vw,1.625rem)}
}
.reading,.archive-sidebar{overflow-wrap:anywhere}
.appearance-done{min-height:44px;width:100%;margin-top:8px}

/* Give larger text real room before spending viewport space on decoration. */
:root{--reader-frame:71.125rem}
.reader-masthead,.reader-layout{max-width:var(--reader-frame)}
.reader-layout{grid-template-columns:minmax(0,1fr) 15rem;gap:2.5rem}
.reader-layout:has(.archive-disclosure:not([open])){grid-template-columns:minmax(0,1fr) 2.75rem;gap:1.5rem}
.margin-cells{mask-image:linear-gradient(to right,#000,transparent max(0px,calc((100vw - var(--reader-frame))/2)),transparent min(100vw,calc((100vw + var(--reader-frame))/2)),#000)}
:root[data-reader-layout="full"],:root[data-reader-layout="drawer"]{--reader-frame:100%}
:root:not([data-reader-layout="margins"]) .margin-cells{display:none}
:root[data-reader-layout="drawer"] .reader-layout{display:flex;flex-direction:column;gap:0}
:root[data-reader-layout="drawer"] .archive-sidebar{position:static;max-height:none;width:100%;max-width:none;margin:18px 0 0;overflow:visible;scrollbar-gutter:auto}
:root[data-reader-layout="drawer"] .archive-toggle{writing-mode:horizontal-tb;justify-content:space-between;min-height:44px;padding:10px 0;border:0;border-bottom:1px solid var(--line);font:.875rem/1.5 system-ui,sans-serif}
:root[data-reader-layout="drawer"] .archive-toggle-icon{transform:rotate(-90deg)}
:root[data-reader-layout="drawer"] .archive-disclosure[open]>.archive-toggle .archive-toggle-icon{transform:rotate(90deg)}
:root[data-reader-layout="drawer"] .archive-panel{max-width:30rem;margin:20px auto 24px;padding:0 8px}
@media(max-width:1000px){.reader-layout,.reader-layout:has(.archive-disclosure:not([open])){gap:0}}
