/* Unsolved Historical Ciphers — shared site styles (rebuilt 2026-09-16: tokens for two themes, one nav, contents strip) */
/* Type spec: one serif family (Source Serif 4) for body, headings and UI (--serif/--display/--ui). Mono (--mono) only for data: code, pre, .ct ciphertext, numeric table cells. Historical plaintext (--period) uses the same serif. */
@import url('https://fonts.googleapis.com/css2?family=Source+Serif+4:ital,wght@0,300..700;1,300..700&family=JetBrains+Mono:wght@400;600&display=swap');

:root{
  --bg:#0c0f15; --bg2:#121724; --panel:rgba(255,255,255,.035); --panel2:rgba(255,255,255,.06); --panel3:#090b10;
  --ink:#e9e4d8; --ink2:#c9c3b4; --muted:#8f8a7d; --head:#ffffff; --rule:rgba(233,228,216,.13);
  --gold:#d9ac52; --gold2:#f0cf86; --gold-ink:#1a1408; --red:#ff8d7e; --red-bg:rgba(255,141,126,.13);
  --blue:#7fb3ff; --blue-bg:rgba(127,179,255,.13); --green:#6fd39a; --green-bg:rgba(111,211,154,.13);
  --amber:#ecc25a; --amber-bg:rgba(236,194,90,.14); --grey-bg:rgba(255,255,255,.07); --violet:#b9a8ff; --violet-bg:rgba(180,160,255,.14);
  --shadow:0 18px 50px rgba(0,0,0,.45); --navbg:rgba(12,15,21,.72);
  --glow1:rgba(217,172,82,.12); --glow2:rgba(127,179,255,.10);
  --serif:"Source Serif 4",Georgia,serif; --display:"Source Serif 4",Georgia,serif; --ui:"Source Serif 4",Georgia,serif; --mono:"JetBrains Mono",ui-monospace,Consolas,monospace;
  --maxw:980px; --radius:14px;
  color-scheme:dark;
}
:root[data-theme="light"]{
  --bg:#f6f1e7; --bg2:#efe7d8; --panel:rgba(30,24,12,.04); --panel2:rgba(30,24,12,.07); --panel3:#fbf8f1;
  --ink:#1f1b14; --ink2:#3f3930; --muted:#6f685c; --head:#14110b; --rule:rgba(31,27,20,.14);
  --gold:#8a6716; --gold2:#6f5210; --gold-ink:#fff7e6; --red:#b3402f; --red-bg:rgba(179,64,47,.10);
  --blue:#2b5fa8; --blue-bg:rgba(43,95,168,.10); --green:#2f7d4f; --green-bg:rgba(47,125,79,.10);
  --amber:#9a6d05; --amber-bg:rgba(154,109,5,.12); --grey-bg:rgba(31,27,20,.06); --violet:#5f4bb3; --violet-bg:rgba(95,75,179,.10);
  --shadow:0 14px 40px rgba(60,40,10,.12); --navbg:rgba(246,241,231,.82);
  --glow1:rgba(217,172,82,.22); --glow2:rgba(43,95,168,.10);
  color-scheme:light;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:4.5rem}
body{margin:0;background:var(--bg);color:var(--ink);font:17.5px/1.6 var(--serif);
  background-image:
    radial-gradient(1200px 600px at 15% -10%,var(--glow1),transparent 60%),
    radial-gradient(900px 500px at 95% 10%,var(--glow2),transparent 60%),
    linear-gradient(var(--bg),var(--bg2) 60%,var(--bg));}
a{color:var(--gold2);text-decoration:none;border-bottom:1px solid color-mix(in srgb,var(--gold2) 40%,transparent);transition:border-color .2s,color .2s}
a:hover{color:var(--head);border-bottom-color:var(--head)}
::selection{background:rgba(217,172,82,.35)}
:focus-visible{outline:2px solid var(--gold);outline-offset:2px;border-radius:4px}
img{max-width:100%}

/* ---------------------------------------------------------------- header / nav */
.nav{position:sticky;top:0;z-index:50;backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);
  background:var(--navbg);border-bottom:1px solid var(--rule)}
.nav .in{max-width:var(--maxw);margin:0 auto;padding:.6rem 1.2rem;display:flex;align-items:center;gap:1.2rem}
.nav .brand{font-family:var(--display);font-weight:600;font-size:1rem;letter-spacing:.01em;color:var(--ink);border:0;display:flex;align-items:center;gap:.55rem;white-space:nowrap}
.nav .brand .glyph{font-family:var(--ui);font-size:0.8rem;color:var(--gold);background:var(--panel2);border:1px solid var(--rule);padding:.15rem .4rem;border-radius:6px}
.nav .links{display:flex;align-items:center;gap:1.1rem;margin-left:auto;font-size:0.9rem}
.nav .links > a{color:var(--ink2);border:0;padding:.25rem 0;position:relative;white-space:nowrap}
.nav .links > a::after,.nav .menu > summary::after{content:"";position:absolute;left:0;right:100%;bottom:-2px;height:1px;background:var(--gold);transition:right .25s}
.nav .links > a:hover::after,.nav .links > a.active::after,.nav .menu > summary:hover::after,.nav .menu > summary.active::after,.nav .menu[open] > summary::after{right:0}
.nav .links > a.active,.nav .menu > summary.active{color:var(--gold2)}
.nav .links .ext{color:var(--muted)}
.nav .theme{margin:0;padding:.35rem;background:transparent;color:var(--ink2);border:1px solid var(--rule);border-radius:8px;display:inline-flex;line-height:0;cursor:pointer}
.nav .theme:hover{color:var(--gold2);border-color:var(--gold);transform:none;box-shadow:none}
.nav .menu{position:relative}
.nav .menu > summary{list-style:none;cursor:pointer;color:var(--ink2);padding:.25rem 0;position:relative;display:inline-flex;align-items:center;gap:.4rem;white-space:nowrap;user-select:none}
.nav .menu > summary::-webkit-details-marker{display:none}
.nav .menu[open] > summary{color:var(--gold2)}
.nav .menu[open] > summary svg{transform:rotate(180deg)}
.nav .menu svg{transition:transform .2s}
.nav .panel{position:absolute;left:50%;transform:translateX(-50%);top:calc(100% + .9rem);width:min(800px,calc(100vw - 2rem));
  background:var(--bg2);border:1px solid var(--rule);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.1rem 1.2rem;
  display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.9rem 1.4rem;z-index:60}
.nav .panel::before{content:"";position:absolute;top:-7px;left:50%;width:12px;height:12px;background:var(--bg2);border-left:1px solid var(--rule);border-top:1px solid var(--rule);transform:translateX(-50%) rotate(45deg)}
.nav .panel h4{margin:0 0 .4rem;font-family:var(--ui);font-size:0.8rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);font-weight:600}
.nav .panel ul{list-style:none;margin:0;padding:0}
.nav .panel li a{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.6rem;padding:.35rem .5rem;margin:0 -.5rem;border:0;border-radius:8px;color:var(--ink)}
.nav .panel li a:hover,.nav .panel li a[aria-current]{background:var(--panel2);color:var(--head)}
.nav .panel li a b{font-weight:500;font-size:0.9rem;white-space:nowrap}
.nav .panel li a .yr{font-family:var(--ui);font-size:0.8rem;color:var(--muted)}
.nav .panel .st{font-size:0.8rem;padding:.05em .5em .05em .45em}
.navtoggle{display:none;margin:0 0 0 auto;padding:.45rem .6rem;background:transparent;color:var(--ink2);border:1px solid var(--rule);border-radius:8px;cursor:pointer;flex-direction:column;gap:4px;align-items:center;justify-content:center;width:44px;height:38px}
.navtoggle span{display:block;width:18px;height:2px;background:currentColor;border-radius:2px;transition:transform .2s,opacity .2s}
.navtoggle i{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.navtoggle:hover{transform:none;box-shadow:none;color:var(--gold2);border-color:var(--gold)}
.nav.open .navtoggle span:nth-child(1){transform:translateY(6px) rotate(45deg)}
.nav.open .navtoggle span:nth-child(2){opacity:0}
.nav.open .navtoggle span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}
@media (max-width:860px){
  .nav .in{flex-wrap:wrap;gap:.6rem 1rem}
  .nav .brand span:last-child{font-size:0.9rem}
  .navtoggle{display:flex}
  .nav .links{display:none;width:100%;flex-direction:column;align-items:stretch;gap:.1rem;padding:.4rem 0 .6rem;font-size:1rem}
  .nav.open .links{display:flex}
  .nav .links > a,.nav .menu > summary{padding:.55rem .2rem;border-bottom:1px solid var(--rule)}
  .nav .links > a::after,.nav .menu > summary::after{display:none}
  .nav .menu{width:100%}
  .nav .menu > summary{display:flex;justify-content:space-between}
  .nav .panel{position:static;transform:none;width:auto;box-shadow:none;border:0;border-bottom:1px solid var(--rule);border-radius:0;padding:.6rem .2rem .9rem;background:transparent;grid-template-columns:1fr}
  .nav .panel::before{display:none}
  .nav .theme{align-self:flex-start;margin-top:.6rem}
}

/* ---------------------------------------------------------------- hero */
.hero{max-width:var(--maxw);margin:0 auto;padding:3.8rem 1.2rem 1.6rem;position:relative}
.hero .kicker{font-family:var(--ui);font-size:0.8rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);margin:0 0 .9rem}
.hero h1{font-family:var(--display);font-weight:500;font-variation-settings:"opsz" 144;font-size:clamp(2rem,4.8vw,3.4rem);line-height:1.1;margin:0 0 .9rem;letter-spacing:-.01em;color:var(--head)}
.hero .sub{color:var(--ink2);margin:.25rem 0;font-size:1rem;max-width:72ch}
.hero .sub.small{font-size:0.9rem;margin-top:.5rem}
.hero .meta{color:var(--muted);font-size:0.9rem;margin-top:1rem;font-family:var(--ui)}
.hero .meta time{color:var(--ink2)}
.hero .outcome{font-family:var(--ui);font-size:0.8rem;margin:.35rem 0 0;color:var(--ink2)}
.hero .outcome a{color:var(--gold);text-decoration:underline dotted;text-underline-offset:3px}
.hero .cipherstrip{position:absolute;right:1.2rem;top:1.4rem;font-family:var(--mono);font-size:0.8rem;color:color-mix(in srgb,var(--gold) 40%,transparent);letter-spacing:.35em;user-select:none;pointer-events:none;text-align:right;line-height:1.9}
@media (max-width:760px){.hero .cipherstrip{display:none}}
/* the CYPHERSOLVER wordmark on the home page: each letter deciphers out of a glyph, a gold sheen sweeps across, and
   under each letter sits its cipher number, the way a clerk wrote the reading over the groups (E and R have two). */
:root{--wm-hi:#fff6dc}
:root[data-theme="light"]{--wm-hi:#e8bd62}
.hero h1.wordmark{font-family:var(--display);font-weight:700;font-variation-settings:"opsz" 144;font-size:clamp(2rem,9.1vw,5.4rem);
  line-height:1;letter-spacing:.045em;margin:.15rem 0 .6rem;padding-bottom:.42em;color:var(--gold)}
.wm{display:inline-flex;align-items:center;position:relative;animation:wmIn .7s ease-out both;
  filter:drop-shadow(0 0 .28em color-mix(in srgb,var(--gold) 30%,transparent))}
.wm::before{content:"";position:absolute;inset:-35% -8% -55%;z-index:-1;pointer-events:none;
  background:radial-gradient(closest-side,color-mix(in srgb,var(--gold) 16%,transparent),transparent);animation:wmBreathe 6s ease-in-out infinite}
.wm .l{position:relative;display:inline-block;transition:filter .5s ease-out,transform .5s ease-out;
  background:linear-gradient(100deg,var(--gold) 0 38%,var(--gold2) 46%,var(--wm-hi) 50%,var(--gold2) 54%,var(--gold) 62% 100%);
  background-size:500% 100%;background-position:100% 0;-webkit-background-clip:text;background-clip:text;
  color:transparent;-webkit-text-fill-color:transparent;animation:wmSheen 7s ease-in-out infinite;animation-delay:calc(var(--i) * .07s)}
.wm .l::after{content:attr(data-n);position:absolute;left:0;right:0;top:calc(100% + .14em);text-align:center;
  font:600 max(.55rem,.13em)/1 var(--ui);letter-spacing:.06em;color:var(--muted);-webkit-text-fill-color:var(--muted);transition:color .4s}
.wm .l.enc{background:none}
.wm .l.enc::before{content:attr(data-g);position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font:400 .6em/1 var(--ui);color:var(--gold);-webkit-text-fill-color:var(--gold);text-shadow:0 0 .4em color-mix(in srgb,var(--gold) 70%,transparent);opacity:.85}
.wm .l.enc::after{color:var(--gold2);-webkit-text-fill-color:var(--gold2)}
.wm .l.flash{filter:brightness(1.9);transform:translateY(-.03em);transition:none}
.wm .caret{display:inline-block;width:.07em;height:.74em;margin-left:.14em;background:var(--gold);border-radius:1px;
  box-shadow:0 0 .3em var(--gold);animation:wmBlink 1.1s steps(1) infinite}
@keyframes wmSheen{0%{background-position:100% 0}35%,100%{background-position:0 0}}
@keyframes wmBlink{50%{opacity:0}}
@keyframes wmBreathe{0%,100%{opacity:.55}50%{opacity:1}}
@keyframes wmIn{from{opacity:0;transform:translateY(.08em);filter:blur(6px)}}
.hero .tagline{font-family:var(--display);font-style:italic;font-weight:400;font-size:clamp(1.15rem,2.6vw,1.6rem);color:var(--head);margin:0 0 1rem;letter-spacing:.01em}
.hero .tagline .strike{line-height:1.1}.hero .tagline .strike::after{top:.63em}   /* through the middle of the lowercase, at this line height */
@media (prefers-reduced-motion: reduce){.wm,.wm::before,.wm .l,.wm .caret{animation:none}.wm .l{background-position:0 0}}
/* with the wordmark across the top, the live cipher strip moves down beside the introduction, or into the flow when narrow */
.hero:has(.wordmark) .cipherstrip{top:calc(5.4rem + clamp(2rem,9.1vw,5.4rem) * 1.5)}
.hero:has(.wordmark) > h1.wordmark,.hero:has(.wordmark) > .kicker{margin-right:0}
@media (max-width:1060px){.hero:has(.wordmark) .cipherstrip{display:block;position:static;text-align:left;margin:0 0 1.1rem;min-height:9.5rem}
  .hero:has(h1.wordmark):has(.cipherstrip.live) > .sub{margin-right:0}}
.nav .brand > span:not(.glyph){text-transform:uppercase;letter-spacing:.17em;font-size:0.9rem;font-weight:700}
.hero .parties{display:flex;align-items:center;gap:1.1rem;margin:.2rem 0 1rem;flex-wrap:wrap}
.hero .party{margin:0;display:flex;align-items:center;gap:.65rem}
.hero .party img{width:84px;height:84px;border-radius:50%;object-fit:cover;border:1px solid color-mix(in srgb,var(--gold) 55%,transparent);box-shadow:0 0 0 3px var(--bg),0 0 0 4px var(--rule);filter:sepia(.18) saturate(.9);background:var(--panel2)}
.hero .party figcaption{font-style:normal;text-align:left;font-size:0.9rem;color:var(--head);line-height:1.25;max-width:16ch}
.hero .party .role{display:block;font-family:var(--ui);font-size:0.8rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.hero .parties .arrow{color:var(--gold);font-size:1.25rem}
.avs{display:inline-flex;vertical-align:middle}
.avs img{width:30px;height:30px;border-radius:50%;object-fit:cover;border:1px solid color-mix(in srgb,var(--gold) 55%,transparent);box-shadow:0 0 0 2px var(--panel);filter:sepia(.18) saturate(.9);background:var(--panel2)}
.avs img+img{margin-left:-9px}
.card .avs{position:absolute;left:1.4rem;bottom:.8rem}
ul.list.wl .t .avs{margin-right:.55rem}
ul.list.wl .t .avs img{width:24px;height:24px;margin-top:-3px}
ul.list.wl .t .avs img+img{margin-left:-7px}
@media (max-width:760px){.hero .parties{flex-wrap:nowrap;gap:.5rem}.hero .party{gap:.45rem}.hero .party img{width:56px;height:56px}.hero .party figcaption{font-size:0.8rem;max-width:11ch}.hero .parties .arrow{font-size:1rem}}
.jump{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.4rem 0 .2rem}
.jump a,.toc a{font-family:var(--ui);font-size:0.8rem;letter-spacing:.04em;padding:.4rem .85rem;border-radius:999px;
  background:var(--panel);border:1px solid var(--rule);color:var(--ink2);transition:all .2s;white-space:nowrap}
.jump a:hover,.toc a:hover{background:var(--amber-bg);border-color:var(--gold);color:var(--head)}

/* contents strip on write-up pages */
.toc{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem;margin:.4rem 0 1.6rem;padding:.7rem 0 .9rem;border-bottom:1px solid var(--rule)}
.toc > span{font-family:var(--ui);font-size:0.8rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-right:.3rem}
.toc a.on{background:var(--gold);color:var(--gold-ink);border-color:var(--gold)}

main{max-width:var(--maxw);margin:0 auto;padding:0 1.2rem 5rem}
h2{font-family:var(--display);font-weight:500;font-size:1.6rem;margin:3rem 0 1rem;color:var(--head);letter-spacing:-.01em;display:flex;align-items:baseline;gap:.7rem;flex-wrap:wrap}
h2 .num{font-family:var(--ui);font-size:0.8rem;color:var(--gold);letter-spacing:.1em}
h3{font-family:var(--display);font-weight:500;font-size:1.25rem;margin:2rem 0 .6rem;color:var(--gold2)}
p{margin:.7rem 0}
.muted,small{color:var(--muted)}
ol li,ul li{margin:.35rem 0}
strong{color:var(--head);font-weight:600}
em{color:var(--ink)}
hr{border:0;border-top:1px solid var(--rule);margin:2.4rem 0}

/* ---------------------------------------------------------------- panels */
.callout{background:linear-gradient(135deg,color-mix(in srgb,var(--gold) 16%,transparent),color-mix(in srgb,var(--gold) 4%,transparent));border:1px solid color-mix(in srgb,var(--gold) 40%,transparent);
  border-radius:var(--radius);padding:1.1rem 1.3rem;margin:1.6rem 0;box-shadow:var(--shadow)}
.callout.blue{background:linear-gradient(135deg,color-mix(in srgb,var(--blue) 16%,transparent),color-mix(in srgb,var(--blue) 3%,transparent));border-color:color-mix(in srgb,var(--blue) 40%,transparent)}
.callout.amber{background:var(--amber-bg);border-color:color-mix(in srgb,var(--amber) 45%,transparent);box-shadow:none}
.callout h3{margin-top:0}
.callout > :first-child{margin-top:0}.callout > :last-child{margin-bottom:0}
/* "At a glance": the write-up's summary as labelled rows, stacked on a phone */
.glance .gl-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.4rem .8rem;margin:0 0 .8rem}
.glance .gl-top strong{font:600 0.8rem var(--ui);letter-spacing:.16em;text-transform:uppercase;color:var(--gold)}
.glance .gl-res{font:600 0.8rem var(--ui);padding:.2rem .75rem;border-radius:999px;background:var(--gold);color:var(--gold-ink)}
.glance dl{display:grid;grid-template-columns:8.5rem 1fr;gap:.65rem 1.2rem;margin:0}
.glance dt{font:600 0.8rem/1.9 var(--ui);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.glance dd{margin:0;line-height:1.5}
@media (max-width:600px){.glance dl{grid-template-columns:1fr;gap:0}.glance dt{margin-top:.75rem;line-height:1.4}.glance dt:first-child{margin-top:0}}
blockquote{margin:1.2rem 0;padding:1rem 1.3rem;border-left:3px solid var(--gold);background:var(--panel);border-radius:0 var(--radius) var(--radius) 0;line-height:1.7}
blockquote.big{font-family:var(--display);font-size:1.45rem;font-weight:400;line-height:1.5;font-variation-settings:"opsz" 40}
blockquote .c{color:var(--red);font-weight:600;background:var(--red-bg);padding:0 .25em;border-radius:4px}
blockquote .k{color:var(--blue);font-weight:600;background:var(--blue-bg);padding:0 .25em;border-radius:4px}
.legend span{display:inline-block;margin-right:1.2rem}
.legend .c{color:var(--red)} .legend .k{color:var(--blue)}

code,.mono{font-family:var(--mono);font-size:.86em;background:var(--panel2);border:1px solid var(--rule);padding:.05em .35em;border-radius:5px;color:var(--gold2)}
pre{background:var(--panel3);border:1px solid var(--rule);padding:1rem 1.2rem;overflow-x:auto;font-family:var(--mono);font-size:0.9rem;line-height:1.6;border-radius:var(--radius);color:var(--ink2)}
pre code{background:transparent;border:0;padding:0;color:inherit;font-size:inherit}
.ct{font-family:var(--mono);font-size:0.8rem;line-height:1.7;background:var(--grey-bg);border:1px solid var(--rule);border-radius:8px;padding:.8rem 1rem;overflow-x:auto;white-space:pre}
.tw{overflow-x:auto}

/* ---------------------------------------------------------------- tables */
table{border-collapse:separate;border-spacing:0;width:100%;margin:1.2rem 0;font-size:0.9rem;background:var(--panel);border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden}
th,td{padding:.5rem .7rem;text-align:left;vertical-align:top;border-bottom:1px solid var(--rule)}
tr:last-child td{border-bottom:0}
th{background:var(--panel2);font-family:var(--ui);font-size:0.8rem;letter-spacing:.1em;text-transform:uppercase;color:var(--gold);font-weight:600}
tbody tr:hover td, tr:hover td{background:var(--panel)}
td.n,th.n{text-align:center;font-family:var(--mono)}
.H{color:var(--green)} .C{color:var(--blue)} .M{color:var(--amber)} .I{color:var(--red)}
@media (max-width:620px){table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}}

/* status pills */
.st{display:inline-flex;align-items:center;gap:.4em;padding:.1em .6em .1em .5em;border-radius:999px;font-family:var(--ui);font-size:0.8rem;letter-spacing:.04em;white-space:nowrap;border:1px solid transparent}
.st::before{content:"";flex:none;width:.5em;height:.5em;border-radius:50%;background:currentColor;box-shadow:0 0 8px currentColor}
.solved{background:var(--green-bg);color:var(--green);border-color:color-mix(in srgb,var(--green) 35%,transparent)}
.found{background:var(--blue-bg);color:var(--blue);border-color:color-mix(in srgb,var(--blue) 35%,transparent)}
.partial{background:var(--amber-bg);color:var(--amber);border-color:color-mix(in srgb,var(--amber) 35%,transparent)}
.stuck{background:var(--red-bg);color:var(--red);border-color:color-mix(in srgb,var(--red) 35%,transparent)}
.offline{background:var(--violet-bg);color:var(--violet);border-color:color-mix(in srgb,var(--violet) 40%,transparent)}
.todo{background:var(--grey-bg);color:var(--muted);border-color:var(--rule)}
.infeasible{background:var(--grey-bg);color:var(--muted);border-color:var(--rule);text-decoration:line-through}

/* reason tags and item blocks shared by the survey and attempt pages */
.why{display:inline-block;padding:.08em .55em;border-radius:6px;font-family:var(--ui);font-size:0.8rem;letter-spacing:.05em;white-space:nowrap;border:1px solid transparent;vertical-align:middle}
.w-yes,.w-open{background:var(--green-bg);color:var(--green);border-color:color-mix(in srgb,var(--green) 35%,transparent)}
.w-no,.w-otp{background:var(--red-bg);color:var(--red);border-color:color-mix(in srgb,var(--red) 35%,transparent)}
.w-lang{background:var(--violet-bg);color:var(--violet);border-color:color-mix(in srgb,var(--violet) 40%,transparent)}
.w-short{background:var(--amber-bg);color:var(--amber);border-color:color-mix(in srgb,var(--amber) 35%,transparent)}
.w-fake{background:var(--grey-bg);color:var(--muted);border-color:var(--rule)}
.item{border-left:2px solid var(--rule);padding:.1rem 0 .1rem 1rem;margin:1.5rem 0}
.item h3{margin:.1rem 0 .45rem}
.item .meta2,.meta2{font-family:var(--ui);font-size:0.8rem;color:var(--muted);letter-spacing:.04em;margin-bottom:.5rem}

/* ---------------------------------------------------------------- cards */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.2rem;margin:1.4rem 0}
.card{position:relative;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--rule);border-radius:var(--radius);padding:1.3rem 1.4rem 2.4rem;color:var(--ink);
  transition:transform .25s ease,border-color .25s,box-shadow .25s;overflow:hidden}
.card::before{content:"";position:absolute;inset:0;background:radial-gradient(500px 200px at var(--mx,20%) 0%,color-mix(in srgb,var(--gold) 16%,transparent),transparent 60%);opacity:0;transition:opacity .3s}
.card:hover{transform:translateY(-4px);border-color:color-mix(in srgb,var(--gold) 50%,transparent);box-shadow:var(--shadow)}
.card:hover::before{opacity:1}
.card .eyebrow{font-family:var(--ui);font-size:0.8rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);margin-bottom:.5rem;display:flex;justify-content:space-between;align-items:center;gap:.6rem;flex-wrap:wrap}
.card .eyebrow .when{margin-left:auto;color:var(--muted);text-transform:none;letter-spacing:.02em;white-space:nowrap}
.card h3{margin:0 0 .5rem;font-size:1.25rem;color:var(--head)}
.card p{color:var(--ink2);font-size:1rem;margin:.4rem 0}
.card .quote{font-family:var(--display);font-style:italic;color:var(--gold2);font-size:1rem;margin:.7rem 0 .2rem}
.card .go{position:absolute;right:1.2rem;bottom:1rem;font-family:var(--ui);font-size:0.8rem;color:var(--gold);opacity:.7;transition:transform .25s,opacity .25s}
.card:hover .go{transform:translateX(4px);opacity:1}

/* card thumbnails and lead figures */
.card.hasthumb{padding-top:0}
.card .thumb{display:block;width:calc(100% + 2.8rem);margin:0 -1.4rem .9rem;aspect-ratio:16/6;object-fit:cover;object-position:center 30%;
  border-bottom:1px solid var(--rule);filter:sepia(.35) contrast(1.02) brightness(.92);transition:filter .3s,transform .3s}
.card:hover .thumb{filter:sepia(.05) contrast(1.04) brightness(1);transform:scale(1.02)}
figure.lead{margin:0 0 2rem}
figure.lead img{max-height:420px;object-fit:cover;width:100%}
.bignews.hasart,.bn-panel.hasart{display:grid;grid-template-columns:1.4fr 1fr;gap:1.4rem;align-items:center}
/* rotating big-news: panels stacked in one grid cell so the card keeps one height; site.js switches .on */
.bn-track{display:grid}
.bn-panel{grid-area:1/1;opacity:0;transform:translateY(5px);transition:opacity .6s ease,transform .6s ease;pointer-events:none}
.bn-panel.on{opacity:1;transform:none;pointer-events:auto}
.bn-rot.instant .bn-panel{transition:none}
.bn-panel[hidden]{display:block;visibility:hidden}
.bn-panel.hasart[hidden]{display:grid}
.bn-panel.on[hidden]{visibility:visible}
.bn-panel.noart{display:flex;align-items:center}
.bn-panel.noart[hidden]{display:flex}
.bn-panel.noart > div{max-width:none}
.bn-ctl{position:absolute;top:1.1rem;right:1.2rem;z-index:2;display:flex;align-items:center;gap:.45rem}
.bn-ctl button{margin:0;padding:.2rem .55rem;background:color-mix(in srgb,var(--bg) 55%,transparent);color:var(--ink2);border:1px solid color-mix(in srgb,var(--gold) 45%,transparent);border-radius:999px;font-family:var(--ui);font-size:0.8rem;line-height:1.4;cursor:pointer;transform:none;box-shadow:none}
.bn-ctl button:hover{color:var(--gold2);border-color:var(--gold)}
.bn-ctl .bn-pause[aria-pressed="true"]{color:var(--gold-ink);background:var(--gold)}
.bn-dots{display:inline-flex;gap:.4rem;padding:0 .3rem}
.bn-dots button{width:.6rem;height:.6rem;padding:0;border-radius:50%;border:1px solid var(--gold);background:transparent;opacity:.55}
.bn-dots button[aria-selected="true"]{background:var(--gold);opacity:1;box-shadow:0 0 8px color-mix(in srgb,var(--gold) 60%,transparent)}
@media (max-width:760px){.bn-ctl{position:static;justify-content:flex-end;margin:0 0 .6rem}.bn-panel.hasart{grid-template-columns:1fr}}
@media (prefers-reduced-motion: reduce){.bn-panel{transition:none;transform:none}}
@media print{.bn-ctl{display:none}.bn-panel[hidden]{display:none}}
.bignews.hasart .art,.bn-panel .art{margin:0;border-radius:var(--radius);overflow:hidden;border:1px solid var(--rule);box-shadow:var(--shadow);aspect-ratio:4/3;max-height:340px}
.bignews.hasart .art > img,.bn-panel .art > img{width:100%;height:100%;object-fit:cover;display:block;filter:sepia(.15)}
@media (max-width:760px){.bignews.hasart{grid-template-columns:1fr}.bignews.hasart .art{aspect-ratio:16/9}}

/* progressive disclosure on the home page */
.showmore{display:inline-block;margin:.4rem 0 0;padding:.45rem 1rem;background:var(--panel);color:var(--ink2);border:1px solid var(--rule);border-radius:999px;font-size:0.8rem;letter-spacing:.05em}
.showmore:hover{background:var(--amber-bg);color:var(--head);border-color:var(--gold);transform:none;box-shadow:none}
.more[hidden]{display:none}
details.fold{margin:.6rem 0 1.2rem}
details.fold > summary{display:inline-block;padding:.45rem 1rem;background:var(--panel);color:var(--ink2);border:1px solid var(--rule);border-radius:999px;font-family:var(--ui);font-size:0.8rem;letter-spacing:.05em;cursor:pointer;list-style:none}
details.fold > summary::-webkit-details-marker{display:none}
details.fold[open] > summary{background:var(--gold);color:var(--gold-ink);border-color:var(--gold)}
details.fold > summary:hover{border-color:var(--gold);color:var(--head)}
details.fold[open] > summary:hover{color:var(--gold-ink)}
.tg-b p{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;cursor:pointer}
.tg.x .tg-b p{display:block;-webkit-line-clamp:unset;overflow:visible}
.tg-b p::after{content:""}
.tg .tgmore{font-family:var(--ui);font-size:0.8rem;color:var(--gold);margin-top:.35rem;cursor:pointer;letter-spacing:.05em}
.tg.x .tgmore{opacity:.7}
.card p:not(.quote){display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.card .quote{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.qhint{font-family:var(--ui);font-size:0.8rem;color:var(--muted);margin:.2rem 0 0}

/* compact write-up list under the featured cards */
h3.listhead{font-family:var(--ui);font-size:0.8rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:1.6rem 0 .4rem}
ul.list{list-style:none;padding:0;margin:0 0 1rem;border-top:1px solid var(--rule)}
ul.list li{margin:0}
ul.list a{display:grid;grid-template-columns:auto 1fr auto auto;gap:.9rem;align-items:center;padding:.6rem .4rem;border:0;border-bottom:1px solid var(--rule);color:var(--ink)}
ul.list a:hover{background:var(--panel);color:var(--head)}
ul.list .t{font-family:var(--display);font-size:1rem}
ul.list .yr{font-family:var(--ui);font-size:0.8rem;color:var(--muted)}
ul.list .dt{font-family:var(--ui);font-size:0.8rem;color:var(--muted);opacity:.85;white-space:nowrap;text-align:right}
@media (max-width:620px){ul.list a{grid-template-columns:1fr auto auto}ul.list .st{display:none}ul.list .dt{font-size:0.8rem}}

/* stats & progress */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem;margin:1.5rem 0}
.stat{background:var(--panel);border:1px solid var(--rule);border-radius:var(--radius);padding:1rem 1.1rem}
.stat b{display:block;font-family:var(--display);font-size:1.6rem;font-weight:500;line-height:1;color:var(--head)}
.stat span{font-family:var(--ui);font-size:0.8rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.bar{display:flex;height:12px;border-radius:999px;overflow:hidden;border:1px solid var(--rule);margin:1rem 0 .4rem;background:var(--panel)}
.bar span{display:block;height:100%}
.bar .s{background:var(--green)} .bar .f{background:var(--blue)} .bar .p{background:var(--amber)} .bar .o{background:var(--violet)} .bar .x{background:var(--red)} .bar .t{background:var(--grey-bg)}

/* figures */
figure{margin:1.8rem 0;text-align:center}
figure img{max-width:100%;border-radius:var(--radius);border:1px solid var(--rule);box-shadow:var(--shadow);filter:sepia(.2) contrast(1.04);transition:filter .3s,transform .3s}
figure img:hover{filter:sepia(0) contrast(1.04);transform:scale(1.01)}
figcaption{font-size:0.9rem;color:var(--muted);margin-top:.7rem;font-style:italic}
figcaption .credit{font-style:normal;font-size:0.8rem}

/* decoder */
#decoder{background:var(--panel);border:1px solid var(--rule);border-radius:var(--radius);padding:1.2rem 1.3rem}
#decoder textarea{width:100%;min-height:5.5rem;font-family:var(--mono);font-size:0.9rem;padding:.7rem .8rem;background:var(--panel3);color:var(--ink);border:1px solid var(--rule);border-radius:10px;resize:vertical}
#decoder textarea:focus{outline:none;border-color:var(--gold)}
button{font:inherit;font-family:var(--ui);font-size:0.8rem;letter-spacing:.06em;padding:.5rem 1.1rem;background:var(--gold);color:var(--gold-ink);border:0;border-radius:8px;cursor:pointer;margin-top:.7rem;font-weight:600;transition:transform .15s,box-shadow .15s}
button:hover{transform:translateY(-1px);box-shadow:0 8px 24px rgba(217,172,82,.35)}
.tiles{display:flex;flex-wrap:wrap;gap:.45rem .35rem;margin-top:1rem;align-items:flex-end;min-height:3rem}
.tile{display:flex;flex-direction:column;align-items:center;min-width:2.2rem;padding:.25rem .45rem;border-radius:8px;background:var(--panel2);border:1px solid var(--rule)}
.tile .p{font-family:"Fraunces",serif;font-style:italic;font-size:1rem;line-height:1.15;color:var(--gold2)}
.tile .g{font-family:var(--ui);font-size:0.8rem;color:var(--muted);letter-spacing:.03em}
.tile.plain{background:transparent;border-color:transparent}
.tile.plain .p{color:var(--ink2);font-style:normal}
.tile.unk .p{color:var(--red)} .tile.inf .p{color:var(--red)} .tile.unc .p{color:var(--amber)} .tile.code .p{color:var(--blue)}
details{margin:1.4rem 0}
details summary{cursor:pointer;color:var(--gold2);font-family:var(--ui);font-size:0.9rem;letter-spacing:.04em;padding:.5rem 0}
#keytable table{font-size:0.8rem} #keytable td{padding:.15rem .5rem}

/* reveal */

/* ---------------------------------------------------------------- footer */
footer{border-top:1px solid var(--rule);margin-top:3rem;padding:1.8rem 1.2rem 2.5rem;color:var(--muted);font-size:0.9rem}
footer .in{max-width:var(--maxw);margin:0 auto;display:flex;flex-wrap:wrap;gap:1rem 1.5rem;justify-content:space-between;align-items:center}
footer nav{display:flex;flex-wrap:wrap;gap:.6rem 1.1rem;font-family:var(--ui);font-size:0.8rem}
footer nav a{color:var(--ink2);border-bottom-color:transparent}
footer nav a:hover{color:var(--gold2);border-bottom-color:var(--gold2)}
/* the contact address is an image so it is not scraped; one per theme */
img.email{height:1.3em;width:auto;vertical-align:-.35em}
img.email.l,:root[data-theme="light"] img.email.d{display:none}
:root[data-theme="light"] img.email.l{display:inline}
@media (max-width:760px){body{font-size:16.5px}.hero{padding-top:2.6rem}h2{font-size:1.45rem}}

/* ---------------------------------------------------------------- priority queue */
.odds{display:inline-block;padding:.08em .5em;border-radius:6px;font-family:var(--ui);font-size:0.8rem;letter-spacing:.04em;white-space:nowrap;border:1px solid transparent}
.odds.hi{background:var(--green-bg);color:var(--green);border-color:color-mix(in srgb,var(--green) 35%,transparent)}
.odds.md{background:var(--amber-bg);color:var(--amber);border-color:color-mix(in srgb,var(--amber) 35%,transparent)}
.odds.lo{background:var(--red-bg);color:var(--red);border-color:color-mix(in srgb,var(--red) 35%,transparent)}
.odds.no{background:var(--grey-bg);color:var(--muted);border-color:var(--rule)}
.eff{font-family:var(--ui);font-size:0.8rem;color:var(--muted);white-space:nowrap}
.rank{font-family:var(--display);font-size:1.1rem;color:var(--gold);font-weight:500}
tr.done td{opacity:.72}
.grp td{background:var(--amber-bg);font-family:var(--ui);font-size:0.8rem;letter-spacing:.12em;text-transform:uppercase;color:var(--gold)}

.strike{position:relative;display:inline-block;white-space:nowrap}
.strike::after{content:"";position:absolute;left:-.04em;right:auto;top:.54em;height:.075em;width:0;
  background:linear-gradient(90deg,var(--gold),var(--gold2));border-radius:2px;
  box-shadow:0 0 14px rgba(217,172,82,.6);animation:strikeDraw 1.4s cubic-bezier(.65,.05,.36,1) .5s both}
@keyframes strikeDraw{from{width:0}to{width:calc(100% + .08em)}}
@media (prefers-reduced-motion: reduce){.strike::after{animation:none;width:calc(100% + .08em);opacity:1}}
.fam{display:inline-block;margin-left:.4em;padding:.05em .45em;border-radius:5px;font-family:var(--ui);font-size:0.8rem;letter-spacing:.06em;text-transform:uppercase;color:var(--violet);background:var(--violet-bg);border:1px solid color-mix(in srgb,var(--violet) 40%,transparent);vertical-align:middle}

.bignews{position:relative;margin:1.6rem 0 2rem;padding:1.5rem 1.6rem;border-radius:var(--radius);
  background:linear-gradient(135deg,color-mix(in srgb,var(--gold) 16%,transparent),color-mix(in srgb,var(--green) 10%,transparent) 55%,color-mix(in srgb,var(--gold) 6%,transparent));
  border:1px solid color-mix(in srgb,var(--gold) 50%,transparent);box-shadow:var(--shadow);overflow:hidden}
.bignews .tag{display:inline-flex;align-items:center;gap:.5em;font-family:var(--ui);font-size:0.8rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-ink);background:var(--gold);padding:.25em .7em;border-radius:999px;font-weight:700}
.bignews h2{font-size:clamp(1.35rem,3.2vw,2rem);margin:.7rem 0 .5rem;color:var(--head);border:0;padding:0;display:block}
.bignews h2 .strikeout{position:relative;white-space:nowrap}
.bignews h2 .strikeout::after{content:"";position:absolute;left:-.03em;top:.55em;height:.08em;width:0;background:var(--green);box-shadow:0 0 12px var(--green);border-radius:2px;animation:bigStrike 1.2s cubic-bezier(.65,.05,.36,1) .4s both}
@keyframes bigStrike{from{width:0}to{width:calc(100% + .06em)}}
@media (prefers-reduced-motion: reduce){.bignews h2 .strikeout::after{animation:none;width:calc(100% + .06em);opacity:1}}
.bignews p{margin:.5rem 0 0;max-width:68ch}
.bignews .stat2{display:flex;flex-wrap:wrap;gap:1.4rem;margin-top:1rem;font-family:var(--ui);font-size:0.8rem}
.bignews .stat2 b{display:block;font-family:var(--display);font-size:1.45rem;color:var(--gold);line-height:1.1}
.bignews .stat2 span{color:var(--muted)}
.bignews .cta{display:inline-block;margin-top:1.1rem;font-family:var(--ui);font-size:0.8rem;letter-spacing:.06em;padding:.5rem 1.1rem;border-radius:8px;background:var(--gold);color:var(--gold-ink);font-weight:700;border:0}
.bignews .cta:hover{transform:translateY(-1px);box-shadow:0 8px 22px rgba(217,172,82,.4);color:var(--gold-ink)}

.qfilter{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.4rem 0 .4rem}
.qf{font-family:var(--ui);font-size:0.8rem;letter-spacing:.06em;padding:.45rem .9rem;border-radius:999px;background:var(--panel);color:var(--ink2);border:1px solid var(--rule);cursor:pointer;margin:0;transition:background .2s,color .2s,border-color .2s}
.qf span{opacity:.55;margin-left:.45em;font-size:.9em}
.qf:hover{border-color:var(--gold);color:var(--head);transform:none;box-shadow:none}
.qf.on{background:var(--gold);color:var(--gold-ink);border-color:var(--gold);font-weight:700}
.qf.on span{opacity:.75}
h3.tier{display:flex;align-items:baseline;gap:.8rem;flex-wrap:wrap;margin:2.4rem 0 .9rem;font-family:var(--ui);font-size:0.8rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);padding-bottom:.5rem;border-bottom:1px solid var(--rule)}
h3.tier small{font-family:var(--serif);font-size:0.9rem;letter-spacing:0;text-transform:none;color:var(--muted);font-style:italic}
.tg{display:grid;grid-template-columns:3.4rem 1fr;gap:0 1rem;padding:.8rem 1.1rem .8rem .8rem;margin:.45rem 0;background:var(--panel);border:1px solid var(--rule);border-radius:var(--radius);position:relative;overflow:hidden;transition:border-color .25s,transform .2s,box-shadow .25s,background .25s}
.tg::after{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:transparent;transition:background .25s}
.tg:hover{transform:translateX(3px);border-color:color-mix(in srgb,var(--gold) 45%,transparent);box-shadow:var(--shadow);background:var(--panel2)}
.tg.live::after{background:linear-gradient(var(--gold),transparent)}
.tg.done::after{background:linear-gradient(var(--blue),transparent)}
.tg.no::after{background:var(--rule)}
.tg-l{display:flex;align-items:flex-start;justify-content:center;padding-top:.15rem}
.tg-rank{font-family:var(--display);font-weight:600;font-size:1.6rem;line-height:1;color:var(--gold);font-variation-settings:"opsz" 40}
.tg-rank.tg-dash{color:var(--rule);font-size:1.45rem}
.tg-b h3{margin:0 0 .45rem;font-size:1.1rem;color:var(--head);font-weight:500;line-height:1.35}
.tg-b h3 a{color:var(--head);border-bottom-color:var(--rule)}
.tg-b h3 a:hover{color:var(--gold2);border-bottom-color:var(--gold2)}
.tg-date{font-family:var(--ui);font-size:0.8rem;color:var(--muted);letter-spacing:.06em;margin-left:.7em;white-space:nowrap}
.tg-meta{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-bottom:.55rem}
.tg-b p{margin:0;color:var(--ink2);font-size:0.9rem;line-height:1.62;max-width:74ch}
.tg.no .tg-b p,.tg.no .tg-b h3{opacity:.8}
.tg[hidden]{display:none}
@media (max-width:620px){.tg{grid-template-columns:1fr;padding:1rem 1.1rem}.tg-l{justify-content:flex-start;padding-bottom:.35rem}.tg-date{display:block;margin:.25rem 0 0}}
.prog{margin:1.3rem 0 .2rem}
.prog .bar{margin:0}
.prog .key{display:flex;flex-wrap:wrap;gap:.35rem 1.2rem;margin-top:.6rem;font-family:var(--ui);font-size:0.8rem;color:var(--muted)}
.prog .key i{display:inline-block;width:.62em;height:.62em;border-radius:2px;margin-right:.45em;vertical-align:baseline}
ul.findings{list-style:none;padding:0;margin:1.1rem 0}
ul.findings li{position:relative;padding:.55rem 0 .55rem 1.5rem;border-bottom:1px solid var(--rule);color:var(--ink2);font-size:1rem;line-height:1.62}
ul.findings li:last-child{border-bottom:0}
ul.findings li::before{content:"";position:absolute;left:.15rem;top:1.28rem;width:.42rem;height:.42rem;border-radius:50%;background:var(--gold);box-shadow:0 0 10px rgba(217,172,82,.6)}
ul.findings .fdate{font-family:var(--ui);font-size:0.8rem;color:var(--muted);letter-spacing:.06em;margin-right:.55rem;white-space:nowrap}
ul.findings b{color:var(--head)}
.fnd{color:var(--gold2);font-style:italic}

/* ---------------------------------------------------------------- print */
@media print{
  body{background:#fff;color:#000;font-size:11pt}
  .nav,footer nav,.toc,.jump,.cipherstrip,.card .go,button{display:none !important}
  a{color:#000;border:0}
  .callout,.bignews,table,pre,blockquote{box-shadow:none;background:#fff;border-color:#999}
}

/* ---------------------------------------------------------------- scoreboard (index.html, built by _build_stats.py) */
.scoreboard{margin:1.2rem 0 2.2rem;padding:1.5rem 1.6rem 1.2rem;border-radius:var(--radius);border:1px solid var(--rule);
  background:linear-gradient(160deg,var(--panel2),var(--panel) 60%,transparent);position:relative;overflow:hidden}
.scoreboard::before{content:"1394 1116 1273 250 1165 1405 972 148 1459 1482 1201 821 130 821 1429 720 970 1482 992 1319 1048 584 687 249 736 1013 750 967";
  position:absolute;right:-1rem;top:-.4rem;font-family:var(--ui);font-size:0.8rem;letter-spacing:.3em;color:color-mix(in srgb,var(--gold) 18%,transparent);
  white-space:nowrap;pointer-events:none;user-select:none}
.scoreboard h2{margin-top:0}
.scoreboard .sb-lede{color:var(--ink2);margin:.2rem 0 1rem;max-width:78ch}
.sb-bar{display:flex;height:14px;border-radius:999px;overflow:hidden;gap:2px;background:var(--grey-bg)}
.sb-bar .seg{display:block;min-width:3px;transition:flex .6s cubic-bezier(.65,.05,.36,1)}
.sb-bar .seg.offline{opacity:.45}
.sb-legend{display:flex;flex-wrap:wrap;gap:.4rem 1.1rem;margin:.6rem 0 1.2rem;font-family:var(--ui);font-size:0.8rem;color:var(--muted)}
.sb-legend .lg i{display:inline-block;width:.6em;height:.6em;border-radius:2px;margin-right:.45em;vertical-align:-.02em}
.sb-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem 1.4rem;margin:0 0 1.2rem}
.sb-big b{display:block;font-family:var(--display);font-weight:500;font-size:clamp(2rem,4vw,2.9rem);line-height:1;color:var(--gold);letter-spacing:-.02em;font-variation-settings:"opsz" 144}
.sb-big b small{font-size:.42em;color:var(--muted);font-family:var(--ui);letter-spacing:0}
.sb-big span{display:block;margin-top:.45rem;font-size:0.9rem;color:var(--ink2);line-height:1.45}
.sb-big em{display:block;margin-top:.3rem;font-style:normal;font-family:var(--ui);font-size:0.8rem;color:var(--muted);letter-spacing:.02em}
.sb-legend .lg small{font-family:var(--ui);font-size:.78em;color:var(--muted);margin-left:.15em}
.sb-note{font-family:var(--ui);font-size:0.8rem;color:var(--muted);margin:.4rem 0 .2rem;letter-spacing:.04em}
.tlwrap{position:relative;margin:.3rem 0 0;padding:.4rem .2rem 0;border-radius:var(--radius);
  background:radial-gradient(120% 90% at 50% 100%,color-mix(in srgb,var(--gold) 7%,transparent),transparent 70%)}
.tl{width:100%;height:auto;display:block;overflow:visible;color:var(--ink)}
.tl .axis{stroke:var(--ink2);stroke-opacity:.35;stroke-width:1.5}
.tl .grid{stroke:var(--rule);stroke-dasharray:2 4}
.tl .grid.major{stroke-dasharray:none;stroke-opacity:.8}
.tl .era{font-family:var(--ui);font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;fill:var(--muted);opacity:.7}
.tl .tick{font-family:var(--ui);font-size:11px;fill:var(--muted)}
.tl .cursor{opacity:0;transition:opacity .2s;pointer-events:none}
.tl .cursor.on{opacity:1}
.tl .cur-line{stroke:var(--gold);stroke-width:1;stroke-dasharray:3 3}
.tl .cur-box{fill:var(--gold)}
.tl .cur-yr{font-family:var(--ui);font-size:10.5px;font-weight:700;fill:var(--bg)}
.tl .pt{cursor:pointer;outline:none;transform-box:fill-box;transform:translateY(var(--fall,0px));
  transition:opacity .3s,filter .3s,transform .75s cubic-bezier(.3,1.45,.55,1) var(--wave,0ms)}
.tl .pt .core{stroke:var(--bg);stroke-width:1.2;transform-box:fill-box;transform-origin:center;transition:transform .25s cubic-bezier(.34,1.8,.5,1),stroke .2s}
.tl .pt .halo{opacity:0;transform-box:fill-box;transform-origin:center;transition:opacity .25s,transform .25s}
.tl .pt.read .halo,.tl .pt.solved .halo{opacity:.35}
.tl .pt.offline .core{opacity:.5}
.tl .pt:hover .core,.tl .pt:focus-visible .core,.tl .pt.hot .core{transform:scale(1.75);stroke:var(--head);stroke-width:1.4}
.tl .pt:hover .halo,.tl .pt:focus-visible .halo,.tl .pt.hot .halo{opacity:.9;transform:scale(2.2)}
.tl.dim .pt:not(.hot){opacity:.28}
.tl .pt.off{opacity:.08!important;pointer-events:none}
.tl .pt.off .core{transform:scale(.45)}
.tl.armed .pt{animation:tl-drop .7s cubic-bezier(.2,1.4,.4,1) backwards;animation-delay:calc(var(--i) * 9ms)}
@keyframes tl-drop{from{opacity:0;transform:translateY(calc(-1 * var(--dy) - 30px))}to{opacity:1;transform:none}}
.tl.pre .pt{opacity:0}
.sb-legend .lg{font:inherit;color:inherit;background:transparent;border:1px solid transparent;border-radius:999px;padding:.15rem .6rem;margin:0 -.3rem;cursor:pointer;transition:all .2s}
.sb-legend .lg:hover{border-color:var(--rule);color:var(--ink)}
.sb-legend .lg[aria-pressed=true]{background:var(--panel2);border-color:var(--rule);color:var(--head)}
.sb-legend.filtering .lg[aria-pressed=false]{opacity:.45}
/* the tooltip card */
.tltip{position:absolute;left:0;top:0;z-index:20;width:min(330px,86vw);pointer-events:none;
  background:color-mix(in srgb,var(--bg2) 88%,transparent);backdrop-filter:blur(14px) saturate(1.4);-webkit-backdrop-filter:blur(14px) saturate(1.4);
  border:1px solid color-mix(in srgb,var(--c,var(--gold)) 45%,var(--rule));border-radius:14px;
  box-shadow:0 18px 50px -12px rgba(0,0,0,.55),0 0 0 1px rgba(255,255,255,.03) inset,0 0 40px -10px var(--c,var(--gold));
  opacity:0;transform:translate(var(--tx),calc(var(--ty) + 8px)) scale(.96);transform-origin:var(--ox,50%) bottom;
  transition:opacity .18s,transform .22s cubic-bezier(.2,1.2,.4,1)}
.tltip.show{opacity:1;transform:translate(var(--tx),var(--ty)) scale(1)}
.tltip.pinned{pointer-events:auto}
.tltip::before{content:"";display:block;height:3px;border-radius:14px 14px 0 0;background:linear-gradient(90deg,var(--c),color-mix(in srgb,var(--c) 20%,transparent))}
.tltip .tt-in{padding:.75rem .95rem .8rem;position:relative}
.tltip .tt-yr{position:absolute;right:.7rem;top:.15rem;font-family:var(--display);font-size:1.6rem;line-height:1;font-weight:600;
  color:var(--c);opacity:.16;letter-spacing:-.04em;font-variation-settings:"opsz" 144}
.tltip .tt-pill{display:inline-flex;align-items:center;gap:.4em;font-family:var(--ui);font-size:0.8rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--c);background:color-mix(in srgb,var(--c) 14%,transparent);border:1px solid color-mix(in srgb,var(--c) 35%,transparent);padding:.12rem .5rem;border-radius:999px}
.tltip .tt-pill i{width:.5em;height:.5em;border-radius:50%;background:var(--c);box-shadow:0 0 8px var(--c)}
.tltip .tt-name{font-family:var(--display);font-size:1rem;line-height:1.28;color:var(--head);margin:.45rem 0 .1rem;padding-right:2.6rem}
.tltip .tt-date{font-family:var(--ui);font-size:0.8rem;color:var(--muted)}
.tltip .tt-note{font-size:0.8rem;line-height:1.45;color:var(--ink2);margin:.5rem 0 0;padding-top:.5rem;border-top:1px solid var(--rule)}
.tltip .tt-note b{display:block;font-family:var(--ui);font-size:0.8rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:500;margin-bottom:.15rem}
.tltip .tt-go{display:flex;justify-content:space-between;align-items:center;margin-top:.6rem;font-family:var(--ui);font-size:0.8rem;color:var(--c)}
.tltip .tt-go span:last-child{color:var(--muted)}
.tltip .tt-arrow{position:absolute;width:12px;height:12px;left:var(--ax,50%);bottom:-6px;margin-left:-6px;transform:rotate(45deg);
  background:var(--bg2);border-right:1px solid color-mix(in srgb,var(--c) 45%,var(--rule));border-bottom:1px solid color-mix(in srgb,var(--c) 45%,var(--rule))}
.tltip.below .tt-arrow{bottom:auto;top:-6px;transform:rotate(225deg)}
@media (prefers-reduced-motion: reduce){.tl.armed .pt,.tl.armed .pt.read .halo,.tl.armed .pt.solved .halo{animation:none}.tl.pre .pt{opacity:1}.tl .pt{transition:opacity .3s}.tltip{transition:none}}
.sb-foot{font-size:0.8rem;color:var(--muted);margin:.8rem 0 0;line-height:1.5}
.sb-foot code{font-family:var(--mono);font-size:.9em}
@media (max-width:760px){.sb-grid{grid-template-columns:1fr 1fr}.scoreboard{padding:1.2rem 1.1rem 1rem}.scoreboard::before{display:none}}
@media (max-width:420px){.sb-grid{grid-template-columns:1fr}}

/* ---------------------------------------------------------------- write-ups menu (compact) and index page */
.nav .panel.wp{width:min(640px,calc(100vw - 2rem));grid-template-columns:1.35fr 1fr}
.nav .panel .foot{grid-column:1/-1;border-top:1px solid var(--rule);padding-top:.7rem;margin-top:.1rem;display:flex;justify-content:space-between;gap:.6rem 1.2rem;flex-wrap:wrap;font-size:0.9rem}
.nav .panel .foot a{border:0;color:var(--gold2)}
.nav .panel.ex{width:min(400px,calc(100vw - 2rem));grid-template-columns:1fr;gap:.6rem}
.nav .panel.ex li a{grid-template-columns:1fr;gap:.05rem;padding:.45rem .6rem}
@media (max-width:860px){ .nav .panel.wp,.nav .panel.ex{width:auto;grid-template-columns:1fr} }
.nav .panel.ex li a .d{font-size:0.8rem;color:var(--muted);line-height:1.3}
.nav .panel.ex li a[href="highlights.html"] b::after{content:"new";margin-left:.5rem;font:600 0.8rem var(--ui);letter-spacing:.08em;text-transform:uppercase;color:var(--gold-ink);background:var(--gold);padding:.08em .45em;border-radius:4px;vertical-align:.15em}
.nav .panel .foot a:hover,.nav .panel .foot a[aria-current]{color:var(--head)}
.nav .panel .foot a.all{font-weight:600}
/* write-ups menu rows: an outcome dot, the label, then the year (Latest) or the count (By outcome); the method is
   plain text under a Latest label, since a pill that long would not share the line */
.nav .panel .dot{flex:none;display:inline-block;width:.55rem;height:.55rem;border-radius:50%;background:currentColor;border:0;box-shadow:0 0 6px currentColor}
.nav .panel .latest li a{grid-template-columns:.55rem minmax(0,1fr) auto;grid-template-areas:"d t y" ". m m";gap:.1rem .6rem;align-items:baseline;padding:.4rem .5rem}
.nav .panel .latest .dot{grid-area:d;align-self:center}
.nav .panel .latest li a b{grid-area:t;min-width:0;overflow:hidden;text-overflow:ellipsis}
.nav .panel .latest li a .yr{grid-area:y;text-align:right;white-space:nowrap}
.nav .panel .latest li a .m{grid-area:m;min-width:0;font-family:var(--ui);font-size:.78rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nav .panel .outc li a{grid-template-columns:.55rem minmax(0,1fr) auto;gap:.6rem;padding:.32rem .5rem}
.nav .panel .outc li a b{font-size:.88rem;overflow:hidden;text-overflow:ellipsis}
.nav .panel .outc .n{font-family:var(--mono);font-size:.78rem;color:var(--muted)}
.nav .panel .outc b.sh{display:none}
/* in the phone menu the panel is inline: three latest, the outcomes as wrapping chips, the two links stacked */
@media (max-width:860px){
  .nav .panel.wp{grid-template-columns:1fr;gap:.9rem;padding:.5rem .2rem .9rem}
  .nav .panel .latest li:nth-child(n+4){display:none}
  .nav .panel li{margin:0}
  .nav .panel h4{margin-bottom:.25rem}
  .nav .panel .latest li a{margin:0;padding:.3rem .1rem;row-gap:0}
  .nav .panel .outc ul{display:grid;grid-template-columns:1fr 1fr;gap:0 .8rem}
  .nav .panel .outc li a{margin:0;padding:.28rem .1rem;gap:.45rem}
  .nav .panel .outc li a b{display:none}
  .nav .panel .outc li a b.sh{display:block;font-size:.85rem;white-space:nowrap}
  .nav .panel .dot{width:.45rem;height:.45rem}
  .nav .panel .foot{flex-direction:column;gap:.5rem}
}
.allws{margin:.2rem 0 0;font-family:var(--ui);font-size:0.8rem}
.allws a{color:var(--gold2);border:0}
.allws a:hover{color:var(--head)}
.cfilters .gl{font-family:var(--ui);font-size:0.8rem;color:var(--muted);display:block;margin:.45rem 0 0}

.wsec h2{margin-top:2.2rem}
.wsec[hidden]{display:none}
ul.list li[hidden]{display:none}
ul.list.wl a{grid-template-columns:auto 1fr auto auto;row-gap:.15rem}
ul.list.wl .st{align-self:start;margin-top:.25rem}
ul.list.wl .t{font-size:1rem}
ul.list.wl .b{grid-column:2/-1;font-size:0.9rem;color:var(--ink2);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
ul.list.wl a:hover .b{-webkit-line-clamp:unset}
@media (max-width:620px){ul.list.wl a{grid-template-columns:1fr auto auto}ul.list.wl .b{grid-column:1/-1}}
/* writeups.html rows: the year in its own column; title and date, then the summary, then the outcome pill */
ul.list.wi a{grid-template-columns:6.5rem minmax(0,1fr) auto;grid-template-areas:"yr t dt" "yr b b" "yr st st";gap:.3rem 1.1rem;align-items:baseline;padding:.9rem .5rem}
ul.list.wi .yr{grid-area:yr;font-family:var(--display);font-size:1.05rem;line-height:1.25;color:var(--gold2)}
ul.list.wi .t{grid-area:t;font-size:1.08rem;line-height:1.3;color:var(--head);min-width:0}
ul.list.wi .dt{grid-area:dt}
ul.list.wi .b{grid-area:b}
ul.list.wi .st{grid-area:st;justify-self:start;align-self:center;margin-top:.15rem;font-size:.74rem;max-width:100%;overflow:hidden;text-overflow:ellipsis}
@media (max-width:620px){
  ul.list.wi a{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"yr dt" "t t" "b b" "st st";gap:.25rem .8rem;padding:.85rem .2rem}
  ul.list.wi .yr{font-family:var(--ui);font-size:.8rem;letter-spacing:.04em}
  ul.list.wi .st{display:inline-flex}
}

/* site search: nav button and the palette it opens (markup from _build_site.py, behaviour in site.js) */
.nav .searchbtn{margin:0;padding:.3rem .55rem .3rem .5rem;background:var(--panel);color:var(--ink2);border:1px solid var(--rule);border-radius:8px;display:inline-flex;align-items:center;gap:.45rem;font:inherit;font-size:0.8rem;letter-spacing:0;line-height:1.2;cursor:pointer;transform:none;box-shadow:none;white-space:nowrap}
.nav .searchbtn:hover{color:var(--gold2);border-color:var(--gold);transform:none;box-shadow:none}
.nav .searchbtn kbd,.shint kbd{font-family:var(--mono);font-size:0.8rem;color:var(--muted);border:1px solid var(--rule);border-radius:4px;padding:0 .4em;line-height:1.5;background:var(--bg)}
html.sopen{overflow:hidden}
.search{position:fixed;inset:0;z-index:100;background:color-mix(in srgb,var(--bg) 72%,transparent);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;justify-content:center;align-items:flex-start;padding:min(12vh,7rem) 1rem 1rem}
.search[hidden]{display:none}
.sbox{width:min(720px,100%);max-height:min(76vh,720px);display:flex;flex-direction:column;background:var(--bg2);border:1px solid var(--rule);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.sform{display:flex;align-items:center;gap:.7rem;margin:0;padding:.8rem 1rem;border-bottom:1px solid var(--rule);color:var(--muted)}
.sform input{flex:1;min-width:0;background:transparent;border:0;outline:0;color:var(--ink);font:inherit;font-size:1.1rem;padding:.2rem 0;-webkit-appearance:none;appearance:none}
.sform input::-webkit-search-cancel-button,.sform input::-webkit-search-decoration{-webkit-appearance:none;display:none}
.sclose{margin:0;padding:.15rem .5rem;background:transparent;color:var(--muted);border:1px solid var(--rule);border-radius:6px;font-family:var(--ui);font-size:0.8rem;letter-spacing:.04em;cursor:pointer;transform:none;box-shadow:none}
.sclose:hover{color:var(--gold2);border-color:var(--gold);transform:none;box-shadow:none}
.sres{overflow-y:auto;overscroll-behavior:contain;padding:.4rem}
.smsg{margin:1.2rem 1rem;color:var(--muted);font-size:0.9rem;text-align:center}
.sr{display:block;padding:.6rem .8rem;border:0;border-radius:10px;color:var(--ink)}
.sr:hover,.sr.on{background:var(--panel2)}
.sr .srt{display:block;font-family:var(--display);font-weight:500;font-size:1rem;color:var(--head);line-height:1.3}
.sr .srt .sec{color:var(--ink2);font-weight:400}
.sr .srt .sec::before{content:"\203A";color:var(--muted);margin:0 .3em}
.sr .srm{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;font-family:var(--ui);font-size:0.8rem;color:var(--muted);margin:.25rem 0 .1rem;letter-spacing:.04em}
.sr .srm .st{font-size:0.8rem;padding:.05em .5em .05em .45em}
.sr .srs{margin:.2rem 0 0;font-size:0.9rem;color:var(--ink2);line-height:1.45}
.sr mark{background:var(--amber-bg);color:var(--gold2);padding:0 .06em;border-radius:3px;font-weight:600}
:root[data-theme="light"] .sr mark{color:var(--amber)}
.shint{display:flex;gap:1.1rem;padding:.5rem 1rem;border-top:1px solid var(--rule);font-family:var(--ui);font-size:0.8rem;color:var(--muted)}
.shint .sn{margin-left:auto}
@media (max-width:860px){
  .nav .searchbtn{width:100%;justify-content:flex-start;margin:.5rem 0 0;padding:.55rem .7rem;font-size:1rem}
  .nav .searchbtn kbd{display:none}
  .search{padding:.6rem}
  .sbox{max-height:calc(100vh - 1.2rem);max-height:calc(100dvh - 1.2rem)}
  .shint span:not(.sn){display:none}
}

/* ---------------------------------------------------------------- cipher reveal (cipher-reveal.js) */
.creveal{text-align:left;margin:2rem 0;padding:1.2rem 1.3rem 1rem;border:1px solid var(--rule);border-radius:var(--radius);
  background:radial-gradient(600px 200px at 10% 0%,var(--glow1),transparent 70%),var(--panel);box-shadow:var(--shadow);min-height:12rem}
.creveal .cr-head{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;flex-wrap:wrap}
.creveal h3{margin:.15rem 0 0;font-family:var(--display);font-size:1.25rem;color:var(--head)}
.cr-kick{font-family:var(--ui);font-size:0.8rem;letter-spacing:.12em;text-transform:uppercase;color:var(--gold)}
.cr-ctl{display:flex;gap:.4rem}
.cr-ctl button{font:500 0.8rem var(--ui);padding:.35rem .7rem;border-radius:999px;border:1px solid var(--rule);background:var(--bg);color:var(--ink2);cursor:pointer}
.cr-ctl button:hover,.cr-ctl button[aria-pressed=true]{border-color:var(--gold);color:var(--gold2)}
.cr-bar{height:2px;background:var(--rule);border-radius:2px;margin:.9rem 0 .2rem;overflow:hidden}
.cr-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--gold),var(--gold2));box-shadow:0 0 12px var(--gold)}
.cr-tiles{display:flex;flex-wrap:wrap;gap:.4rem .3rem;margin-top:.8rem;align-items:flex-end}
.cr-tiles.words{column-gap:1.1rem}
.cr-w{display:flex;flex-wrap:wrap;gap:.4rem .3rem;align-items:flex-end;max-width:100%}
.cr-t{transition:transform .25s,background .2s,border-color .2s,opacity .2s}
.cr-t[tabindex]{cursor:pointer}
.cr-t .p{min-height:1.2em}
.cr-t:not(.done):not(.plain) .p{color:var(--muted);font-family:var(--ui);font-style:normal;font-size:0.8rem}
.cr-t.done:not(.plain){animation:crpop .5s ease-out}
@keyframes crpop{0%{box-shadow:0 0 0 0 var(--gold);transform:translateY(-2px)}100%{box-shadow:0 0 0 7px transparent;transform:none}}
.cr-t.null .p{color:var(--muted)}
.creveal.tracing .cr-t:not(.hl):not(.hom){opacity:.32}
.cr-t.hl{background:var(--gold);border-color:var(--gold);transform:translateY(-3px)}
.cr-t.hl .p,.cr-t.hl .g{color:var(--gold-ink)!important}
.cr-t.hom{border-color:var(--violet);background:var(--violet-bg);transform:translateY(-2px)}
.cr-t.hom .p{color:var(--violet)!important}
.creveal.cipher .cr-t:not(.plain) .p{visibility:hidden}
.creveal.cipher .cr-t:not(.plain) .g{font-size:0.8rem;color:var(--ink)}
.cr-info{font-family:var(--ui);font-size:0.8rem;color:var(--muted);margin:.9rem 0 .3rem;min-height:1.3em}
.cr-info .cr-g{color:var(--gold2)} .cr-info .cr-p{color:var(--head);font-family:var(--display);font-style:italic;font-size:0.9rem} .cr-homs{color:var(--violet)}
.cr-key summary{cursor:pointer;font-family:var(--ui);font-size:0.8rem;color:var(--ink2);letter-spacing:.04em;padding:.3rem 0}
.cr-key summary span{color:var(--muted);margin-left:.4rem}
.cr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(6.5rem,1fr));gap:.25rem;margin:.5rem 0;max-height:18rem;overflow:auto;padding-right:.3rem}
.cr-k{display:flex;align-items:baseline;gap:.4rem;padding:.2rem .45rem;border-radius:6px;border:1px solid var(--rule);background:var(--bg);color:var(--ink2);font:inherit;cursor:pointer;text-align:left;min-width:0}
.cr-k b{font:600 0.8rem var(--ui);color:var(--muted)} .cr-k i{font-family:var(--display);color:var(--gold2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cr-k small{margin-left:auto;font:0.8rem var(--ui);color:var(--muted)}
.cr-k.hl{background:var(--gold);border-color:var(--gold)} .cr-k.hl b,.cr-k.hl i,.cr-k.hl small{color:var(--gold-ink)}
.cr-k.hom{border-color:var(--violet);background:var(--violet-bg)}
.cr-k.unk i,.cr-t.unk .p{color:var(--red)} .cr-t.unc .p{color:var(--amber)} .cr-t.code .p,.cr-k.code i{color:var(--blue)}
.cr-note{font-size:0.8rem;color:var(--muted);margin:.3rem 0}
.creveal figcaption{font-size:0.8rem;color:var(--muted);margin-top:.6rem;border-top:1px solid var(--rule);padding-top:.6rem}
@media (max-width:600px){.creveal{padding:1rem .8rem}.cr-grid{grid-template-columns:repeat(auto-fill,minmax(5.5rem,1fr))}}

/* ---------------------------------------------------------------- how it was solved (solve-replay.js) */
.sreplay{text-align:left;margin:2rem 0;padding:1.2rem 1.3rem 1rem;border:1px solid var(--rule);border-radius:var(--radius);
  background:radial-gradient(600px 220px at 90% 0%,var(--glow2),transparent 70%),var(--panel);box-shadow:var(--shadow);
  --ok:var(--green);--part:var(--amber);--fail:var(--red);--out:var(--muted)}
.sr-head{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;flex-wrap:wrap}
.sr-kick{font-family:var(--ui);font-size:0.8rem;letter-spacing:.12em;text-transform:uppercase;color:var(--gold)}
.sreplay h3{margin:.15rem 0 0;font-family:var(--display);font-size:1.25rem;color:var(--head)}
.sreplay h3 em{color:var(--red);font-style:italic} .sreplay h3 small{font:0.8rem var(--ui);color:var(--muted);margin-left:.3rem}
.sr-ctl{display:flex;gap:.35rem}
.sr-ctl button{font:0.8rem var(--ui);width:2.3rem;height:2rem;border-radius:999px;border:1px solid var(--rule);background:var(--bg);color:var(--ink2);cursor:pointer}
.sr-ctl .sr-play{border-color:var(--gold);color:var(--gold2)}
.sr-ctl button:hover{border-color:var(--gold);color:var(--gold2)}
.sr-chips{display:flex;flex-wrap:wrap;gap:.3rem;margin:.6rem 0 0}
.sr-c{font:0.8rem var(--ui);padding:.15rem .55rem;border-radius:999px;border:1px solid var(--rule);color:var(--muted)}
.sr-c.out-ok{color:var(--green);border-color:color-mix(in srgb,var(--green) 40%,transparent)} .sr-c.out-part{color:var(--amber);border-color:color-mix(in srgb,var(--amber) 40%,transparent)}
.sr-track{display:flex;flex-wrap:wrap;gap:1.9rem .55rem;margin:1.4rem 0 .4rem;padding:.9rem 0 1.4rem;align-items:flex-start}
.sr-b{position:relative;width:1.9rem;height:1.9rem;border-radius:50%;border:2px solid var(--c,var(--muted));background:var(--bg);color:var(--c,var(--muted));
  font:600 0.8rem var(--ui);cursor:pointer;padding:0;display:grid;place-items:center;opacity:.28;transition:opacity .3s,transform .3s,box-shadow .3s,background .3s}
.sr-b.ok{--c:var(--ok)} .sr-b.part{--c:var(--part)} .sr-b.fail{--c:var(--fail)} .sr-b.out{--c:var(--out)}
.sr-b::before{content:"";position:absolute;right:100%;top:50%;width:.55rem;height:2px;background:var(--rule)}
.sr-b:first-child::before{display:none}
.sr-b.dead{transform:translateY(1.1rem);border-style:dashed}
.sr-b.dead::before{top:-.2rem;height:2px;width:.9rem;transform:rotate(-50deg);transform-origin:right;right:70%;background:color-mix(in srgb,var(--c) 45%,transparent)}
.sr-b.dead::after{content:"\00d7";position:absolute;bottom:-1.05rem;left:50%;transform:translateX(-50%);font-size:0.8rem;color:var(--c)}
.sr-day{position:absolute;top:-1.3rem;left:0;font:500 0.8rem var(--ui);color:var(--muted);white-space:nowrap;pointer-events:none}
.sr-b.dead .sr-day{top:-2.4rem}
.sr-b.seen{opacity:1}
.sr-b.cur{background:var(--c);color:var(--bg);box-shadow:0 0 0 5px color-mix(in srgb,var(--c) 22%,transparent),0 0 18px var(--c);transform:scale(1.15)}
.sr-b.dead.cur{transform:translateY(1.1rem) scale(1.15)}
.sr-card{min-height:5.6rem;border-left:3px solid var(--c,var(--rule));padding:.4rem 0 .3rem .9rem;margin:.6rem 0 .8rem;animation:srin .35s ease-out}
.sr-card.ok{--c:var(--ok)} .sr-card.part{--c:var(--part)} .sr-card.fail{--c:var(--fail)} .sr-card.out{--c:var(--out)}
@keyframes srin{from{opacity:.2;transform:translateX(-4px)}to{opacity:1;transform:none}}
.sr-meta{display:flex;flex-wrap:wrap;gap:.3rem .8rem;font:0.8rem var(--ui);color:var(--muted);letter-spacing:.03em}
.sr-meta .sr-k{color:var(--ink2);text-transform:uppercase;letter-spacing:.08em} .sr-meta .sr-r{color:var(--c);font-weight:600}
.sr-card p{margin:.35rem 0 0;font-size:1rem;line-height:1.5}
.sr-idle{color:var(--muted);font-size:0.9rem}
.sr-legend{display:flex;flex-wrap:wrap;gap:.3rem 1rem;font:0.8rem var(--ui);color:var(--muted)}
.sr-legend i{display:inline-block;width:.6rem;height:.6rem;border-radius:50%;border:2px solid;margin-right:.3rem;vertical-align:-1px}
.sr-legend i.ok{border-color:var(--ok)} .sr-legend i.part{border-color:var(--part)} .sr-legend i.fail{border-color:var(--fail);border-style:dashed} .sr-legend i.out{border-color:var(--out);border-style:dashed}
.sr-all summary{cursor:pointer;font:0.8rem var(--ui);color:var(--ink2);margin-top:.7rem}
.sr-all ol{font-size:0.9rem;padding-left:1.4rem;max-height:22rem;overflow:auto} .sr-all li{margin:.35rem 0}
.sr-all li b{font-family:var(--ui);font-size:0.8rem;text-transform:uppercase;letter-spacing:.06em}
.sr-all li.ok span{color:var(--green)} .sr-all li.part span{color:var(--amber)} .sr-all li.fail span{color:var(--red)} .sr-all li.out span{color:var(--muted)}
.sreplay figcaption{font-size:0.8rem;color:var(--muted);margin-top:.7rem;border-top:1px solid var(--rule);padding-top:.6rem}
@media (max-width:600px){.sreplay{padding:1rem .8rem}.sr-track{gap:1.9rem .45rem}}

/* ---------------------------------------------------------------- archival touches: paper grain, wax seals, period hand */
:root{--period:"Source Serif 4",Georgia,serif;--grain:.05;--wax-hi:rgba(255,255,255,.45)}
:root[data-theme="light"]{--grain:.085;--wax-hi:rgba(255,255,255,.55)}
/* paper grain: fixed, still, under everything that matters */
body::before{content:"";position:fixed;inset:0;z-index:200;pointer-events:none;opacity:var(--grain);mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .5 0 0 0 0 .42 0 0 0 0 .3 0 0 0 1.4 -.2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
:root[data-theme="light"] body::before{mix-blend-mode:multiply}
/* foxing at the page edges, light theme only (paper) */
:root[data-theme="light"] body{box-shadow:inset 0 0 180px rgba(120,80,20,.10)}
/* the outcome badges become small wax seals */
.st::before{width:.78em;height:.78em;box-shadow:inset 0 0 0 .09em color-mix(in srgb,currentColor 60%,#000),inset .08em .1em .12em var(--wax-hi),0 .05em .12em rgba(0,0,0,.35);
  border-radius:52% 46% 50% 47%/47% 53% 45% 52%;background:radial-gradient(circle at 38% 34%,color-mix(in srgb,currentColor 55%,#fff) 0 18%,currentColor 48%,color-mix(in srgb,currentColor 70%,#000) 100%)}
/* the period hand: deciphered plaintext */
.tile .p,.cr-t .p,.cr-k i,.cr-info .cr-p,.hero .cipherstrip{font-family:var(--period)}
.tile .p,.cr-t .p{font-size:1.1rem;font-style:normal;letter-spacing:.01em}
.cr-t:not(.done):not(.plain) .p{font-family:var(--ui)}
.cr-t.plain .p{font-family:var(--serif);font-style:italic}
blockquote.reading,blockquote.big{font-family:var(--period);font-size:1.25rem;line-height:1.55}
/* the seal on every write-up: pressed in once, outcome in the wax */
.hero{position:relative}
@media (min-width:761px){.hero:has(> .seal) > .sub,.hero:has(> .seal) > h1{margin-right:10rem}}
.hero .seal{position:absolute;right:1.4rem;top:7.2rem;width:8.2rem;height:8.2rem;display:grid;place-items:center;pointer-events:none;
  color:var(--wx);transform:rotate(-12deg);filter:drop-shadow(0 .25rem .4rem rgba(0,0,0,.35))}
.hero .seal::before{content:"";position:absolute;inset:0;border-radius:51% 47% 53% 46%/48% 54% 45% 52%;
  background:radial-gradient(circle at 36% 30%,color-mix(in srgb,var(--wx) 55%,#fff) 0 10%,var(--wx) 42%,color-mix(in srgb,var(--wx) 60%,#000) 100%);
  box-shadow:inset 0 0 0 .45rem color-mix(in srgb,var(--wx) 80%,#000),inset 0 0 0 .54rem color-mix(in srgb,var(--wx) 60%,#fff),inset .2rem .25rem .5rem var(--wax-hi)}
.hero .seal::after{content:"";position:absolute;inset:1.25rem;border-radius:50%;border:1px dashed color-mix(in srgb,var(--wx) 45%,#000)}
/* the words are sized off the seal itself (cqw), so they stay inside the dashed ring at either seal size; .long is a word over eight letters */
.hero .seal{container-type:size}
.hero .seal span{position:relative;z-index:1;font:600 9.2cqw/1.12 var(--display);letter-spacing:.08em;text-transform:uppercase;text-align:center;max-width:66cqw;
  color:color-mix(in srgb,var(--wx) 35%,#000);text-shadow:0 1px 0 color-mix(in srgb,var(--wx) 40%,#fff)}
.hero .seal span.long{font-size:7cqw}
.hero .seal{background:none;border:0}
.hero .seal.solved{--wx:#9b2a22} .hero .seal.partial{--wx:#a4651c} .hero .seal.found{--wx:#2f4d7a} .hero .seal.stuck{--wx:#4a4640}
@media (max-width:760px){.hero .seal{right:.9rem;top:.8rem;bottom:auto;width:4.6rem;height:4.6rem}.hero .seal::after{inset:.65rem}.hero:has(> .seal) > .kicker{margin-right:4.6rem}}
@media print{body::before,.hero .seal{display:none}}

/* ---------------------------------------------------------------- deep-zoom viewer (zoom.js) */
img.zoomable{cursor:zoom-in;transition:filter .2s,box-shadow .2s}
img.zoomable:hover,img.zoomable:focus-visible{filter:brightness(1.06);box-shadow:0 0 0 2px var(--gold)}
figure:has(> img.zoomable){position:relative}
figure:has(> img.zoomable)::after{content:"\2922  zoom";position:absolute;top:.6rem;right:.6rem;font:0.8rem var(--ui);letter-spacing:.06em;
  padding:.2rem .5rem;border-radius:999px;background:rgba(0,0,0,.55);color:#fff;opacity:0;transition:opacity .2s;pointer-events:none}
figure:has(> img.zoomable:hover)::after,figure:has(> img.zoomable:focus-visible)::after{opacity:1}
html.zv-lock{overflow:hidden}
.zv{position:fixed;inset:0;z-index:300;display:flex;flex-direction:column;background:#08090c;color:#eee;isolation:isolate}
.zv[hidden]{display:none}
.zv-bar{display:flex;align-items:flex-start;gap:1rem;padding:.7rem 1rem;border-bottom:1px solid rgba(255,255,255,.12)}
.zv-cap{flex:1;margin:0;font-size:0.9rem;line-height:1.45;color:#d8d2c4;max-height:4.4em;overflow:auto}
.zv-cap,.zv-cap *{color:#d8d2c4 !important;background:none !important}
.zv-cap a{color:#f0cf86 !important}
.zv-btns{display:flex;gap:.35rem;flex-shrink:0}
.zv-btns button{font:600 0.8rem var(--ui);min-width:2.2rem;height:2.1rem;padding:0 .6rem;border-radius:8px;border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.06);color:#eee;cursor:pointer}
.zv-btns button:hover{border-color:#d9ac52;color:#f0cf86}
.zv-btns .zv-tr[aria-pressed=true]{background:#d9ac52;color:#1a1408;border-color:#d9ac52}
.zv-view{flex:1;min-height:0;position:relative}
.zv-src{margin:0;padding:.35rem 1rem;font:0.8rem var(--ui);color:#8f8a7d;min-height:1.6em}
.zv-err{padding:2rem;text-align:center;color:#ff8d7e}
.zv-line{overflow:hidden;border-radius:3px;pointer-events:auto;
  background:rgba(12,15,21,.34);border:1px solid rgba(240,207,134,.5);color:#fff7e2;text-shadow:0 0 3px #000,0 0 6px #000;padding:0 .3em;line-height:1.05;
  font-family:var(--ui);white-space:nowrap;transition:opacity .25s,background .2s}
.zv-line .in{display:flex;flex-direction:column;justify-content:center;height:100%;gap:.08em}
.zv-line:hover{background:rgba(12,15,21,.82)}
.zv-line .gl{font-family:var(--period);color:#f0cf86;font-size:1.15em;text-overflow:ellipsis;overflow:hidden}
.zv-line .t{text-overflow:ellipsis;overflow:hidden}
.zv.zv-off .zv-line{opacity:0;pointer-events:none}
@media (max-width:640px){.zv-bar{flex-direction:column;gap:.5rem}.zv-cap{max-height:3em}}

/* ---------------------------------------------------------------- live home header (home.js) */
.hero .cipherstrip.live{pointer-events:auto;user-select:auto;letter-spacing:.04em;line-height:1.35;max-width:21rem;transition:opacity .5s}
.hero .cipherstrip.live.fade{opacity:0}
.cipherstrip .ls{display:block;margin-bottom:.45rem}
.cipherstrip .ls .lc{display:block;font-family:var(--mono);font-size:0.8rem;letter-spacing:.18em;color:color-mix(in srgb,var(--gold) 55%,transparent);transition:color .6s}
.cipherstrip .ls .lp{display:block;min-height:1.3em;font-family:var(--period);font-size:1rem;letter-spacing:.01em;color:var(--gold2);text-transform:none}
.cipherstrip .ls.done .lc{color:color-mix(in srgb,var(--gold) 30%,transparent)}
.cipherstrip .lsrc{display:inline-block;margin-top:.2rem;font:0.8rem var(--mono);letter-spacing:.08em;color:var(--muted);border:0;opacity:0;transition:opacity .6s}
.cipherstrip .lsrc.on{opacity:1} .cipherstrip .lsrc:hover{color:var(--gold2)}
@media (min-width:761px){.hero:has(.cipherstrip.live) > .kicker,.hero:has(.cipherstrip.live) > h1,.hero:has(.cipherstrip.live) > .sub{margin-right:23rem}}
.livecount{display:flex;flex-wrap:wrap;gap:.6rem;margin:1.3rem 0 .4rem;align-items:stretch}
.livecount .lc{display:flex;flex-direction:column;justify-content:flex-start;padding:.55rem .85rem;border:1px solid var(--rule);border-radius:12px;background:var(--panel);color:var(--ink2);min-width:7.5rem;transition:border-color .2s,transform .2s}
.livecount .lc:hover{border-color:var(--gold);transform:translateY(-2px);color:var(--ink2)}
.livecount .lc b{font:700 1.6rem/1 var(--display);color:var(--head);font-variant-numeric:tabular-nums}
.livecount .lc span{font:0.8rem var(--ui);letter-spacing:.04em;color:var(--muted);margin-top:.3rem;max-width:12rem}
.randbtn{align-self:center;font:600 0.8rem var(--ui);padding:.7rem 1.1rem;border-radius:999px;border:1px solid var(--gold);background:var(--gold);color:var(--gold-ink);cursor:pointer;transition:transform .2s,box-shadow .2s}
.randbtn:hover{transform:rotate(-3deg) scale(1.04);box-shadow:0 0 18px color-mix(in srgb,var(--gold) 45%,transparent)}
@media (max-width:600px){.livecount .lc{min-width:calc(50% - .3rem);flex:1}.randbtn{width:100%}}
.sb-big b{font-variant-numeric:tabular-nums}
.sb-big b .sb-n{display:inline-block;margin:0;font-size:inherit;color:inherit;line-height:inherit}

/* ---------------------------------------------------------------- pictures in the index lists and slides */
/* Recent findings: a crop of the script, the correspondent's portrait in its corner */
ul.findings li:has(> .fth){padding-left:4.8rem;min-height:4.6rem}
ul.findings li:has(> .fth)::before{display:none}
.fth,.rth{position:relative;display:inline-block;flex:none}
.fth{position:absolute;left:0;top:.72rem;width:3.8rem;height:3.8rem}
.fth .sc,.fth .pt,.rth .sc,.rth .pt{display:block;width:100%;height:100%;object-fit:cover;border-radius:6px;border:1px solid color-mix(in srgb,var(--gold) 40%,transparent);
  filter:sepia(.28) saturate(.85) contrast(1.05);background:var(--panel2)}
.fth .pt,.rth .pt{border-radius:50%}
.fth .pc,.rth .pc{position:absolute;right:-.4rem;bottom:-.4rem;width:1.75rem;height:1.75rem;border-radius:50%;object-fit:cover;
  border:1px solid color-mix(in srgb,var(--gold) 60%,transparent);box-shadow:0 0 0 2px var(--bg);filter:sepia(.18) saturate(.9)}
/* And the rest: the same, smaller, as the first column */
ul.list a:has(> .rth){grid-template-columns:auto auto 1fr auto auto}
.rth{width:2.7rem;height:2.7rem}
.rth:empty{border-radius:6px;border:1px dashed var(--rule);background:repeating-linear-gradient(135deg,transparent 0 5px,color-mix(in srgb,var(--gold) 7%,transparent) 5px 6px)}
.rth .pc{width:1.3rem;height:1.3rem;right:-.3rem;bottom:-.3rem}
@media (max-width:620px){ul.list a:has(> .rth){grid-template-columns:auto 1fr auto;gap:.7rem}ul.list a:has(> .rth) .dt{display:none}.rth{width:2.2rem;height:2.2rem}
  ul.findings li:has(> .fth){padding-left:3.6rem;min-height:3.4rem}.fth{width:2.8rem;height:2.8rem}.fth .pc{width:1.35rem;height:1.35rem}}
/* the Unsolved Catalogue: top of the queue on the index, faces in the table */
ul.list.cattop a{grid-template-columns:4.6rem 1fr auto auto}
ul.list.cattop .avs{justify-self:center}
ul.list.cattop .avs img{width:34px;height:34px}
ul.list.cattop .pr{font-family:var(--display);font-size:1.1rem;color:var(--gold)}
.avs.none i{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;font:600 0.8rem/1 var(--ui);letter-spacing:.06em;text-transform:uppercase;font-style:normal;
  color:color-mix(in srgb,var(--gold) 80%,var(--ink));border:1px dashed color-mix(in srgb,var(--gold) 45%,transparent);background:color-mix(in srgb,var(--gold) 6%,transparent)}
#cat td.item > .avs{float:left;margin:.1rem .6rem .2rem 0}
#cat td.item > .avs img{width:34px;height:34px}
@media (max-width:620px){ul.list.cattop a{grid-template-columns:4.6rem 1fr auto}ul.list.cattop .yr{display:none}}

/* the slides: who wrote to whom over the picture, and the cipher deciphering underneath it */
.bn-panel .art{position:relative;text-align:left}
.bn-who{position:absolute;top:.6rem;left:.6rem;z-index:1;display:flex;align-items:center;gap:.45rem;padding:.28rem .7rem .28rem .28rem;border-radius:999px;
  background:color-mix(in srgb,var(--bg) 78%,transparent);backdrop-filter:blur(6px);border:1px solid color-mix(in srgb,var(--gold) 35%,transparent)}
.bn-who b{color:var(--gold);font-weight:400}
.bw{display:flex;align-items:center;gap:.45rem;font:500 0.8rem/1.15 var(--display);color:var(--head)}
.bw img{width:40px;height:40px;border-radius:50%;object-fit:cover;border:1px solid color-mix(in srgb,var(--gold) 60%,transparent);filter:sepia(.18) saturate(.9)}
.bw i{display:block;font:normal 0.8rem/1.2 var(--ui);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.bn-solve{position:absolute;left:0;right:0;bottom:0;z-index:1;padding:1.6rem .75rem .65rem;
  background:linear-gradient(to bottom,transparent,color-mix(in srgb,var(--bg) 88%,transparent) 42%)}
.bn-solve .bk{display:block;font:0.8rem var(--ui);letter-spacing:.16em;text-transform:uppercase;color:var(--gold);margin-bottom:.3rem}
.bts{display:flex;gap:.28rem;overflow:hidden;mask-image:linear-gradient(to right,#000 85%,transparent)}
.bt{display:flex;flex-direction:column;align-items:center;flex:none;min-width:1.7rem;padding:.14rem .38rem .1rem;border-radius:5px;
  border:1px solid color-mix(in srgb,var(--gold) 28%,var(--rule));background:color-mix(in srgb,var(--panel) 85%,transparent)}
.bt .g{font:0.8rem var(--ui);color:var(--muted)}
.bt .p{font:1rem/1.2 var(--period);color:var(--gold2);min-height:1.2em;transition:color .3s}
.bt.more{justify-content:center;color:var(--muted);border-style:dashed}
.bt.scr .p{color:var(--muted);font-family:var(--ui);font-size:0.8rem}
.bt.hit{animation:btpop .45s ease-out}
@keyframes btpop{0%{transform:translateY(0)}40%{transform:translateY(-3px);border-color:var(--gold)}100%{transform:none}}
.bn-solve .bl{position:absolute;right:.75rem;top:1.55rem;font:0.8rem var(--ui);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);border:0}
.bn-solve .bl:hover{color:var(--gold2)}
/* a slide with no picture: a panel of its correspondents and its cipher */
.bn-panel .art.solveart{display:flex;flex-direction:column;justify-content:center;gap:1.1rem;padding:1.3rem 1.2rem;
  background:radial-gradient(120% 90% at 30% 20%,color-mix(in srgb,var(--gold) 9%,var(--panel)),var(--panel2));}
.art.solveart .bn-who{position:static;align-self:flex-start;background:none;border:0;backdrop-filter:none;padding:0;gap:.7rem;flex-wrap:wrap}
.art.solveart .bw img{width:68px;height:68px}
.art.solveart .bw{font-size:1rem}
.art.solveart .bn-solve{position:relative;background:none;padding:0}
.art.solveart .bn-solve .bl{top:0}
.art.solveart .bts{flex-wrap:wrap;mask-image:none}
@media (prefers-reduced-motion: reduce){.bt.hit{animation:none}}

/* ---------------------------------------------------------------- a sealed letter: deciphers only when the seal is broken */
.cr-t.wb{min-width:.7rem;padding:0;visibility:hidden}
.creveal.sealed .cr-t:not(.plain) .p{opacity:0}
.creveal.sealed .cr-play,.creveal.sealed .cr-mode{visibility:hidden}
.creveal .cr-tiles{position:relative}
.cr-gate{display:flex;justify-content:center;margin:1.3rem 0 .5rem}
.cr-break,.cr-break:hover,.cr-break:focus{display:flex;flex-direction:column;align-items:center;gap:.7rem;background:none;border:0;box-shadow:none;transform:none;padding:.4rem 1rem;cursor:pointer;color:var(--gold2)}
.cr-break .cr-lbl{font:600 0.8rem var(--ui);letter-spacing:.14em;text-transform:uppercase;padding:.45rem 1rem;border-radius:999px;border:1px solid var(--gold);
  background:color-mix(in srgb,var(--gold) 12%,transparent);transition:background .2s,color .2s,opacity .3s}
.cr-break:hover .cr-lbl,.cr-break:focus-visible .cr-lbl{background:var(--gold);color:var(--gold-ink)}
.cr-seal{position:relative;width:5.2rem;height:5.2rem;filter:drop-shadow(0 .35rem .5rem rgba(0,0,0,.4));transition:transform .25s}
.cr-break:hover .cr-seal{transform:rotate(-8deg) scale(1.06)}
.cr-seal i{position:absolute;inset:0;border-radius:51% 47% 53% 46%/48% 54% 45% 52%;
  background:radial-gradient(circle at 36% 30%,#e0695b 0 9%,#9b2a22 45%,#5a120d 100%);
  box-shadow:inset 0 0 0 .38rem #7a1d16,inset 0 0 0 .46rem #c0544a;transition:transform .8s cubic-bezier(.5,-.3,.7,1),opacity .8s}
.cr-seal i:first-child{clip-path:polygon(0 0,54% 0,44% 22%,58% 40%,42% 60%,56% 78%,46% 100%,0 100%)}
.cr-seal i:last-child{clip-path:polygon(54% 0,100% 0,100% 100%,46% 100%,56% 78%,42% 60%,58% 40%,44% 22%)}
.cr-seal::after{content:"✦";position:absolute;inset:0;display:grid;place-items:center;font-size:1.6rem;color:rgba(60,8,5,.7);text-shadow:0 1px 0 rgba(255,190,170,.3);transition:opacity .3s}
.creveal.breaking .cr-seal::after{opacity:0}
.creveal.breaking .cr-seal i:first-child{transform:translate(-2.2rem,1.4rem) rotate(-38deg);opacity:0}
.creveal.breaking .cr-seal i:last-child{transform:translate(2.2rem,1.6rem) rotate(34deg);opacity:0}
.creveal.breaking .cr-lbl{opacity:0}
.creveal.breaking .cr-tiles::after{content:"";position:absolute;inset:-.4rem 0;pointer-events:none;
  background:linear-gradient(100deg,transparent 30%,color-mix(in srgb,var(--gold) 45%,transparent) 50%,transparent 70%);background-size:250% 100%;
  animation:crsweep .9s ease-in-out forwards;mix-blend-mode:screen}
@keyframes crsweep{from{background-position:120% 0}to{background-position:-20% 0}}
.creveal.unsealed .cr-t.done:not(.plain):not(.wb){animation:crflip .55s cubic-bezier(.2,.8,.3,1.2)}
@keyframes crflip{0%{transform:rotateX(90deg);box-shadow:0 0 0 transparent}55%{transform:rotateX(-12deg);box-shadow:0 0 14px color-mix(in srgb,var(--gold) 70%,transparent);border-color:var(--gold)}100%{transform:none}}
@media (prefers-reduced-motion: reduce){.cr-seal i,.creveal.breaking .cr-tiles::after,.creveal.unsealed .cr-t.done{transition:none;animation:none}}
.gloss dt{margin-top:1.1rem;font-weight:600}
.gloss dt .st{margin-right:.5rem;vertical-align:.1em}
.gloss dd{margin:.3rem 0 0 0;color:var(--ink2)}
.gloss dd a{white-space:nowrap}

/* Voynich charts (targets/voynich/c2_charts.py). Reference data-viz palette, slots 1-5, validated against both site
   surfaces (adjacent pairs; the scatter uses slots 1-3 only, which pass all-pairs). Light mode needs the direct
   labels and the tables beside each chart (contrast below 3:1 for slots 2-5). */
.vchart{--s1:#3987e5;--s2:#d95926;--s3:#199e70;--s4:#c98500;--s5:#d55181;--gridc:rgba(233,228,216,.09);--axisc:rgba(233,228,216,.35);
  display:block;width:100%;height:auto;margin:1.4rem 0 .3rem;font-family:var(--ui)}
:root[data-theme="light"] .vchart{--s1:#2a78d6;--s2:#eb6834;--s3:#1baf7a;--s4:#eda100;--s5:#e87ba4;--gridc:rgba(31,27,20,.08);--axisc:rgba(31,27,20,.35)}
.vchart text{fill:var(--muted);font-size:11px}
.vchart .lab{fill:var(--ink2)}
.vchart .ttl{fill:var(--ink);font-size:12px}
.vchart .grp{fill:var(--gold);font-size:10px;letter-spacing:.06em;text-transform:uppercase}
.vchart .grid{stroke:var(--gridc)}
.vchart .axis{stroke:var(--axisc)}
.vchart .band{fill:var(--s1);opacity:.12}
.vchart .bg{fill:var(--muted);opacity:.4}
.vchart .s1{fill:var(--s1);stroke:var(--s1)} .vchart .s2{fill:var(--s2);stroke:var(--s2)} .vchart .s3{fill:var(--s3);stroke:var(--s3)}
.vchart .s4{fill:var(--s4);stroke:var(--s4)} .vchart .s5{fill:var(--s5);stroke:var(--s5)} .vchart .ink{fill:var(--ink2);stroke:var(--ink2)}
.vchart circle.s1:not(.hollow),.vchart circle.s2:not(.hollow),.vchart circle.s3:not(.hollow),.vchart circle.s4:not(.hollow),
.vchart circle.s5:not(.hollow),.vchart rect.s2:not(.hollow),.vchart path.s3:not(.hollow){stroke:var(--bg);stroke-width:1.5}
.vchart .hollow{fill:var(--bg);stroke-width:1.6}
.vchart .ring{fill:none;stroke:var(--ink2);stroke-width:1.2}
.vchart .line{fill:none;stroke-width:2}
.vchart .hit{fill:transparent;stroke:none}
.vchart .pt:hover circle:not(.hit),.vchart .pt:hover rect,.vchart .pt:hover path{stroke:var(--ink);stroke-width:2}
.vchart .cell{fill:var(--panel2)} .vchart .cell.on{fill:var(--s1)}
.vchart .cell:hover{stroke:var(--ink);stroke-width:1.5}
.vfig{margin:0 0 1.4rem;overflow-x:auto;-webkit-overflow-scrolling:touch}
.vfig .vchart{min-width:620px}
.vfig figcaption{color:var(--muted);font-size:0.9rem;margin-top:.2rem}

/* ---- credits and contributors (_credits.py, _contributors_page.py) ---- */
.hero .credits{font-family:var(--ui);font-size:0.8rem;margin:.3rem 0 0;color:var(--ink2);line-height:1.6}
.hero .credits a{color:var(--gold);text-decoration:underline dotted;text-underline-offset:3px}
.ctable td a{color:var(--gold)}
.ctable td.n{white-space:nowrap}
.ctable th.n{font-size:0.8rem;letter-spacing:.06em}
.ctable.narrow{max-width:760px}
.cmuted{color:var(--muted);font-size:.9em}
.ccards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,420px),1fr));gap:1rem;margin:1rem 0 1.6rem}
.ccard{background:var(--panel);border:1px solid var(--rule);border-radius:var(--radius);padding:1rem 1.1rem;min-width:0}
.ccard h3{margin:0 0 .35rem;font-size:1.1rem}
.ccard h3 .gh{font-family:var(--ui);font-size:0.8rem;color:var(--muted);margin-left:.4rem;font-weight:400}
.ccard .cnote{margin:.1rem 0 .5rem;color:var(--ink2);font-size:0.9rem}
.ccard .ckinds{font-family:var(--ui);font-size:0.8rem;color:var(--gold);margin:.2rem 0 .6rem}
.ccard ul{margin:0;padding-left:1.1rem;font-size:0.9rem;line-height:1.5}
.ccard li{margin:.25rem 0;overflow-wrap:anywhere}
.ccard .src{font-family:var(--ui);font-size:0.8rem}
.cmore summary{cursor:pointer;font-family:var(--ui);font-size:0.8rem;color:var(--muted);margin-top:.4rem}
.cmonths{display:flex;gap:.6rem;align-items:flex-end;flex-wrap:wrap;margin:.4rem 0 1.4rem}
.cmonths div{display:flex;flex-direction:column;align-items:center;gap:.2rem;font-family:var(--ui);font-size:0.8rem}
.cmonths .bar{display:block;width:34px;background:var(--gold);border-radius:4px 4px 0 0;opacity:.85}
.cmonths i{font-style:normal;color:var(--muted)}
.contribstrip{margin:2.2rem 0 2.4rem}
.cs-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:1.2rem}
.cs-call,.cs-top{background:var(--panel);border:1px solid var(--rule);border-radius:var(--radius);padding:1.1rem 1.25rem;min-width:0}
.cs-call{background:linear-gradient(135deg,color-mix(in srgb,var(--gold) 12%,transparent),color-mix(in srgb,var(--gold) 3%,transparent));border-color:color-mix(in srgb,var(--gold) 35%,transparent)}
.cs-call p{margin:.2rem 0 .6rem}
.cs-kinds{margin:.2rem 0 .8rem;padding-left:1.1rem;line-height:1.55}
.cs-kinds li{margin:.2rem 0}
.btn{display:inline-block;font-family:var(--ui);font-size:0.8rem;background:var(--gold);color:var(--gold-ink);padding:.5rem .95rem;border-radius:999px;text-decoration:none;font-weight:600}
.btn:hover{background:var(--gold2)}
.cs-top h3{margin:0 0 .5rem;font-family:var(--ui);font-size:0.8rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.cs-people{margin:0;padding:0;list-style:none;counter-reset:cp}
.cs-people li{counter-increment:cp;border-bottom:1px solid var(--rule)}
.cs-people li:last-child{border-bottom:0}
.cs-people a{display:flex;justify-content:space-between;gap:.6rem;padding:.38rem 0;text-decoration:none;color:var(--ink)}
.cs-people a::before{content:counter(cp);font-family:var(--ui);font-size:0.8rem;color:var(--muted);width:1.3rem;flex:none}
.cs-people b{flex:1;font-weight:600}
.cs-people span{font-family:var(--ui);font-size:0.8rem;color:var(--muted);text-align:right}
.cs-all{margin:.6rem 0 0;font-size:0.9rem}
.noted.by{color:var(--blue);border-color:color-mix(in srgb,var(--blue) 45%,transparent);text-decoration:none}
@media (max-width:760px){.cs-grid{grid-template-columns:1fr}}

/* ---- contributed item pages (tools/lasry_bnf_pages.py) ---- */
figure img{height:auto}
figure.keytab img{filter:none;background:#fff}
figure.keytab img:hover{transform:none}
table.facts th{width:11rem;text-transform:none;letter-spacing:.02em;font-size:0.8rem}
p.exwhere{font-family:var(--ui);font-size:0.8rem;color:var(--muted);margin:1.4rem 0 -.6rem}
blockquote.plain{font-style:italic}
p.trans{color:var(--ink2)}
@media (max-width:620px){table.facts th{width:auto}}
main li a,table.facts td{overflow-wrap:anywhere}
/* Full texts (profile outcome.texts): transcriptions and decryptions shown inline */
details.ftext{margin:.4rem 0 .8rem}
details.ftext > summary{cursor:pointer;font-family:var(--ui);font-size:0.8rem;color:var(--ink2)}
details.ftext pre{max-height:28rem;overflow:auto;white-space:pre-wrap;word-break:break-word;font-size:0.8rem;line-height:1.45;background:var(--panel);border:1px solid var(--rule);border-radius:6px;padding:.7rem .9rem}
p.ftext{font-family:var(--ui);font-size:0.8rem;margin:.3rem 0}

/* George Lasry's report at the top of a page (lasry_report_html in _build_site.py, 24 Oct 2026) */
section.lreport{margin-bottom:2.4rem}
p.lr-src{color:var(--ink2);font-size:0.9rem}
.lr-summary{background:var(--panel);border:1px solid var(--rule);border-radius:var(--radius);padding:1rem 1.2rem;margin:1rem 0}
.lr-summary h3{margin-top:0}
.lr-summary dl{display:grid;grid-template-columns:max-content 1fr;gap:.25rem 1rem;margin:.6rem 0}
.lr-summary dt{font-weight:700;color:var(--head)} .lr-summary dd{margin:0}
p.lr-status{font-family:var(--ui);font-size:0.8rem;color:var(--ink2)}
p.lr-links a{font-family:var(--ui);font-size:0.8rem}
.lr-pair{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem;margin:.6rem 0 1.4rem}
.lr-pair > div{background:var(--panel);border:1px solid var(--rule);border-radius:8px;padding:.7rem .9rem}
.lr-pair h4{margin:0 0 .4rem;font-size:0.8rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.lr-readable{border-left:3px solid var(--rule);padding-left:1rem;overflow-wrap:anywhere}
.lr-pair,.lr-summary{overflow-wrap:anywhere}
.lr-readable h4{font-family:var(--ui);font-size:0.8rem;color:var(--gold);margin:1.2rem 0 .3rem}
.lr-readable p.lr-doc{font-weight:700;color:var(--head)}
b.dec{color:var(--head);font-weight:700}
pre.lr-key{white-space:pre-wrap;font-size:0.8rem;background:var(--panel);border:1px solid var(--rule);border-radius:6px;padding:.7rem .9rem}
@media (max-width:700px){.lr-pair{grid-template-columns:1fr}.lr-summary dl{grid-template-columns:1fr}.lr-summary dl dd{margin:0 0 .35rem}}
/* hero stat strip and ledger breakdowns (26 Oct 2026) */
.herostats{display:flex;flex-wrap:wrap;gap:.4rem 1.4rem;margin:1.1rem 0 .9rem;font-family:var(--ui);font-size:0.8rem;color:var(--muted)}
.herostats a{color:inherit;text-decoration:none;border:0;background:none;box-shadow:none;white-space:nowrap}
.herostats a:hover{color:var(--ink)}
.herostats b{font-family:var(--display);font-weight:500;font-size:1.6rem;color:var(--gold);margin-right:.3rem;letter-spacing:-.01em}
.sb-big details{margin-top:.35rem;font-size:0.8rem;color:var(--ink2)}
.sb-big details summary{cursor:pointer;font-family:var(--ui);font-size:0.8rem;color:var(--muted)}
.sb-big details span{margin-top:.3rem;font-size:0.8rem}

/* ---------------------------------------------------------------- page components (moved from per-page <style> blocks; scoped by body.pg-<slug>) */
/* atlas */
body.pg-atlas .atlas-wrap{width:min(1240px,calc(100vw - 2rem));position:relative;left:50%;transform:translateX(-50%);margin:1rem 0 1.5rem}
body.pg-atlas .atlas{position:relative;border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden;background:var(--panel3);box-shadow:var(--shadow)}
body.pg-atlas .atlas svg{display:block;width:100%;height:auto;touch-action:none;cursor:grab}
body.pg-atlas .atlas svg:active{cursor:grabbing}
body.pg-atlas .atlas .sea{fill:var(--panel3)}
body.pg-atlas .atlas .grat{fill:none;stroke:var(--rule);stroke-width:.5}
body.pg-atlas .atlas .land{fill:var(--panel2);stroke:color-mix(in srgb,var(--gold) 35%,transparent);stroke-width:.6}
body.pg-atlas .atlas .arc{fill:none;stroke-linecap:round;transition:opacity .4s}
body.pg-atlas .atlas .arc.solved{stroke:var(--green)}
body.pg-atlas .atlas .arc.found{stroke:var(--blue)}
body.pg-atlas .atlas .arc.partial{stroke:var(--amber)}
body.pg-atlas .atlas .arc.stuck{stroke:var(--red)}
body.pg-atlas .atlas .arc.hit{stroke-width:9;stroke:transparent;cursor:pointer}
body.pg-atlas .atlas .arc.fresh{filter:drop-shadow(0 0 4px currentColor)}
body.pg-atlas .atlas .city circle{fill:var(--gold);stroke:var(--bg);stroke-width:.8}
body.pg-atlas .atlas .city text{font:600 10px var(--ui);fill:var(--ink2);paint-order:stroke;stroke:var(--panel3);stroke-width:3px;pointer-events:none}
body.pg-atlas .atlas .pulse{fill:none;stroke:var(--gold2);stroke-width:1.5}
body.pg-atlas .atlas .dim .arc:not(.hot){opacity:.08!important}
body.pg-atlas .atlas .arc.off,body.pg-atlas .atlas .dim .arc.off{opacity:0!important}
body.pg-atlas .a-year{position:absolute;left:1.1rem;top:.7rem;font-family:var(--display);font-size:clamp(2.2rem,6vw,4.2rem);font-weight:700;color:var(--head);opacity:.9;line-height:1;pointer-events:none;letter-spacing:-.02em}
body.pg-atlas .a-count{position:absolute;left:1.2rem;top:clamp(3rem,7.5vw,5.2rem);font:0.8rem var(--ui);color:var(--muted);pointer-events:none}
body.pg-atlas .a-legend{position:absolute;right:.8rem;top:.7rem;display:flex;flex-wrap:wrap;gap:.3rem;justify-content:flex-end;max-width:60%}
body.pg-atlas .a-legend button{font:0.8rem var(--ui);padding:.2rem .6rem;border-radius:999px;border:1px solid var(--rule);background:var(--bg);color:var(--ink2);cursor:pointer}
body.pg-atlas .a-legend button i{display:inline-block;width:.6rem;height:.6rem;border-radius:50%;margin-right:.35rem;vertical-align:-1px}
body.pg-atlas .a-legend button[aria-pressed=false]{opacity:.4}
body.pg-atlas .a-tip{position:absolute;pointer-events:none;background:var(--bg2);border:1px solid var(--rule);border-radius:10px;padding:.5rem .7rem;font-size:0.8rem;max-width:280px;box-shadow:var(--shadow);opacity:0;transition:opacity .15s;z-index:3}
body.pg-atlas .a-tip b{display:block;font-family:var(--display);color:var(--head)}
body.pg-atlas .a-tip span{font:0.8rem var(--ui);color:var(--muted)}
body.pg-atlas .a-ctl{display:flex;align-items:center;gap:.8rem;margin-top:.8rem;flex-wrap:wrap}
body.pg-atlas .a-ctl button{font:600 0.8rem var(--ui);padding:.45rem .9rem;border-radius:999px;border:1px solid var(--gold);background:var(--gold);color:var(--gold-ink);cursor:pointer;min-width:6.5rem}
body.pg-atlas .a-ctl button.ghost{background:transparent;color:var(--ink2);border-color:var(--rule);min-width:0}
body.pg-atlas .a-time{flex:1;min-width:220px;position:relative}
body.pg-atlas .a-hist{display:block;width:100%;height:38px}
body.pg-atlas .a-hist rect{fill:color-mix(in srgb,var(--gold) 45%,transparent)}
body.pg-atlas .a-hist rect.on{fill:var(--gold2)}
body.pg-atlas .a-time input{width:100%;margin:0;accent-color:var(--gold)}
body.pg-atlas .a-ticks{display:flex;justify-content:space-between;font:0.8rem var(--ui);color:var(--muted)}
body.pg-atlas .a-feed{font:0.8rem var(--ui);color:var(--muted);min-height:1.4em;margin:.5rem 0 0}
body.pg-atlas .a-feed a{font-family:var(--serif);font-size:0.9rem}
body.pg-atlas .a-top{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:.5rem;margin:1rem 0}
body.pg-atlas .a-top button{display:block;width:100%;text-align:left;font:inherit;color:inherit;cursor:pointer;border:1px solid var(--rule);border-radius:10px;padding:.55rem .8rem;background:var(--panel);transition:border-color .2s,background .2s}
body.pg-atlas .a-top button:hover{border-color:color-mix(in srgb,var(--gold) 55%,transparent)}
body.pg-atlas .a-top button[aria-pressed=true]{border-color:var(--gold);background:color-mix(in srgb,var(--gold) 14%,var(--panel))}
body.pg-atlas .a-top b{font-family:var(--display);color:var(--head)}
body.pg-atlas .a-top span{display:block;font:0.8rem var(--ui);color:var(--muted)}
body.pg-atlas .a-top .avs{float:right;margin:.1rem 0 0 .4rem}
body.pg-atlas .a-top .none{font:0.8rem var(--ui);color:var(--muted)}
body.pg-atlas .a-people{margin:0 0 .7rem}
body.pg-atlas .a-people .a-ph{display:flex;align-items:baseline;gap:.8rem;flex-wrap:wrap;margin-bottom:.4rem}
body.pg-atlas .a-people .a-ph span{font:0.8rem var(--ui);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
body.pg-atlas .a-people input{flex:0 1 16rem;font:0.8rem var(--serif);padding:.3rem .7rem;border-radius:999px;border:1px solid var(--rule);background:var(--bg);color:var(--ink)}
body.pg-atlas .a-row{display:flex;gap:.55rem;overflow-x:auto;padding:.3rem .1rem .6rem;scrollbar-width:thin}
body.pg-atlas .a-p{flex:0 0 auto;width:6.8rem;display:flex;flex-direction:column;align-items:center;gap:.25rem;font:inherit;background:none;border:0;padding:0;cursor:pointer;color:var(--ink2);transition:opacity .35s}
body.pg-atlas .a-p img{width:52px;height:52px;border-radius:50%;object-fit:cover;border:1px solid color-mix(in srgb,var(--gold) 55%,transparent);box-shadow:0 0 0 3px var(--bg),0 0 0 4px var(--rule);filter:sepia(.18) saturate(.9);transition:box-shadow .25s,transform .25s,filter .35s}
body.pg-atlas .a-p b{font-weight:400;font-size:0.8rem;line-height:1.15;text-align:center;max-width:100%}
body.pg-atlas .a-p i{font:0.8rem var(--ui);font-style:normal;color:var(--muted)}
body.pg-atlas .a-p[hidden]{display:none}
body.pg-atlas .a-p:hover,body.pg-atlas .a-p:focus,body.pg-atlas .a-p:active{background:none;box-shadow:none;transform:none}
body.pg-atlas .a-p:hover img{box-shadow:0 0 0 3px var(--bg),0 0 0 5px color-mix(in srgb,var(--gold) 70%,transparent)}
body.pg-atlas .a-p[aria-pressed=true] img{box-shadow:0 0 0 3px var(--bg),0 0 0 6px var(--gold)}
body.pg-atlas .a-p[aria-pressed=true] b{color:var(--head)}
body.pg-atlas .a-row.playing .a-p:not(.live){opacity:.35}
body.pg-atlas .a-row.playing .a-p:not(.live) img{filter:grayscale(.8) sepia(.1)}
body.pg-atlas .a-p.live img{box-shadow:0 0 0 3px var(--bg),0 0 0 5px var(--gold2),0 0 14px var(--gold2)}
body.pg-atlas .a-row.picking .a-p:not([aria-pressed=true]){opacity:.55}
body.pg-atlas .a-filter{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin:.6rem 0 0;padding:.55rem .8rem;border:1px solid color-mix(in srgb,var(--gold) 45%,transparent);border-radius:10px;background:color-mix(in srgb,var(--gold) 8%,var(--panel));font-size:0.9rem}
body.pg-atlas .a-filter[hidden]{display:none}
body.pg-atlas .a-filter .avs{flex:0 0 auto}
body.pg-atlas .a-filter .what{flex:1 1 20rem}
body.pg-atlas .a-filter .what a{white-space:nowrap}
body.pg-atlas .a-filter button{font:0.8rem var(--ui);padding:.25rem .7rem;border-radius:999px;border:1px solid var(--rule);background:var(--bg);color:var(--ink2);cursor:pointer}
body.pg-atlas .avs{display:inline-flex;vertical-align:middle}
body.pg-atlas .avs img{width:30px;height:30px;border-radius:50%;object-fit:cover;border:1px solid color-mix(in srgb,var(--gold) 55%,transparent);box-shadow:0 0 0 2px var(--panel);filter:sepia(.18) saturate(.9)}
body.pg-atlas .avs img+img{margin-left:-9px}
body.pg-atlas .a-tip .avs{float:left;margin:.1rem .55rem .2rem 0}
body.pg-atlas .a-tip .avs img{width:36px;height:36px;box-shadow:0 0 0 2px var(--bg2)}
body.pg-atlas .atlas .city{cursor:pointer}
body.pg-atlas .atlas .city .hitc{fill:transparent;stroke:none}
body.pg-atlas .atlas .city.sel circle:not(.hitc){fill:var(--gold2);stroke:var(--head);stroke-width:1.4}
body.pg-atlas .atlas .pin circle{fill:var(--bg);stroke:var(--gold);stroke-width:1.6}
body.pg-atlas .atlas .pin{pointer-events:none}
body.pg-atlas .atlas .pin text.mono{font:700 14px var(--display);fill:var(--gold2)}
body.pg-atlas .mono{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:color-mix(in srgb,var(--gold) 16%,var(--panel2));color:var(--gold2);font-family:var(--display);font-weight:600;border:1px solid color-mix(in srgb,var(--gold) 55%,transparent);box-sizing:border-box}
body.pg-atlas .a-p .mono{width:52px;height:52px;font-size:1.45rem;box-shadow:0 0 0 3px var(--bg),0 0 0 4px var(--rule);transition:box-shadow .25s,filter .35s}
body.pg-atlas .a-p:hover .mono{box-shadow:0 0 0 3px var(--bg),0 0 0 5px color-mix(in srgb,var(--gold) 70%,transparent)}
body.pg-atlas .a-p[aria-pressed=true] .mono{box-shadow:0 0 0 3px var(--bg),0 0 0 6px var(--gold)}
body.pg-atlas .a-p.live .mono{box-shadow:0 0 0 3px var(--bg),0 0 0 5px var(--gold2),0 0 14px var(--gold2)}
body.pg-atlas .a-row.playing .a-p:not(.live) .mono{filter:grayscale(.8)}
body.pg-atlas .avs .mono{width:30px;height:30px;font-size:0.9rem;box-shadow:0 0 0 2px var(--panel)}
body.pg-atlas .avs .mono+img,body.pg-atlas .avs img+.mono,body.pg-atlas .avs .mono+.mono{margin-left:-9px}
body.pg-atlas .a-tip .avs .mono{width:36px;height:36px;box-shadow:0 0 0 2px var(--bg2)}
body.pg-atlas .a-top .avs,body.pg-atlas .a-tip .avs{display:inline-flex}
body.pg-atlas .a-top .avs .mono,body.pg-atlas .a-tip .avs .mono,body.pg-atlas .a-filter .avs .mono{display:inline-flex;font:600 0.9rem var(--display);color:var(--gold2)}
@media (max-width:640px){body.pg-atlas .a-legend{max-width:100%;justify-content:flex-start}
body.pg-atlas .a-count{display:none}
body.pg-atlas .a-legend{position:static;padding:.5rem .6rem}}
/* catalogue */
body.pg-catalogue .hero h1 .stk{white-space:nowrap}
body.pg-catalogue .hero h1 .stk .sticker{--sz:5.8rem;margin:-.5rem 0 -.9rem .7rem}
body.pg-catalogue .steps{display:flex;flex-wrap:wrap;gap:.4rem .9rem;margin:.9rem 0 0;padding:0;list-style:none;font-family:var(--ui);font-size:.9rem;color:var(--ink2)}
body.pg-catalogue .steps li{display:flex;align-items:center;gap:.45rem;margin:0}
body.pg-catalogue .steps b{display:inline-grid;place-items:center;width:1.5rem;height:1.5rem;border-radius:50%;background:var(--gold);color:var(--gold-ink);font-size:.78rem}
/* filter toolbar (catalogue.html, writeups.html): search, one dropdown per facet, live counts on the chips */
.cfilters{display:flex;flex-wrap:wrap;gap:.45rem;align-items:center;margin:1.2rem 0 .8rem;position:relative;z-index:3}
.cfilters input[type=search]{background:var(--bg);color:var(--ink);border:1px solid var(--rule);border-radius:999px;padding:.38rem .8rem;font:inherit;font-size:.92rem;min-width:0;flex:1 1 150px;max-width:260px}
.cfilters input[type=search]:focus{outline:none;border-color:var(--gold)}
.cfilters .count{font-family:var(--ui);font-size:.85rem;color:var(--muted);margin-left:.3rem}
.cfilters .chip.clear{border-color:var(--gold);color:var(--gold2)}
.cfilters details.dd{position:relative;margin:0}
.cfilters details.dd > summary{list-style:none;cursor:pointer;padding:.32rem .75rem;border:1px solid var(--rule);border-radius:999px;background:var(--bg);color:var(--ink2);font-family:var(--ui);font-size:.85rem;letter-spacing:0;white-space:nowrap;max-width:15rem;overflow:hidden;text-overflow:ellipsis}
.cfilters details.dd > summary::-webkit-details-marker{display:none}
.cfilters details.dd > summary::after{content:" \25BE";color:var(--muted)}
.cfilters details.dd > summary:hover,.cfilters details.dd[open] > summary{border-color:var(--gold)}
.cfilters details.dd.act > summary{background:var(--gold);color:var(--gold-ink);border-color:var(--gold)}
.cfilters details.dd.act > summary::after{color:inherit}
.cfilters .dd .pop{position:absolute;top:calc(100% + .35rem);left:0;width:max-content;max-width:min(34rem,calc(100vw - 2rem));background:var(--bg2);border:1px solid var(--rule);border-radius:var(--radius);box-shadow:0 8px 24px rgba(0,0,0,.18);padding:.6rem .8rem}
.cfilters .dd .pop .facet + .facet{border-top:1px solid var(--rule);padding-top:.4rem}
/* a dropdown that holds one facet names it on its button, so the facet label is hidden */
.cfilters .pop > .facet:only-child .flabel{display:none}
.cfilters .weights label{font-family:var(--ui);font-size:.85rem;color:var(--muted);display:inline-flex;align-items:center;gap:.4rem;margin-right:.9rem}
.cfilters .weights input[type=range]{width:110px;accent-color:var(--gold)}
.cfilters .weights .wv{min-width:2.4em;color:var(--ink2);font-family:var(--mono);font-size:.78rem}
.cfilters .facet{display:flex;gap:.3rem;align-items:baseline;margin:.3rem 0}
.cfilters .facet .opts{display:flex;flex-wrap:wrap;gap:.3rem;align-items:center;flex:1}
.cfilters .flabel{font-family:var(--ui);font-size:.82rem;color:var(--muted);flex:0 0 6.5rem}
.cfilters .chip{box-shadow:none;transform:none;padding:.2rem .65rem;border-radius:999px;border:1px solid var(--rule);background:var(--bg);color:var(--ink2);font-family:var(--ui);font-size:.82rem;cursor:pointer}
.cfilters .chip .n{margin-left:.35em;font-family:var(--mono);font-size:.7rem;color:var(--muted)}
.cfilters .chip[aria-pressed=true]{background:var(--gold);color:var(--gold-ink);border-color:var(--gold)}
.cfilters .chip[aria-pressed=true] .n{color:inherit;opacity:.75}
.cfilters .chip.z{opacity:.4}
.cfilters .chip:hover{border-color:var(--gold)}
body.pg-catalogue .tw{overflow-x:auto;margin:0 0 1rem;border:1px solid var(--rule);border-radius:var(--radius);background:var(--bg2);width:min(1240px,calc(100vw - 2rem));position:relative;left:50%;transform:translateX(-50%)}
body.pg-catalogue table.cat{border-collapse:separate;border-spacing:0;width:100%;min-width:900px;font-size:.9rem;table-layout:fixed}
body.pg-catalogue table.cat col.c-prio{width:6.5%}
body.pg-catalogue table.cat col.c-date{width:10.5%}
body.pg-catalogue table.cat col.c-item{width:41%}
body.pg-catalogue table.cat col.c-shelf{width:17.5%}
body.pg-catalogue table.cat col.c-sc{width:7%}
body.pg-catalogue table.cat col.c-cls{width:3.5%}
body.pg-catalogue table.cat th{position:sticky;top:0;z-index:1;background:var(--bg2);color:var(--muted);font-family:var(--ui);font-weight:normal;font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;text-align:left;padding:.65rem .7rem;border-bottom:1px solid var(--rule);white-space:nowrap;cursor:pointer;user-select:none}
body.pg-catalogue table.cat th:hover{color:var(--head)}
body.pg-catalogue table.cat th[aria-sort=descending]::after{content:" \25BE";color:var(--gold)}
body.pg-catalogue table.cat th[aria-sort=ascending]::after{content:" \25B4";color:var(--gold)}
body.pg-catalogue table.cat th.sc,body.pg-catalogue table.cat td.sc,body.pg-catalogue table.cat th.cls,body.pg-catalogue table.cat td.cls,body.pg-catalogue table.cat td.prio,body.pg-catalogue table.cat th.prio{text-align:center}
body.pg-catalogue table.cat td{padding:.55rem .7rem;border-bottom:1px solid var(--rule);vertical-align:top}
body.pg-catalogue tr.e{cursor:pointer;transition:background .15s}
body.pg-catalogue tr.e:hover td{background:color-mix(in srgb,var(--gold) 9%,transparent)}
body.pg-catalogue td.prio b{font-family:var(--display);font-size:1.35rem;color:var(--gold);font-weight:normal}
body.pg-catalogue td.date{font-family:var(--mono);font-size:.76rem;color:var(--ink2)}
body.pg-catalogue td.date .num{display:block;color:var(--muted);font-size:.7rem;margin-top:.2rem}
body.pg-catalogue td.item a.t{color:var(--head);font-weight:600;border:0}
body.pg-catalogue tr.e:hover td.item a.t{color:var(--gold2)}
body.pg-catalogue td.item .sub{display:block;font-size:.84rem;color:var(--muted);margin-top:.2rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.pg-catalogue .pill{display:inline-block;font-family:var(--ui);font-size:.75rem;color:var(--blue);border:1px solid color-mix(in srgb,var(--blue) 50%,transparent);border-radius:999px;padding:0 .5rem;margin-left:.45rem;vertical-align:.08em;white-space:nowrap}
body.pg-catalogue .pill.att{color:var(--green);border-color:color-mix(in srgb,var(--green) 50%,transparent)}
body.pg-catalogue .pill.work{color:var(--amber);border-color:color-mix(in srgb,var(--amber) 50%,transparent)}
body.pg-catalogue td.shelf{font-size:.8rem;color:var(--ink2);overflow-wrap:anywhere}
body.pg-catalogue td.shelf .sm{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
body.pg-catalogue .dots{display:inline-flex;gap:3px}
body.pg-catalogue .dots i{width:9px;height:9px;border-radius:50%;background:var(--rule);display:inline-block}
body.pg-catalogue .dots i.on{background:var(--gold)}
body.pg-catalogue .dots.diff i.on{background:var(--red)}
body.pg-catalogue .badge{display:inline-block;min-width:1.5rem;padding:.1rem .45rem;border-radius:6px;font-family:var(--mono);font-size:.72rem;font-weight:bold}
body.pg-catalogue .badge.A{background:var(--green-bg);color:var(--green)}
body.pg-catalogue .badge.B{background:var(--amber-bg);color:var(--amber)}
body.pg-catalogue .badge.C{background:var(--red-bg);color:var(--red)}
body.pg-catalogue .seen.img{color:var(--blue);font-size:.7em;vertical-align:middle}
body.pg-catalogue .seen.cat{color:var(--muted);font-size:.8em;vertical-align:middle}
body.pg-catalogue .legend{font-family:var(--ui);font-size:.82rem;color:var(--muted);margin:.4rem 0 1.4rem;display:flex;flex-wrap:wrap;gap:.4rem 1.2rem}
body.pg-catalogue.nojs .jsonly{display:none}
@media (max-width:760px){body.pg-catalogue .hero h1 .stk .sticker{--sz:5.2rem;margin:-1.2rem 0 -1rem .4rem}body.pg-catalogue table.cat{min-width:760px}}
@media (max-width:760px){.cfilters .facet{flex-direction:column;gap:.2rem}.cfilters .flabel{flex-basis:auto}.cfilters input[type=search]{flex-basis:100%;max-width:none}.cfilters details.dd{position:static}.cfilters .dd .pop{left:0;right:0;top:calc(100% + .35rem);max-width:none;width:auto;max-height:60vh;overflow:auto}}
/* catalogue: one page per cipher, docs/solve/<id>.html */
body.pg-solve .facts{display:grid;grid-template-columns:max-content 1fr;gap:.3rem 1.2rem;margin:1rem 0 0;font-size:.95rem}
body.pg-solve .facts dt{font-family:var(--ui);font-size:.78rem;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);padding-top:.2rem}
body.pg-solve .facts dd{margin:0;color:var(--ink2);overflow-wrap:anywhere}
body.pg-solve .agentbox{position:relative;border:2px dashed var(--gold);border-radius:var(--radius);background:var(--panel3);margin:2.4rem 0 1.4rem}
body.pg-solve .agentbox pre{margin:0;padding:1.3rem 1.2rem 1.1rem;white-space:pre-wrap;overflow-wrap:anywhere;font-family:var(--mono);font-size:.8rem;line-height:1.55;color:var(--ink);max-height:none;background:none;border:0}
body.pg-solve .agentbox .copy{position:absolute;top:.6rem;right:5.6rem;font-family:var(--ui);font-size:.82rem;padding:.3rem .8rem;border-radius:6px;border:1px solid var(--gold);background:var(--gold);color:var(--gold-ink);cursor:pointer}
body.pg-solve .agentbox .sticker{position:absolute;top:-2.6rem;right:-.6rem;--sz:5.6rem;z-index:2}
body.pg-solve .urlline{font-family:var(--mono);font-size:.85rem;background:var(--panel);border:1px solid var(--rule);border-radius:6px;padding:.45rem .7rem;overflow-wrap:anywhere}
body.pg-solve .ko{display:block;margin:.4rem 0}
body.pg-solve .ko i{font-style:normal;font-family:var(--ui);font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;padding:.02rem .45rem;border-radius:999px;margin-right:.35rem}
body.pg-solve .ko i.k{background:var(--green-bg);color:var(--green)}
body.pg-solve .ko i.o{background:var(--amber-bg);color:var(--amber)}
body.pg-solve .asof{font-family:var(--ui);font-size:.8rem;color:var(--muted)}
body.pg-solve .dots{display:inline-flex;gap:3px;vertical-align:middle}
body.pg-solve .dots i{width:9px;height:9px;border-radius:50%;background:var(--rule);display:inline-block}
body.pg-solve .dots i.on{background:var(--gold)}
body.pg-solve .dots.diff i.on{background:var(--red)}
body.pg-solve .btns{display:flex;flex-wrap:wrap;gap:.6rem;margin:.8rem 0}
body.pg-solve .btns a{font-family:var(--ui);font-size:.88rem;padding:.45rem .9rem;border:1px solid var(--gold);border-radius:8px}
body.pg-solve .btns a.primary{background:var(--gold);color:var(--gold-ink)}
@media (max-width:760px){body.pg-solve .facts{grid-template-columns:1fr}body.pg-solve .facts dt{padding-top:.5rem}body.pg-solve .agentbox .sticker{--sz:4.6rem;top:-2.2rem;right:-.3rem}body.pg-solve .agentbox .copy{right:4.6rem}}
/* further: the readings left partial (further.html) and one page per reading (docs/further/<slug>.html, also pg-solve) */
body.pg-further .hero h1 .stk{white-space:nowrap}
body.pg-further .hero h1 .stk .sticker{--sz:5.8rem;margin:-.5rem 0 -.9rem .7rem}
body.pg-further .steps{display:flex;flex-wrap:wrap;gap:.4rem .9rem;margin:.9rem 0 0;padding:0;list-style:none;font-family:var(--ui);font-size:.9rem;color:var(--ink2)}
body.pg-further .steps li{display:flex;align-items:center;gap:.45rem;margin:0}
body.pg-further .steps b{display:inline-grid;place-items:center;width:1.5rem;height:1.5rem;border-radius:50%;background:var(--gold);color:var(--gold-ink);font-size:.78rem}
body.pg-further .qbar{display:flex;flex-wrap:wrap;gap:.6rem 1rem;align-items:center;margin:1.2rem 0 .7rem}
body.pg-further .qbar input[type=search]{background:var(--bg);color:var(--ink);border:1px solid var(--rule);border-radius:6px;padding:.4rem .7rem;font:inherit;font-size:.95rem;min-width:260px;flex:0 1 340px}
body.pg-further .qbar .count{font-family:var(--ui);font-size:.85rem;color:var(--muted)}
body.pg-further details.more{margin:0 0 .8rem}
body.pg-further details.more > summary{cursor:pointer;font-family:var(--ui);font-size:.85rem;color:var(--muted)}
body.pg-further details.more[open] > summary{color:var(--gold2)}
body.pg-further .ctl{background:var(--panel);border:1px solid var(--rule);border-radius:var(--radius);padding:.8rem 1.1rem .5rem;margin:.6rem 0 0}
body.pg-further .ctl .row{display:flex;flex-wrap:wrap;gap:.6rem 1.4rem;align-items:center;margin-bottom:.5rem}
body.pg-further .ctl label{font-family:var(--ui);font-size:.85rem;color:var(--muted);display:inline-flex;align-items:center;gap:.4rem}
body.pg-further .ctl input[type=range]{width:120px;accent-color:var(--gold)}
body.pg-further .ctl .wv{min-width:2.4em;color:var(--ink2);font-family:var(--mono);font-size:.78rem}
body.pg-further .facet{display:flex;flex-wrap:wrap;gap:.3rem;align-items:center;margin:.3rem 0}
body.pg-further .flabel{font-family:var(--ui);font-size:.82rem;color:var(--muted);min-width:5rem}
body.pg-further .chip{padding:.2rem .65rem;border-radius:999px;border:1px solid var(--rule);background:var(--bg);color:var(--ink2);font-family:var(--ui);font-size:.82rem;cursor:pointer}
body.pg-further .chip[aria-pressed=true]{background:var(--gold);color:var(--gold-ink);border-color:var(--gold)}
body.pg-further .chip:hover{border-color:var(--gold)}
body.pg-further .tw{overflow-x:auto;margin:0 0 1rem;border:1px solid var(--rule);border-radius:var(--radius);background:var(--bg2);width:min(1240px,calc(100vw - 2rem));position:relative;left:50%;transform:translateX(-50%)}
body.pg-further table.cat{border-collapse:separate;border-spacing:0;width:100%;min-width:900px;font-size:.9rem;table-layout:fixed}
body.pg-further table.cat col.c-prio{width:6.5%}
body.pg-further table.cat col.c-date{width:10.5%}
body.pg-further table.cat col.c-item{width:41%}
body.pg-further table.cat col.c-shelf{width:17.5%}
body.pg-further table.cat col.c-sc{width:7%}
body.pg-further table.cat col.c-cls{width:3.5%}
body.pg-further table.cat th{position:sticky;top:0;z-index:1;background:var(--bg2);color:var(--muted);font-family:var(--ui);font-weight:normal;font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;text-align:left;padding:.65rem .7rem;border-bottom:1px solid var(--rule);white-space:nowrap;cursor:pointer;user-select:none}
body.pg-further table.cat th:hover{color:var(--head)}
body.pg-further table.cat th[aria-sort=descending]::after{content:" \25BE";color:var(--gold)}
body.pg-further table.cat th[aria-sort=ascending]::after{content:" \25B4";color:var(--gold)}
body.pg-further table.cat th.sc,body.pg-further table.cat td.sc,body.pg-further table.cat th.cls,body.pg-further table.cat td.cls,body.pg-further table.cat td.prio,body.pg-further table.cat th.prio{text-align:center}
body.pg-further table.cat td{padding:.55rem .7rem;border-bottom:1px solid var(--rule);vertical-align:top}
body.pg-further tr.e{cursor:pointer;transition:background .15s}
body.pg-further tr.e:hover td{background:color-mix(in srgb,var(--gold) 9%,transparent)}
body.pg-further td.prio b{font-family:var(--display);font-size:1.35rem;color:var(--gold);font-weight:normal}
body.pg-further td.date{font-family:var(--mono);font-size:.76rem;color:var(--ink2)}
body.pg-further td.date .num{display:block;color:var(--muted);font-size:.7rem;margin-top:.2rem}
body.pg-further td.item a.t{color:var(--head);font-weight:600;border:0}
body.pg-further tr.e:hover td.item a.t{color:var(--gold2)}
body.pg-further td.item .sub{display:block;font-size:.84rem;color:var(--muted);margin-top:.2rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.pg-further .pill{display:inline-block;font-family:var(--ui);font-size:.75rem;color:var(--blue);border:1px solid color-mix(in srgb,var(--blue) 50%,transparent);border-radius:999px;padding:0 .5rem;margin-left:.45rem;vertical-align:.08em;white-space:nowrap}
body.pg-further .pill.att{color:var(--green);border-color:color-mix(in srgb,var(--green) 50%,transparent)}
body.pg-further .pill.work{color:var(--amber);border-color:color-mix(in srgb,var(--amber) 50%,transparent)}
body.pg-further td.shelf{font-size:.8rem;color:var(--ink2);overflow-wrap:anywhere}
body.pg-further td.shelf .sm{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
body.pg-further .dots{display:inline-flex;gap:3px}
body.pg-further .dots i{width:9px;height:9px;border-radius:50%;background:var(--rule);display:inline-block}
body.pg-further .dots i.on{background:var(--gold)}
body.pg-further .dots.diff i.on{background:var(--red)}
body.pg-further .badge{display:inline-block;min-width:1.5rem;padding:.1rem .45rem;border-radius:6px;font-family:var(--mono);font-size:.72rem;font-weight:bold}
body.pg-further .badge.A{background:var(--green-bg);color:var(--green)}
body.pg-further .badge.B{background:var(--amber-bg);color:var(--amber)}
body.pg-further .badge.C{background:var(--red-bg);color:var(--red)}
body.pg-further .seen.img{color:var(--blue);font-size:.7em;vertical-align:middle}
body.pg-further .seen.cat{color:var(--muted);font-size:.8em;vertical-align:middle}
body.pg-further .legend{font-family:var(--ui);font-size:.82rem;color:var(--muted);margin:.4rem 0 1.4rem;display:flex;flex-wrap:wrap;gap:.4rem 1.2rem}
body.pg-further.nojs .jsonly{display:none}
@media (max-width:760px){body.pg-further .hero h1 .stk .sticker{--sz:5.2rem;margin:-1.2rem 0 -1rem .4rem}body.pg-further table.cat{min-width:760px}}
body.pg-further table.cat.fur col.c-prio{width:8%}
body.pg-further table.cat.fur col.c-date{width:10%}
body.pg-further table.cat.fur col.c-item{width:52%}
body.pg-further table.cat.fur col.c-gaps{width:30%}
body.pg-further table.cat.fur td.date{font-family:var(--mono)}
body.pg-further table.cat.fur td.prio b{font-size:1.15rem;white-space:nowrap}
body.pg-further table.cat.fur .pill{color:var(--ink2);border-color:var(--rule)}
body.pg-further td.gaps{line-height:1.9}
body.pg-further .gap{display:inline-block;font-family:var(--ui);font-size:.75rem;color:var(--muted);background:var(--panel2);border:1px solid var(--rule);border-radius:999px;padding:0 .5rem;margin:0 .3rem .2rem 0;white-space:nowrap}
body.pg-further .gap.w{color:var(--gold-ink);background:var(--gold);border-color:var(--gold)}
body.pg-further .legend .gap{margin:0}
body.pg-further .qbar .only{font-family:var(--ui);font-size:.85rem;color:var(--ink2);display:inline-flex;align-items:center;gap:.35rem;cursor:pointer}
body.pg-further1 .gap{display:inline-block;font-family:var(--ui);font-size:.75rem;color:var(--muted);background:var(--panel2);border:1px solid var(--rule);border-radius:999px;padding:0 .5rem;margin:0 .3rem .2rem 0;white-space:nowrap}
body.pg-further1 .gap.w{color:var(--gold-ink);background:var(--gold);border-color:var(--gold)}
body.pg-further1 ul.gaplist,body.pg-further1 ul.esc{padding-left:1.1rem}
body.pg-further1 ul.gaplist li,body.pg-further1 ul.esc li{margin:.45rem 0;color:var(--ink2);font-size:.95rem}
body.pg-further1 ul.esc{list-style:none;padding-left:0}
/* goldbar */
body.pg-goldbar .freqchart{width:100%;max-width:760px;height:auto;color:var(--ink);margin:1rem 0;display:block}
body.pg-goldbar .cg{font-family:var(--mono);font-size:0.8rem;line-height:1.85;color:var(--gold2,#e7c87a);word-break:break-all}
body.pg-goldbar .kt{font-family:var(--mono);font-size:0.8rem;border-collapse:collapse;margin:.6rem 0 1rem;width:auto}
body.pg-goldbar .kt th,body.pg-goldbar .kt td{border:1px solid var(--rule);padding:.25rem .6rem;text-align:left}
body.pg-goldbar .kt th{background:rgba(255,255,255,.05)}
body.pg-goldbar .kt td.num{text-align:right}
/* highlights */
body.pg-highlights main{--c-hard:var(--violet);--c-hard-bg:var(--violet-bg);--c-funny:var(--amber);--c-funny-bg:var(--amber-bg);--c-hist:var(--red);--c-hist-bg:var(--red-bg);--c-ing:var(--blue);--c-ing-bg:var(--blue-bg)}
body.pg-highlights .hl-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.8rem;margin:1.6rem 0 1.2rem}
body.pg-highlights .hl-stat{background:var(--panel);border:1px solid var(--rule);border-radius:var(--radius);padding:.9rem 1rem}
body.pg-highlights .hl-stat b{display:block;font-family:var(--display);font-size:clamp(1.5rem,3.4vw,2.2rem);line-height:1.05;color:var(--head);font-weight:600}
body.pg-highlights .hl-stat span{font:0.8rem var(--ui);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
@media (max-width:640px){body.pg-highlights .hl-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
body.pg-highlights .hl-time{position:relative;margin:1.4rem 0 .4rem;padding:2.4rem 0 2.2rem}
body.pg-highlights .hl-time .axis{position:absolute;left:0;right:0;top:50%;height:1px;background:var(--rule)}
body.pg-highlights .hl-time .tick{position:absolute;top:calc(50% + .6rem);transform:translateX(-50%);font:0.8rem var(--ui);color:var(--muted)}
body.pg-highlights .hl-time .tick::before{content:"";position:absolute;left:50%;top:-.65rem;width:1px;height:.4rem;background:var(--rule)}
body.pg-highlights .hl-dot{position:absolute;top:50%;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;border:0;padding:0;cursor:pointer;
  background:var(--c);box-shadow:0 0 0 3px var(--bg),0 0 12px color-mix(in srgb,var(--c) 60%,transparent);transition:transform .18s}
body.pg-highlights .hl-dot:hover,body.pg-highlights .hl-dot:focus-visible{transform:scale(1.45);outline:none;z-index:2}
body.pg-highlights .hl-dot.up{top:calc(50% - 1.05rem)}
body.pg-highlights .hl-dot.dn{top:calc(50% + 1.05rem)}
body.pg-highlights .hl-dot[data-cat=funny]{--c:var(--c-funny)}
body.pg-highlights .hl-dot[data-cat=hist]{--c:var(--c-hist)}
body.pg-highlights .hl-dot[data-cat=ing]{--c:var(--c-ing)}
body.pg-highlights .hl-dot[data-cat=hard]{--c:var(--c-hard)}
body.pg-highlights .hl-dot.dim{opacity:.15}
body.pg-highlights .hl-tip{position:absolute;bottom:calc(100% - 1.2rem);transform:translateX(-50%);background:var(--bg2);border:1px solid var(--rule);border-radius:10px;
  padding:.4rem .65rem;font-size:0.8rem;white-space:nowrap;box-shadow:var(--shadow);pointer-events:none;opacity:0;transition:opacity .15s;z-index:5;color:var(--ink)}
body.pg-highlights .hl-tip.on{opacity:1}
body.pg-highlights .hl-tip b{font-family:var(--ui);font-size:0.8rem;color:var(--gold2);margin-right:.4rem;font-weight:500}
body.pg-highlights .hl-bar{position:sticky;top:6rem;z-index:20;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;padding:.7rem 0;margin:.4rem 0 1rem;
  background:linear-gradient(var(--bg) 70%,transparent)}
body.pg-highlights .hl-chip{font:0.8rem var(--ui);letter-spacing:.04em;padding:.42rem .85rem;border-radius:999px;border:1px solid var(--rule);background:var(--panel);color:var(--ink2);cursor:pointer;display:inline-flex;align-items:center;gap:.45rem;transition:border-color .2s,background .2s}
body.pg-highlights .hl-chip i{width:.6rem;height:.6rem;border-radius:50%;background:var(--c,var(--gold));display:inline-block}
body.pg-highlights .hl-chip[data-f=funny]{--c:var(--c-funny)}
body.pg-highlights .hl-chip[data-f=hist]{--c:var(--c-hist)}
body.pg-highlights .hl-chip[data-f=ing]{--c:var(--c-ing)}
body.pg-highlights .hl-chip[data-f=hard]{--c:var(--c-hard)}
body.pg-highlights .hl-chip:hover{border-color:var(--c,var(--gold))}
body.pg-highlights .hl-chip[aria-pressed=true]{border-color:var(--c,var(--gold));background:color-mix(in srgb,var(--c,var(--gold)) 16%,var(--panel));color:var(--head)}
body.pg-highlights .hl-chip.lucky{margin-left:auto;--c:var(--gold)}
@media (max-width:640px){body.pg-highlights .hl-bar{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-left:-16px;margin-right:-16px;padding-left:16px;padding-right:16px}
body.pg-highlights .hl-bar::-webkit-scrollbar{display:none}
body.pg-highlights .hl-chip{flex:none;padding:.38rem .7rem}
body.pg-highlights .hl-chip.lucky{margin-left:0}}
body.pg-highlights .hl-sec{scroll-margin-top:7rem}
body.pg-highlights .hl-lede{font-size:1.1rem;color:var(--ink2);max-width:46rem;margin:-.2rem 0 1.4rem}
body.pg-highlights .hl-sec h2 .dotc{display:inline-block;width:.55em;height:.55em;border-radius:50%;background:var(--c);margin-right:.45em;vertical-align:.12em;box-shadow:0 0 14px var(--c)}
body.pg-highlights .hl-sec.funny{--c:var(--c-funny);--cb:var(--c-funny-bg)}
body.pg-highlights .hl-sec.hist{--c:var(--c-hist);--cb:var(--c-hist-bg)}
body.pg-highlights .hl-sec.ing{--c:var(--c-ing);--cb:var(--c-ing-bg)}
body.pg-highlights .hl-sec.hard{--c:var(--c-hard);--cb:var(--c-hard-bg)}
body.pg-highlights .hl{position:relative;display:grid;grid-template-columns:4.2rem minmax(0,1fr) minmax(0,15rem);gap:0 1.3rem;padding:1.4rem 1.4rem 1.3rem 1rem;margin:0 0 1.1rem;
  background:var(--panel);border:1px solid var(--rule);border-radius:var(--radius);scroll-margin-top:7.5rem;
  transition:border-color .25s,transform .25s,box-shadow .25s,opacity .5s;overflow:hidden}
body.pg-highlights .hl::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--c)}
body.pg-highlights .hl:hover{border-color:color-mix(in srgb,var(--c) 55%,var(--rule));transform:translateY(-2px);box-shadow:var(--shadow)}
body.pg-highlights .hl.flash{animation:hlflash 1.6s ease}
@keyframes hlflash{0%,100%{box-shadow:none}25%,60%{box-shadow:0 0 0 2px var(--c),0 0 40px color-mix(in srgb,var(--c) 45%,transparent)}}
body.pg-highlights .hl-n{font-family:var(--display);font-size:1.6rem;line-height:.9;color:var(--c);font-weight:600;opacity:.9;text-align:right;font-variant-numeric:lining-nums}
body.pg-highlights .hl-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .7rem;margin:0 0 .45rem;font:0.8rem var(--ui);color:var(--muted);letter-spacing:.02em}
body.pg-highlights .hl-meta .yr{color:var(--c);font-weight:600}
body.pg-highlights .hl h3{font-family:var(--display);font-size:clamp(1.18rem,2.2vw,1.42rem);line-height:1.22;margin:0 0 .6rem;color:var(--head)}
body.pg-highlights .hl p{margin:0 0 .75rem}
body.pg-highlights .hl-q{margin:.9rem 0 .8rem;padding:.75rem 1rem;border-left:0;border-radius:10px;background:var(--cb);position:relative}
body.pg-highlights .hl-q .dec{font-family:var(--period,var(--serif));font-size:1.1rem;line-height:1.45;color:var(--head);margin:0;font-style:italic;min-height:1.4em}
body.pg-highlights .hl-q .dec.scr{font-style:normal;font-family:var(--ui);font-size:0.9rem;letter-spacing:.02em;color:var(--c)}
body.pg-highlights .hl-q .tr{margin:.4rem 0 0;font-size:0.9rem;color:var(--ink2)}
body.pg-highlights .hl-q .lang{display:block;margin:0 0 .3rem;font:0.8rem var(--ui);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
body.pg-highlights .hl-go{font:0.8rem var(--ui);letter-spacing:.03em;border:0;color:var(--gold2)}
body.pg-highlights .hl-go::after{content:" \2192";transition:margin .2s}
body.pg-highlights .hl-go:hover::after{margin-left:.3rem}
body.pg-highlights .hl-fig{margin:0;align-self:start}
body.pg-highlights .hl-fig img{width:100%;height:11.5rem;object-fit:cover;border-radius:10px;border:1px solid var(--rule);display:block;filter:saturate(.9);transition:filter .25s;cursor:zoom-in}
body.pg-highlights .hl:hover .hl-fig img{filter:saturate(1.05)}
body.pg-highlights .hl-fig figcaption{font-size:0.8rem;line-height:1.35;color:var(--muted);margin-top:.4rem}
body.pg-highlights .hl-glyph{align-self:start;height:11.5rem;border-radius:10px;border:1px dashed var(--rule);display:flex;align-items:center;justify-content:center;text-align:center;padding:1rem;
  font:0.9rem/1.7 var(--ui);color:var(--c);background:repeating-linear-gradient(135deg,transparent 0 9px,var(--panel) 9px 10px);word-break:break-word}
body.pg-highlights .hl.hide{display:none}
body.pg-highlights .hl-bigstat{font-family:var(--display);font-size:1.6rem;color:var(--head);margin:.2rem 0 .1rem}
@media (max-width:820px){body.pg-highlights .hl{grid-template-columns:minmax(0,1fr);padding:1.1rem 1rem 1rem 1.1rem}
body.pg-highlights .hl-n{font-size:1.6rem;text-align:left;margin-bottom:.3rem}
body.pg-highlights .hl-fig,body.pg-highlights .hl-glyph{grid-column:1/-1;margin-top:.6rem}
body.pg-highlights .hl-fig img{height:10rem}
body.pg-highlights .hl-glyph{height:auto;min-height:5rem}}
@media (prefers-reduced-motion:reduce){body.pg-highlights .hl,body.pg-highlights .hl-dot,body.pg-highlights .hl-go::after{transition:none}
body.pg-highlights .hl.flash{animation:none;outline:2px solid var(--c)}}
/* huangxing */
body.pg-huangxing .kt{font-family:var(--mono);font-size:0.8rem;border-collapse:collapse;margin:.6rem 0 1rem;width:auto}
body.pg-huangxing .kt th,body.pg-huangxing .kt td{border:1px solid var(--rule);padding:.2rem .5rem;text-align:center}
body.pg-huangxing .kt th{background:rgba(255,255,255,.05)}
body.pg-huangxing .zh{font-size:1.25rem;line-height:1.95}
body.pg-huangxing .zh .g{color:var(--amber)}
body.pg-huangxing .zh .u{color:var(--red);border-bottom:1px dotted currentColor}
body.pg-huangxing .grid5{display:grid;grid-template-columns:repeat(10,1fr);gap:2px;font-family:var(--ui);font-size:0.8rem;margin:1rem 0;max-width:640px}
body.pg-huangxing .grid5 div{padding:.25rem .1rem;text-align:center;border:1px solid var(--rule);border-radius:4px}
body.pg-huangxing .grid5 .hd{background:rgba(217,172,82,.14);color:var(--gold);font-weight:600}
body.pg-huangxing .grid5 .v{background:rgba(255,255,255,.03);color:var(--muted)}
body.pg-huangxing .pair{font-family:var(--ui);font-size:0.9rem}
body.pg-huangxing .pair b{color:var(--gold2,#e7c87a);font-weight:600}
/* keys */
body.pg-keys .kw-wrap{width:min(1240px,calc(100vw - 2rem));position:relative;left:50%;transform:translateX(-50%);margin:1rem 0 2rem;display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:1.2rem;align-items:start}
body.pg-keys .kw-main{min-width:0}
body.pg-keys .kw-main h2{margin-top:2rem}
body.pg-keys .kw-main h2:first-of-type{margin-top:.6rem}
body.pg-keys .kw-main .lede{color:var(--ink2);max-width:62ch}
body.pg-keys .kw-bar{position:relative;display:flex;flex-wrap:wrap;gap:.5rem .9rem;align-items:center;padding:.7rem .8rem;margin:0 0 .6rem;
  border:1px solid var(--rule);border-radius:var(--radius);background:var(--bg);box-shadow:var(--shadow)}
body.pg-keys .kw-bar input{flex:1 1 220px;min-width:0;font:inherit;font-size:0.9rem;padding:.45rem .7rem;border:1px solid var(--rule);border-radius:8px;background:var(--panel3);color:var(--ink)}
body.pg-keys .kw-chips{display:flex;flex-wrap:wrap;gap:.35rem}
body.pg-keys .kw-chip{font:0.8rem var(--ui);padding:.28rem .6rem;border-radius:999px;border:1px solid var(--rule);background:transparent;color:var(--muted);cursor:pointer}
body.pg-keys .kw-chip[aria-pressed="true"]{background:var(--panel2);color:var(--ink);border-color:var(--ink2)}
body.pg-keys .kw-chip i{display:inline-block;width:.9rem;height:0;border-top:2px solid currentColor;vertical-align:middle;margin-right:.35rem}
body.pg-keys .kw-chip.e-adapted i,body.pg-keys .kw-chip.e-partial i{border-top-style:dashed}
body.pg-keys .kw-chip.e-tried i{border-top:2px dashed var(--red)}
body.pg-keys .kw-chip.e-rebuilt i{border-color:var(--gold)}
body.pg-keys .kw-count{font:0.8rem var(--ui);color:var(--muted);margin-left:auto}
body.pg-keys .kw{position:relative;border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden;background:
  radial-gradient(800px 400px at 50% 40%,var(--glow1),transparent 70%),var(--panel3);box-shadow:var(--shadow)}
body.pg-keys .kw svg{display:block;width:100%;height:auto;aspect-ratio:1100/760;max-height:82vh;touch-action:none;cursor:grab}
body.pg-keys .kw svg:active{cursor:grabbing}
body.pg-keys .kw .axis text{font:10px var(--ui);fill:var(--muted)}
body.pg-keys .kw .axis line{stroke:var(--rule)}
body.pg-keys .kw .lk{fill:none;stroke:var(--ink2);stroke-opacity:.3;transition:stroke-opacity .2s}
body.pg-keys .kw .lk.adapted,body.pg-keys .kw .lk.partial{stroke-dasharray:4 3}
body.pg-keys .kw .lk.rebuilt{stroke:var(--gold);stroke-opacity:.65;stroke-width:1.5}
body.pg-keys .kw .lk.tried{stroke:var(--red);stroke-opacity:.35;stroke-dasharray:2 3}
body.pg-keys .kw .lk.src{stroke:var(--violet);stroke-opacity:.3;stroke-dasharray:1 3}
body.pg-keys .kw .nd{cursor:pointer;transition:opacity .2s}
body.pg-keys .kw .nd text{font:10px var(--ui);fill:var(--ink2);paint-order:stroke;stroke:var(--panel3);stroke-width:3px;pointer-events:none;opacity:0;transition:opacity .2s}
body.pg-keys .kw .nd.key text{font:600 11px var(--serif);fill:var(--head)}
body.pg-keys .kw .nd.lab text{opacity:1}
body.pg-keys .kw.all .nd text{opacity:1}
body.pg-keys .kw.focus .nd.hot text{opacity:1}
body.pg-keys .kw .nd.src text{font:italic 600 13px var(--display);fill:var(--violet);opacity:1}
body.pg-keys .kw .nd path,body.pg-keys .kw .nd circle{vector-effect:non-scaling-stroke}
body.pg-keys .kw .nd.key path{stroke:var(--panel3);stroke-width:1.2}
body.pg-keys .kw .nd.key.b-period path{fill:var(--blue)}
body.pg-keys .kw .nd.key.b-scholar path{fill:var(--violet)}
body.pg-keys .kw .nd.key.b-here path{fill:var(--gold)}
body.pg-keys .kw .nd.key.tonly path{fill:var(--panel3);stroke:var(--red);stroke-width:1.4;stroke-dasharray:2 1.5}
body.pg-keys .kw .nd.src circle{fill:var(--violet-bg);stroke:var(--violet);stroke-width:1.5}
body.pg-keys .kw .nd.src.me circle{fill:var(--amber-bg);stroke:var(--gold)}
body.pg-keys .kw .nd.src.me text{fill:var(--gold)}
body.pg-keys .kw .lk.src.me{stroke:var(--gold)}
body.pg-keys .kw .nd.t circle{stroke:var(--panel3);stroke-width:1.5;fill:var(--muted)}
body.pg-keys .kw .nd.t.solved circle{fill:var(--green)}
body.pg-keys .kw .nd.t.found circle{fill:var(--blue)}
body.pg-keys .kw .nd.t.partial circle{fill:var(--amber)}
body.pg-keys .kw .nd.t.stuck circle{fill:var(--red)}
body.pg-keys .kw .nd.dim{opacity:.12}
body.pg-keys .kw .lk.dim{stroke-opacity:.04}
body.pg-keys .kw.focus .nd:not(.hot){opacity:.12}
body.pg-keys .kw.focus .lk:not(.hot){stroke-opacity:.04}
body.pg-keys .kw .lk.hot{stroke-opacity:.95;stroke-width:2}
body.pg-keys .kw .nd.pin circle,body.pg-keys .kw .nd.pin path{stroke:var(--head);stroke-width:2}
body.pg-keys .kw-tools{position:absolute;top:.6rem;right:.6rem;display:flex;gap:.35rem}
body.pg-keys .kw-tools .kw-chip{background:var(--bg)}
body.pg-keys .kw-legend{display:flex;padding:.5rem .8rem .6rem;border-top:1px solid var(--rule);gap:.3rem .9rem;flex-wrap:wrap;font:0.8rem var(--ui);color:var(--muted);pointer-events:none}
body.pg-keys .kw-legend i{display:inline-block;vertical-align:-1px;margin-right:.3rem}
body.pg-keys .kw-legend .kd{width:.7rem;height:.55rem;border-radius:2px;background:var(--gold)}
body.pg-keys .kw-legend .kd.b-period{background:var(--blue)}
body.pg-keys .kw-legend .kd.b-scholar{background:var(--violet)}
body.pg-keys .kw-legend .ld{width:.6rem;height:.6rem;border-radius:50%;background:var(--green)}
body.pg-keys .kw-legend .ld.partial{background:var(--amber)}
body.pg-keys .kw-legend .ld.found{background:var(--blue)}
body.pg-keys .kw-legend .ld.stuck{background:var(--red)}
body.pg-keys .kw-legend .ll{width:1.1rem;border-top:1.5px solid var(--ink2);vertical-align:middle}
body.pg-keys .kw-legend .ll.rb{border-color:var(--gold)}
body.pg-keys .kw-legend .ll.ad{border-top-style:dashed}
body.pg-keys .kw-legend .ll.tr{border-top:1.5px dashed var(--red)}
body.pg-keys .kw-help{font-size:0.8rem;color:var(--muted);margin:.5rem 0 0}
body.pg-keys .tried-list{list-style:none;padding:0;margin:.4rem 0}
body.pg-keys .tried-list>li{border-top:1px solid var(--rule);padding:.55rem 0;display:grid;grid-template-columns:minmax(0,14rem) 1fr;gap:.2rem 1rem}
body.pg-keys .tried-list .tgt{font:600 0.9rem var(--serif)}
body.pg-keys .tried-list .tgt small{display:block;font:0.8rem var(--ui);color:var(--muted)}
body.pg-keys .tried-list ul{list-style:none;padding:0;margin:0}
body.pg-keys .tried-list ul li{padding:.1rem 0;font-size:0.9rem}
body.pg-keys .tried-list ul li::before{content:"✕ ";color:var(--red);font-size:0.8rem}
body.pg-keys .tried-list .kn{all:unset;cursor:pointer;font-weight:600;color:var(--head);text-decoration:underline dotted var(--muted)}
body.pg-keys .kw-side{border:1px solid var(--rule);border-radius:var(--radius);background:var(--bg);padding:1rem 1.1rem;font-size:0.9rem;position:sticky;top:4.5rem;max-height:calc(100vh - 6rem);overflow:auto;box-shadow:var(--shadow)}
body.pg-keys .kw-side h3{font-family:var(--display);margin:.1rem 0 .3rem;color:var(--head);font-size:1.25rem;line-height:1.2}
body.pg-keys .kw-side .k{font:0.8rem var(--ui);letter-spacing:.1em;text-transform:uppercase;color:var(--gold);margin:0}
body.pg-keys .kw-side .by{color:var(--muted);margin:.1rem 0 .5rem;font-size:0.8rem}
body.pg-keys .kw-side h4{font:0.8rem var(--ui);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:1rem 0 .2rem}
body.pg-keys .kw-side ul{list-style:none;padding:0;margin:0}
body.pg-keys .kw-side li{padding:.35rem 0;border-top:1px solid var(--rule)}
body.pg-keys .kw-side li small{display:block;font:0.8rem var(--ui);color:var(--muted)}
body.pg-keys .kw-side figure{margin:.5rem 0}
body.pg-keys .kw-side figure img{width:100%;max-height:220px;object-fit:contain;background:var(--panel3);border:1px solid var(--rule);border-radius:6px}
body.pg-keys .kw-side figcaption{font-size:0.8rem;color:var(--muted)}
body.pg-keys .kw-side .hint{color:var(--muted);font-size:0.8rem}
body.pg-keys .kw-side .acts{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.8rem}
body.pg-keys .kw-side .acts a,body.pg-keys .kw-side .acts button{font:0.8rem var(--ui);padding:.3rem .6rem;border:1px solid var(--rule);border-radius:999px;background:transparent;color:var(--ink2);cursor:pointer;text-decoration:none}
body.pg-keys .kw-side .x{display:none;position:absolute;top:.5rem;right:.6rem;font:1.25rem var(--ui);background:none;border:0;color:var(--muted);cursor:pointer}
body.pg-keys .kw-stats{display:flex;gap:1.4rem;flex-wrap:wrap;margin:.6rem 0 0;font:0.8rem var(--ui);color:var(--muted)}
body.pg-keys .kw-stats b{display:block;font:700 1.6rem var(--display);color:var(--head)}
@media (max-width:860px){body.pg-keys .kw-wrap{grid-template-columns:1fr;width:auto;left:auto;transform:none}
body.pg-keys .kw-bar{position:static;padding:.6rem}
body.pg-keys .kw-chips{flex-wrap:nowrap;overflow-x:auto;width:100%;scrollbar-width:none;padding-bottom:.1rem}
body.pg-keys .kw-chip{flex:none}
body.pg-keys .kw-count{margin-left:0;width:100%}
body.pg-keys .kw-stats{display:grid;grid-template-columns:1fr 1fr;gap:.8rem}
body.pg-keys .tried-list>li{grid-template-columns:1fr}
body.pg-keys .kw-side{position:fixed;left:0;right:0;bottom:0;top:auto;z-index:40;max-height:72vh;border-radius:14px 14px 0 0;transform:translateY(105%);transition:transform .25s}
body.pg-keys .kw-side.open{transform:none}
body.pg-keys .kw-side .x{display:block}
body.pg-keys .kw svg{aspect-ratio:4/5;max-height:72vh}}
@media (prefers-reduced-motion:reduce){body.pg-keys .kw-side{transition:none}}
/* roosevelt */
body.pg-roosevelt .cg{font-family:var(--mono);font-size:0.8rem;line-height:1.85;color:var(--gold2,#e7c87a);word-break:break-word}
body.pg-roosevelt .kt{font-family:var(--mono);font-size:0.8rem;border-collapse:collapse;margin:.6rem 0 1rem;width:auto}
body.pg-roosevelt .kt th,body.pg-roosevelt .kt td{border:1px solid var(--rule);padding:.25rem .6rem;text-align:left}
body.pg-roosevelt .kt th{background:rgba(255,255,255,.05)}
body.pg-roosevelt .kt td.num{text-align:right}
/* secret */
body.pg-secret .sl{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:1.6rem;align-items:start;width:min(1240px,calc(100vw - 2rem));position:relative;left:50%;transform:translateX(-50%);margin:1rem 0 2rem}
body.pg-secret .sl-form{display:flex;flex-direction:column;gap:1rem}
body.pg-secret .sl-form label{font:0.8rem var(--ui);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);display:block;margin-bottom:.35rem}
body.pg-secret .sl-form textarea,body.pg-secret .sl-form input{width:100%;background:var(--bg);color:var(--ink);border:1px solid var(--rule);border-radius:10px;padding:.7rem .85rem;font:1rem/1.45 var(--serif);resize:vertical}
body.pg-secret .sl-form textarea{min-height:8.5rem}
body.pg-secret .sl-form textarea:focus,body.pg-secret .sl-form input:focus{outline:none;border-color:var(--gold)}
body.pg-secret .sl-count{font:0.8rem var(--ui);color:var(--muted);text-align:right;margin-top:.25rem}
body.pg-secret .sl-keys{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}
body.pg-secret .sl-key{text-align:left;padding:.7rem .8rem;border-radius:12px;border:1px solid var(--rule);background:var(--panel);color:var(--ink2);cursor:pointer;font:inherit;transition:border-color .2s,transform .2s}
body.pg-secret .sl-key:hover{border-color:var(--gold);transform:translateY(-1px)}
body.pg-secret .sl-key[aria-pressed=true]{border-color:var(--gold);background:color-mix(in srgb,var(--gold) 14%,var(--panel));box-shadow:0 0 0 1px var(--gold)}
body.pg-secret .sl-key b{display:block;font-family:var(--display);color:var(--head);font-size:1rem}
body.pg-secret .sl-key span{display:block;font:0.8rem var(--ui);color:var(--muted);margin-top:.2rem}
body.pg-secret .sl-key i{display:block;font-family:var(--period);font-style:normal;color:var(--gold2);margin-top:.35rem;font-size:0.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.pg-secret .sl-note{font-size:0.9rem;color:var(--muted);margin:0}
body.pg-secret .sl-note a{white-space:nowrap}
body.pg-secret .sl-btns{display:flex;flex-wrap:wrap;gap:.5rem}
body.pg-secret .sl-btns button{font:600 0.8rem var(--ui);padding:.6rem 1rem;border-radius:999px;border:1px solid var(--rule);background:var(--bg);color:var(--ink2);cursor:pointer}
body.pg-secret .sl-btns button.primary{background:var(--gold);color:var(--gold-ink);border-color:var(--gold)}
body.pg-secret .sl-btns button:hover{border-color:var(--gold)}
body.pg-secret .sl-msg{font:0.8rem var(--ui);color:var(--green);min-height:1.2em;margin:0}
body.pg-secret .sl-out{position:sticky;top:4.5rem}
body.pg-secret .sl-out canvas{width:100%;height:auto;display:block;filter:drop-shadow(0 18px 26px rgba(0,0,0,.42)) drop-shadow(0 2px 3px rgba(0,0,0,.3));transform:rotate(-.6deg)}
body.pg-secret .sl-recv{border:1px solid var(--gold);border-radius:var(--radius);padding:1rem 1.2rem;background:color-mix(in srgb,var(--gold) 8%,var(--panel));margin:1rem 0}
body.pg-secret .sl-recv h2{margin:.1rem 0 .3rem;font-size:1.25rem}
body.pg-secret .sl-recv[hidden]{display:none}
body.pg-secret .sl-stats{font:0.8rem var(--ui);color:var(--muted);margin:.6rem 0 0}
@media (max-width:900px){body.pg-secret .sl{grid-template-columns:1fr}
body.pg-secret .sl-out{position:static}}
@media (max-width:480px){body.pg-secret .sl-keys{grid-template-columns:1fr}}
/* sunintercepts */
body.pg-sunintercepts .zh{font-size:1.1rem;line-height:1.9}
/* sunyatsen */
body.pg-sunyatsen .kt{font-family:var(--mono);font-size:0.8rem;border-collapse:collapse;margin:.6rem 0 1rem}
body.pg-sunyatsen .kt th,body.pg-sunyatsen .kt td{border:1px solid var(--rule);padding:.15rem .45rem;text-align:center}
body.pg-sunyatsen .kt th{background:rgba(255,255,255,.05)}
body.pg-sunyatsen .kt td.ok{color:var(--green)}
body.pg-sunyatsen .kt td.doubt{color:var(--amber)}
body.pg-sunyatsen .kt td.dim{opacity:.35}
body.pg-sunyatsen .zh{font-size:1.25rem;line-height:2}
body.pg-sunyatsen .zh .d{color:var(--amber);border-bottom:1px dotted currentColor}
body.pg-sunyatsen .zh .x{color:var(--red)}
/* catalogue: rules added on origin while the page styles were being moved */
body.pg-catalogue .noted.work{color:var(--blue);border-color:color-mix(in srgb,var(--blue) 50%,transparent)}
body.pg-catalogue .ko{display:block;font-size:.8rem;color:var(--ink2);margin-top:.25rem;line-height:1.4}
body.pg-catalogue .ko i{font-style:normal;font-family:var(--ui);font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;padding:.02rem .4rem;border-radius:999px;margin-right:.3rem}
body.pg-catalogue .ko i.k{background:var(--green-bg);color:var(--green)}
body.pg-catalogue .ko i.o{background:var(--amber-bg);color:var(--amber)}
body.pg-catalogue .det .kn b{color:var(--green)}
body.pg-catalogue .det .op b{color:var(--amber)}
body.pg-catalogue .asof{font-family:var(--ui);font-size:.8rem;color:var(--muted)}
body.pg-catalogue .state .cols{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
body.pg-catalogue .state .scard{background:var(--panel);border:1px solid var(--rule);border-radius:var(--radius);padding:.6rem 1.1rem .8rem}
body.pg-catalogue .state .scard.wide{margin-top:1rem}
body.pg-catalogue .state h3{margin:.4rem 0 .5rem}
body.pg-catalogue .state summary{cursor:pointer;font-family:var(--ui);font-size:.8rem;color:var(--gold)}
body.pg-catalogue ul.sl{font-size:.9rem;padding-left:1.1rem;max-height:32rem;overflow-y:auto}
body.pg-catalogue ul.sl li{margin:.3rem 0}
body.pg-catalogue .d{color:var(--muted);font-size:.8rem}
body.pg-catalogue table.gone{border-collapse:collapse;font-size:.9rem;width:100%}
body.pg-catalogue table.gone td,body.pg-catalogue table.gone th{border-bottom:1px solid var(--rule);padding:.35rem .5rem;text-align:left;vertical-align:top}
body.pg-catalogue #hashnote{background:var(--amber-bg);border:1px solid var(--amber);border-radius:var(--radius);padding:.6rem 1rem;margin:1rem 0}
@media (max-width:700px){body.pg-catalogue .state .cols{grid-template-columns:1fr}}

@media (max-width:640px){main table{display:block;max-width:100%;overflow-x:auto}main p a,main li a,main p code,main li code{overflow-wrap:anywhere}}
@media (max-width:860px){body.pg-highlights .hl-bar{top:3.65rem}}

/* "Help Solve!" sticker: a frilled price-tag seal, deliberately loud (catalogue feedback, 26 Oct 2026).
   The text is one flex column inside the inner ring, so it never spills onto the frill. */
.sticker{display:inline-block;line-height:0;vertical-align:middle;filter:drop-shadow(0 2px 0 rgba(0,0,0,.3)) drop-shadow(0 5px 9px rgba(0,0,0,.28));transform:rotate(-9deg);transition:transform .25s cubic-bezier(.3,1.6,.5,1);border:0;text-decoration:none}
.sticker > span{display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;width:var(--sz,7rem);height:var(--sz,7rem);padding:14%;text-align:center;color:#c8102e;
  font-family:"Arial Black","Arial Bold",Impact,Arial,sans-serif;font-weight:900;font-style:normal;text-transform:uppercase;letter-spacing:0;line-height:.9;font-size:calc(var(--sz,7rem) * .15);
  background:radial-gradient(circle,#ffe24a 0 56%,#fff 56% 59%,#ffe24a 59% 64%,#ffc400 64%);
  clip-path:polygon(100.0% 50.0%,93.8% 54.3%,99.0% 59.8%,92.1% 62.8%,96.2% 69.1%,88.8% 70.7%,91.6% 77.8%,84.0% 77.9%,85.4% 85.4%,77.9% 84.0%,77.8% 91.6%,70.7% 88.8%,69.1% 96.2%,62.8% 92.1%,59.8% 99.0%,54.3% 93.8%,50.0% 100.0%,45.7% 93.8%,40.2% 99.0%,37.2% 92.1%,30.9% 96.2%,29.3% 88.8%,22.2% 91.6%,22.1% 84.0%,14.6% 85.4%,16.0% 77.9%,8.4% 77.8%,11.2% 70.7%,3.8% 69.1%,7.9% 62.8%,1.0% 59.8%,6.2% 54.3%,0.0% 50.0%,6.2% 45.7%,1.0% 40.2%,7.9% 37.2%,3.8% 30.9%,11.2% 29.3%,8.4% 22.2%,16.0% 22.1%,14.6% 14.6%,22.1% 16.0%,22.2% 8.4%,29.3% 11.2%,30.9% 3.8%,37.2% 7.9%,40.2% 1.0%,45.7% 6.2%,50.0% 0.0%,54.3% 6.2%,59.8% 1.0%,62.8% 7.9%,69.1% 3.8%,70.7% 11.2%,77.8% 8.4%,77.9% 16.0%,85.4% 14.6%,84.0% 22.1%,91.6% 22.2%,88.8% 29.3%,96.2% 30.9%,92.1% 37.2%,99.0% 40.2%,93.8% 45.7%)}
.sticker b{display:block;font:inherit;white-space:nowrap}
.sticker small{display:block;max-width:100%;margin-top:.35em;font-family:Arial,Helvetica,sans-serif;font-weight:700;font-size:.5em;line-height:1.1;letter-spacing:0;text-transform:none;color:#7a0a1c}
a.sticker:hover,a.sticker:focus-visible{transform:rotate(4deg) scale(1.08)}
a.sticker::after{display:none}
.nav .links > a.navcat{position:relative}
.nav .links > a.navcat .sticker{position:absolute;top:calc(100% + .3rem);left:50%;--sz:4.2rem;margin-left:-2.1rem;pointer-events:none}
.nav .links > a.navcat:hover .sticker{transform:rotate(4deg) scale(1.1)}
.nav .links > a.navcat .sticker.alt{transform:rotate(8deg);top:calc(100% + .7rem)}   /* the read-further one leans the other way */
.nav .links > a.navcat:hover .sticker.alt{transform:rotate(-4deg) scale(1.1)}
@media (max-width:860px){.nav .links > a.navcat .sticker{position:static;--sz:3rem;margin:0 0 0 .7rem}}
@media (prefers-reduced-motion: reduce){.sticker{transition:none}}
/* the read-further sticker: same seal, lime and violet */
.sticker.alt > span{color:#4b0f8c;background:radial-gradient(circle,#c6f54a 0 56%,#fff 56% 59%,#c6f54a 59% 64%,#8fdc1e 64%)}
.sticker.alt small{color:#2e0857}
/* the to-the-archive sticker: same seal, sky blue and oxblood */
.sticker.arc > span{color:#6b0f1a;background:radial-gradient(circle,#7fd8ff 0 56%,#fff 56% 59%,#7fd8ff 59% 64%,#33b4f0 64%)}
.sticker.arc small{color:#4a0a12}
.nav .links > a.navcat .sticker.arc{transform:rotate(-4deg);top:calc(100% + .5rem)}
.nav .links > a.navcat:hover .sticker.arc{transform:rotate(6deg) scale(1.1)}
body.pg-archives .hero h1 .stk .sticker{--sz:5.8rem;margin:-.5rem 0 -.9rem .7rem}
@media (max-width:760px){body.pg-archives .hero h1 .stk .sticker{--sz:5.2rem;margin:-1.2rem 0 -1rem .4rem}}

body.pg-catalogue .pill.arch{color:var(--amber);border-color:color-mix(in srgb,var(--amber) 50%,transparent);background:var(--amber-bg)}
body.pg-catalogue .archnote{margin:1rem 0}

/* ---------------------------------------------------------------- hero video (rendered by tools/hero_video/hero_video.py) */
.herovid{max-width:720px;margin:.6rem 0 1.6rem}
.hv-frame{position:relative}
.herovid video{display:block;width:100%;height:auto;aspect-ratio:16/9;background:#05070b;border:1px solid var(--rule);border-radius:var(--radius);box-shadow:var(--shadow)}
.hv-ctl{position:absolute;top:.7rem;right:.7rem;display:flex;gap:.4rem}
.hv-ctl button{margin:0;padding:0;width:34px;height:34px;display:grid;place-items:center;
  background:rgba(5,7,11,.62);color:var(--gold2);border:1px solid rgba(217,172,82,.45);border-radius:8px;opacity:.55;transition:opacity .2s,border-color .2s}
.herovid:hover .hv-ctl button,.hv-ctl button:focus-visible,.herovid.paused .hv-toggle{opacity:1}
.hv-ctl button:hover{transform:none;box-shadow:none;border-color:var(--gold)}
.hv-toggle .i-play,.herovid.paused .hv-toggle .i-pause,.hv-mute .i-off,.herovid.muted .hv-mute .i-on{display:none}
.herovid.paused .hv-toggle .i-play,.herovid.muted .hv-mute .i-off{display:block}
/* browsers only autoplay muted video: the first click turns the sound on and starts again from the top. Top left:
   the bottom of the frame carries the burned-in captions */
.hv-sound{position:absolute;left:.8rem;top:.7rem;margin:0;display:none;align-items:center;gap:.5rem;
  padding:.55rem .95rem;border-radius:999px;background:var(--gold);color:var(--gold-ink);font:600 0.8rem/1 var(--ui);letter-spacing:.04em;
  box-shadow:0 6px 24px rgba(0,0,0,.45)}
.herovid.muted.fresh .hv-sound{display:inline-flex}
.hv-sound:hover{transform:translateY(-1px)}
.hv-short{display:none}
@media (max-width:640px){.hv-sound{left:.5rem;top:.5rem;padding:.45rem .75rem}.hv-long{display:none}.hv-short{display:inline}}
.hv-ch{display:flex;gap:.35rem;margin-top:.6rem}
.hv-ch button{flex:var(--w) 1 0;min-width:0;margin:0;padding:.55rem 0 0;position:relative;background:none;border:0;border-radius:0;box-shadow:none;
  color:var(--muted);font:500 0.8rem/1.2 var(--ui);letter-spacing:.02em;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hv-ch button::before,.hv-ch button::after{content:"";position:absolute;left:0;top:0;height:3px;border-radius:2px}
.hv-ch button::before{right:0;background:var(--rule)}
.hv-ch button::after{width:calc(var(--p,0) * 100%);background:var(--gold);transition:width .25s linear}
.hv-ch button:hover{transform:none;box-shadow:none;color:var(--ink)}
.hv-ch button.on{color:var(--gold2)}
/* the link for the stretch playing (herovid.js), and the buttons over the close: the frame keeps its lower half clear */
.hv-go{margin:.45rem 0 0;min-height:1.3rem;text-align:right;font:500 0.85rem/1.3 var(--ui);opacity:0;transition:opacity .3s}
.hv-go.on{opacity:1}
.hv-end{position:absolute;left:0;right:0;bottom:18%;display:none;justify-content:center;flex-wrap:wrap;gap:.5rem;padding:0 1rem}
.herovid.at-end .hv-end{display:flex}
.herovid.at-end .hv-sound{display:none}
.hv-end a,.hv-end button{margin:0;padding:.55rem .95rem;border-radius:999px;font:600 0.85rem/1 var(--ui);letter-spacing:.03em;
  text-decoration:none;background:rgba(5,7,11,.72);color:var(--gold2);border:1px solid rgba(217,172,82,.55);box-shadow:0 6px 24px rgba(0,0,0,.45)}
.hv-end a.first{background:var(--gold);color:var(--gold-ink);border-color:var(--gold)}
.hv-end a:hover,.hv-end button:hover{transform:translateY(-1px);border-color:var(--gold)}
@media (max-width:640px){.hv-end{bottom:8%;gap:.35rem}.hv-end a,.hv-end button{padding:.42rem .7rem;font-size:.75rem}}
/* the live cipher strip moves down beside the introduction, below the video */
@media (min-width:1061px){.hero:has(.herovid) .cipherstrip{top:calc(5.4rem + clamp(2rem,9.1vw,5.4rem) * 1.5 + 720px * 9 / 16 + 8.15rem)}}
@media (max-width:640px){.hv-ch button{font-size:0}.hv-ch button.on{font-size:0.8rem;flex-grow:40}}
@media (prefers-reduced-motion: reduce){.hv-ch button::after{transition:none}}

/* cursor trail (site.js) */
.cipher-trail{position:fixed;z-index:-1;pointer-events:none;user-select:none;font-family:var(--display);font-size:1.1rem;color:var(--ink);opacity:0;transform:translate(-50%,-50%);animation:cipher-trail 1.4s ease-out forwards}
@keyframes cipher-trail{0%{opacity:0;transform:translate(-50%,-50%) rotate(var(--rot)) scale(.8)}15%{opacity:.16}100%{opacity:0;transform:translate(-50%,-110%) rotate(var(--rot)) scale(1.1)}}

/* archives.html: requests for archives and libraries (docs/_archives_page.py) */
body.pg-archives .steps{display:flex;flex-wrap:wrap;gap:.4rem .9rem;margin:.9rem 0 0;padding:0;list-style:none;font-family:var(--ui);font-size:.9rem;color:var(--ink2)}
body.pg-archives .steps li{display:flex;align-items:center;gap:.45rem;margin:0}
body.pg-archives .steps b{display:inline-grid;place-items:center;width:1.5rem;height:1.5rem;border-radius:50%;background:var(--gold);color:var(--gold-ink);font-size:.78rem}
body.pg-archives .kinds{list-style:none;padding:0;margin:0 0 1rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:.6rem}
body.pg-archives .kinds li{margin:0}
body.pg-archives .kc{width:100%;height:100%;text-align:left;display:grid;grid-template-columns:auto 1fr;grid-template-areas:"n k" "d d";gap:.1rem .7rem;align-items:center;background:var(--panel);color:var(--ink2);border:1px solid var(--rule);border-radius:10px;padding:.7rem .9rem;cursor:pointer;font:inherit}
body.pg-archives .kc:hover{border-color:var(--gold)}
body.pg-archives .kc[aria-pressed=true]{border-color:var(--gold);box-shadow:0 0 0 2px var(--gold) inset}
body.pg-archives .kc b{grid-area:n;font-family:var(--ui);font-size:1.7rem;line-height:1;color:var(--head)}
body.pg-archives .kc .kd{grid-area:k;justify-self:start}
body.pg-archives .kc small{grid-area:d;font-size:.84rem;line-height:1.35;color:var(--muted)}
body.pg-archives .qbar{display:flex;flex-wrap:wrap;gap:.6rem 1rem;align-items:center;margin:1.2rem 0 .7rem}
body.pg-archives .qbar input[type=search]{background:var(--bg);color:var(--ink);border:1px solid var(--rule);border-radius:6px;padding:.4rem .7rem;font:inherit;font-size:.95rem;min-width:0;flex:1 1 260px;max-width:360px}
body.pg-archives .qbar .count{font-family:var(--ui);font-size:.85rem;color:var(--muted)}
body.pg-archives .kf{display:inline-flex;flex-wrap:wrap;gap:.3rem}
body.pg-archives .kf button{font-family:var(--ui);font-size:.82rem;background:var(--panel2);color:var(--ink2);border:1px solid var(--rule);border-radius:999px;padding:.2rem .7rem;cursor:pointer}
body.pg-archives .kf button[aria-pressed=true]{background:var(--gold);color:var(--gold-ink);border-color:var(--gold)}
body.pg-archives details.toc{margin:.4rem 0 1rem;font-family:var(--ui);font-size:.88rem}
body.pg-archives details.toc summary{cursor:pointer;color:var(--gold)}
body.pg-archives details.toc ul{columns:2 16rem;list-style:none;padding:0;margin:.5rem 0 0}
body.pg-archives details.toc li{break-inside:avoid;margin:0 0 .2rem}
body.pg-archives details.toc li span{color:var(--muted)}
body.pg-archives details.toc li b{color:var(--muted);font-weight:400}
body.pg-archives section.arch{margin:1.6rem 0 0}
body.pg-archives section.arch h3{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2rem .6rem;margin:0 0 .5rem;border-bottom:1px solid var(--rule);padding-bottom:.3rem}
body.pg-archives section.arch h3 .city{font-family:var(--ui);font-size:.85rem;font-weight:400;color:var(--muted)}
body.pg-archives section.arch h3 .n{margin-left:auto;font-family:var(--ui);font-size:.8rem;font-weight:400;color:var(--muted)}
body.pg-archives ul.rqs{list-style:none;padding:0;margin:0;display:grid;gap:.55rem}
body.pg-archives li.rq{background:var(--panel);border:1px solid var(--rule);border-radius:8px;padding:.6rem .8rem;margin:0}
body.pg-archives li.rq .hd{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem .6rem;font-family:var(--ui);font-size:.82rem}
body.pg-archives li.rq .id{font-family:var(--mono);color:var(--muted)}
body.pg-archives li.rq .tgt{font-weight:600}
body.pg-archives li.rq .sm{color:var(--muted);overflow-wrap:anywhere}
body.pg-archives .kd{display:inline-block;font-family:var(--ui);font-size:.72rem;border-radius:999px;padding:0 .5rem;border:1px solid var(--rule);white-space:nowrap}
body.pg-archives .kd-visit{color:var(--gold-ink);background:var(--gold);border-color:var(--gold)}
body.pg-archives .kd-order{color:var(--blue);background:var(--blue-bg)}
body.pg-archives .kd-library{color:var(--green);background:var(--green-bg)}
body.pg-archives li.rq .nd{margin:.35rem 0 .15rem;color:var(--head);overflow-wrap:anywhere}
body.pg-archives li.rq .why2{display:block;font-size:.88rem;color:var(--muted);overflow-wrap:anywhere}
body.pg-archives li.rq .ft{margin-top:.45rem;font-family:var(--ui);font-size:.82rem;color:var(--muted)}
body.pg-archives li.rq .take{display:inline-block;padding:.2rem .7rem;border:1px solid var(--gold);border-radius:6px;color:var(--gold)}
body.pg-archives li.rq .take:hover{background:var(--gold);color:var(--gold-ink)}
body.pg-archives .st{display:inline-block;padding:.1rem .6rem;border-radius:6px;background:var(--panel2);color:var(--ink2)}
body.pg-archives .st-requested,body.pg-archives .st-claimed{background:var(--blue-bg);color:var(--blue)}
body.pg-archives .st-received,body.pg-archives .st-closed{background:var(--green-bg);color:var(--green)}
body.pg-archives .none{color:var(--muted)}

/* George Lasry's three help labels (30 Oct 2026): same colours as the stickers */
body.pg-catalogue .pill.help-solve{color:#c8102e;border-color:#c8102e;background:#ffe24a;font-weight:700}
body.pg-catalogue .pill.help-read{color:#4b0f8c;border-color:#4b0f8c;background:#c6f54a;font-weight:700}
body.pg-catalogue .pill.help-obtain{color:#6b0f1a;border-color:#6b0f1a;background:#7fd8ff;font-weight:700}
body.pg-catalogue .pill.unf{color:var(--muted,#888);border-color:currentColor;border-style:dashed}
body.pg-solve p.frame.unconfirmed{border-left:3px dashed var(--amber);padding-left:.8rem}
body.pg-solve p.frame.confirmed{border-left:3px solid var(--green);padding-left:.8rem}
body.pg-solve p.frame.missing{border-left:3px solid var(--red,#c0392b);padding-left:.8rem}
body.pg-archives .qbar{position:sticky;top:var(--navh,3.2rem);z-index:5;background:var(--bg);padding:.6rem 0;border-bottom:1px solid var(--rule)}
body.pg-archives .fold{display:inline-flex;gap:.3rem;margin-left:auto}
body.pg-archives .fold button{font-family:var(--ui);font-size:.8rem;background:none;color:var(--muted);border:0;padding:.2rem .4rem;cursor:pointer;text-decoration:underline}
body.pg-archives details.arch{margin:.7rem 0 0;border:1px solid var(--rule);border-radius:10px;background:var(--panel2)}
body.pg-archives details.arch > summary{display:flex;align-items:center;gap:.4rem .8rem;padding:.55rem .9rem;cursor:pointer;list-style:none}
body.pg-archives details.arch > summary::-webkit-details-marker{display:none}
body.pg-archives details.arch > summary::before{content:"B8";color:var(--muted);transition:transform .15s}
body.pg-archives details.arch[open] > summary::before{transform:rotate(90deg)}
body.pg-archives details.arch > summary h3{margin:0;border:0;padding:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:.1rem .6rem;font-size:1.05rem}
body.pg-archives details.arch > summary .city{font-family:var(--ui);font-size:.82rem;font-weight:400;color:var(--muted)}
body.pg-archives details.arch > summary .mix{display:inline-flex;gap:.25rem;margin-left:auto}
body.pg-archives details.arch > summary .n{font-family:var(--ui);font-size:.85rem;color:var(--ink2);min-width:2rem;text-align:right}
body.pg-archives details.arch > ul.rqs{padding:.2rem .7rem .8rem}
body.pg-archives li.rq .sm{display:block;margin:.1rem 0 .15rem;font-family:var(--mono);font-size:.78rem}
body.pg-archives .gapflag{font-family:var(--ui);font-size:.72rem;color:var(--amber);background:var(--amber-bg);border-radius:999px;padding:0 .5rem}
body.pg-archives li.rq[hidden],body.pg-archives details.arch[hidden]{display:none}
@media (max-width:760px){body.pg-archives .fold{margin-left:0}body.pg-archives details.arch > summary .mix{display:none}body.pg-archives .qbar{position:static}}
li.rq.hit{outline:2px solid var(--accent,#b8860b);outline-offset:3px}
