/* =========================================================================
   Shared styles for anguishedturtle.com
   Dark, space-like. Self-hosted fonts (Inter + JetBrains Mono), no build step.
   ========================================================================= */

@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/inter-400.woff2') format('woff2');}
@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url('fonts/inter-500.woff2') format('woff2');}
@font-face{font-family:'Inter';font-style:normal;font-weight:700;font-display:swap;src:url('fonts/inter-700.woff2') format('woff2');}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/jbmono-400.woff2') format('woff2');}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:700;font-display:swap;src:url('fonts/jbmono-700.woff2') format('woff2');}

:root {
  --space:#070a14;
  --panel-1:rgba(13,17,38,.72);
  --panel-2:rgba(8,11,24,.74);
  --star:#eaedf7;
  --text:#dfe3f0;
  --muted:#99a0c0;
  --violet:#8b7bff;
  --cyan:#56e1d8;
  --gold:#ffce8a;
  --green:#7ee0a0;
  --border:rgba(150,160,220,.15);
  --rule:rgba(150,160,220,.16);
  --max-width:880px;
  --radius:16px;

  /* JetBrains Mono drives the UI; Inter for prose; title keeps the system mono. */
  --mono:'JetBrains Mono', ui-monospace,"SF Mono","Cascadia Code",Menlo,Consolas,monospace;
  --sans:'Inter', -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --title: ui-monospace,"SF Mono","Cascadia Code",Menlo,Consolas,monospace;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}

body{
  margin:0;color:var(--text);font-family:var(--sans);line-height:1.6;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  padding:48px 20px;
  background-color:var(--space);
  background-image:
    radial-gradient(150% 110% at 50% -25%, rgba(123,108,255,.26), transparent 55%),
    radial-gradient(120% 100% at 100% 0%, rgba(60,120,255,.16), transparent 50%),
    radial-gradient(95% 95% at 0% 105%, rgba(180,80,200,.13), transparent 55%),
    radial-gradient(1.5px 1.5px at 40px 60px, rgba(255,255,255,.85), transparent 100%),
    radial-gradient(1.5px 1.5px at 150px 170px, rgba(255,255,255,.6), transparent 100%),
    radial-gradient(1px 1px at 210px 50px, rgba(255,255,255,.55), transparent 100%),
    radial-gradient(1px 1px at 90px 230px, rgba(255,255,255,.5), transparent 100%),
    radial-gradient(1.5px 1.5px at 280px 200px, rgba(255,255,255,.5), transparent 100%);
  background-size:100% 100%,100% 100%,100% 100%,240px 240px,240px 240px,190px 190px,300px 300px,260px 260px;
  background-repeat:no-repeat,no-repeat,no-repeat,repeat,repeat,repeat,repeat,repeat;
  background-attachment:fixed;
}

/* ---- Snow: three drifting layers, CSS-only --------------------------- */
.snow,.snow::before,.snow::after{
  content:"";position:fixed;inset:0;z-index:6;pointer-events:none;
  background-repeat:repeat;will-change:background-position;
}
.snow{
  background-image:
    radial-gradient(2.4px 2.4px at 30px 40px, rgba(255,255,255,.9), transparent 100%),
    radial-gradient(2px 2px at 180px 120px, rgba(255,255,255,.8), transparent 100%),
    radial-gradient(2.6px 2.6px at 320px 220px, rgba(255,255,255,.85), transparent 100%),
    radial-gradient(2px 2px at 90px 300px, rgba(255,255,255,.75), transparent 100%);
  background-size:380px 380px;
  animation:snow-near 9s linear infinite;
}
.snow::before{
  background-image:
    radial-gradient(1.8px 1.8px at 60px 80px, rgba(255,255,255,.7), transparent 100%),
    radial-gradient(1.6px 1.6px at 240px 40px, rgba(255,255,255,.6), transparent 100%),
    radial-gradient(2px 2px at 150px 260px, rgba(255,255,255,.65), transparent 100%),
    radial-gradient(1.6px 1.6px at 300px 180px, rgba(255,255,255,.6), transparent 100%);
  background-size:300px 300px;
  animation:snow-mid 15s linear infinite;
}
.snow::after{
  background-image:
    radial-gradient(1.3px 1.3px at 40px 120px, rgba(255,255,255,.5), transparent 100%),
    radial-gradient(1.1px 1.1px at 200px 200px, rgba(255,255,255,.45), transparent 100%),
    radial-gradient(1.3px 1.3px at 120px 60px, rgba(255,255,255,.5), transparent 100%),
    radial-gradient(1.1px 1.1px at 260px 280px, rgba(255,255,255,.4), transparent 100%);
  background-size:260px 260px;
  animation:snow-far 24s linear infinite;
}
/* Each layer travels exactly one tile height so the loop is seamless. */
@keyframes snow-near{
  from{background-position:0 0;}
  to{background-position:0 380px;}
}
@keyframes snow-mid{
  from{background-position:0 0;}
  to{background-position:0 300px;}
}
@keyframes snow-far{
  from{background-position:0 0;}
  to{background-position:0 260px;}
}
@media (prefers-reduced-motion:reduce){
  .snow,.snow::before,.snow::after{animation:none;}
}

/* ---- Lightning (home only) ------------------------------------------ */
/* A faint little storm at the top: two thin bolts on offset cycles
   (9s / 13s) so flickers stay irregular, with a soft glow at the top
   edge. Subtle by design. Sits below the snow. */
.lightning{
  position:fixed;top:0;left:0;right:0;height:32vh;z-index:5;pointer-events:none;opacity:0;
  background:radial-gradient(80% 100% at 50% -35%,
    rgba(200,214,255,.45), transparent 70%);
  animation:flash-a 9s ease-out infinite;
}
.lightning::after{
  content:"";position:absolute;inset:0;opacity:0;
  background:radial-gradient(65% 100% at 70% -30%,
    rgba(190,208,255,.4), transparent 65%);
  animation:flash-b 13s ease-out infinite;
}
.bolt{
  position:fixed;top:-1vh;z-index:5;pointer-events:none;opacity:0;
  height:18vh;width:auto;fill:none;
  stroke:#dbe6ff;stroke-width:1.2;stroke-linejoin:round;stroke-linecap:round;
  filter:drop-shadow(0 0 2px rgba(170,198,255,.7));
}
.bolt.b1{left:68%;animation:flash-a 9s ease-out infinite;}
.bolt.b2{left:24%;height:13vh;animation:flash-b 13s ease-out infinite;}
@keyframes flash-a{
  0%,3%{opacity:0;}
  4%{opacity:.5;}
  5.5%{opacity:.08;}
  7%{opacity:.38;}
  9%{opacity:0;}
  100%{opacity:0;}
}
@keyframes flash-b{
  0%,52%{opacity:0;}
  53%{opacity:.45;}
  54.5%{opacity:.07;}
  56%{opacity:.34;}
  58%{opacity:0;}
  100%{opacity:0;}
}
@media (prefers-reduced-motion:reduce){
  .lightning,.lightning::after,.bolt{animation:none;opacity:0;}
}

/* ---- Panel ----------------------------------------------------------- */
.sheet{
  position:relative;max-width:var(--max-width);margin:0 auto;
  background:linear-gradient(var(--panel-1),var(--panel-2));
  border:1px solid var(--border);border-radius:var(--radius);
  box-shadow:0 30px 80px rgba(0,0,0,.55), inset 0 1px 0 rgba(255,255,255,.04);
  -webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);
  overflow:hidden;
}
.sheet::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,var(--violet),var(--cyan));opacity:.9;z-index:2;}
.inner{padding:2.4rem 2.6rem 2.2rem;position:relative;z-index:1;}

/* ---- Drifting sky: ASCII stars + clouds (home background) ------------ */
.sky{position:absolute;inset:0;overflow:hidden;z-index:0;pointer-events:none;}
.stars{position:absolute;margin:0;z-index:0;font-family:var(--mono);white-space:pre;
  line-height:1.3;color:rgba(205,214,240,.26);text-shadow:0 0 6px rgba(150,180,255,.12);}
.stars.s1{top:1%;left:-3%;font-size:.6rem;color:rgba(205,214,240,.30);}
.stars.s2{top:10%;left:46%;font-size:.72rem;color:rgba(190,205,240,.21);}
.stars.s3{top:54%;left:-2%;font-size:.66rem;color:rgba(200,210,238,.24);}
.cloud{position:absolute;margin:0;z-index:1;will-change:transform;
  font-family:var(--mono);white-space:pre;font-size:.6rem;line-height:1.32;
  color:rgba(176,196,255,.20);text-shadow:0 0 12px rgba(130,165,255,.20);}
.sky .cloud:nth-child(1){top:5.5%;left:55%;font-size:.74rem;color:rgba(200,215,255,.24);}
.sky .cloud:nth-child(2){top:2.5%;left:6%;font-size:.58rem;color:rgba(165,148,255,.19);}
.sky .cloud:nth-child(3){top:21%;left:39%;font-size:.64rem;color:rgba(120,210,225,.22);}
.sky .cloud:nth-child(4){top:37%;left:4%;font-size:.6rem;color:rgba(165,148,255,.18);}
.sky .cloud:nth-child(5){top:49%;left:67%;font-size:.68rem;color:rgba(200,215,255,.22);}
.sky .cloud:nth-child(6){top:64%;left:23%;font-size:.58rem;color:rgba(120,210,225,.19);}
.sky .cloud:nth-child(7){top:77%;left:51%;font-size:.7rem;color:rgba(120,210,225,.22);}
.sky .cloud:nth-child(8){top:86%;left:8%;font-size:.6rem;color:rgba(165,148,255,.19);}
@keyframes driftX{to{transform:translate3d(30px,-7px,0)}}
@keyframes driftY{to{transform:translate3d(-26px,6px,0)}}
@keyframes driftZ{to{transform:translate3d(22px,9px,0)}}
@media (prefers-reduced-motion: no-preference){
  .sky .cloud:nth-child(1){animation:driftX 58s ease-in-out -2s infinite alternate;}
  .sky .cloud:nth-child(2){animation:driftY 67s ease-in-out -9s infinite alternate;}
  .sky .cloud:nth-child(3){animation:driftZ 49s ease-in-out -4s infinite alternate;}
  .sky .cloud:nth-child(4){animation:driftX 72s ease-in-out -14s infinite alternate;}
  .sky .cloud:nth-child(5){animation:driftY 54s ease-in-out -1s infinite alternate;}
  .sky .cloud:nth-child(6){animation:driftZ 63s ease-in-out -7s infinite alternate;}
  .sky .cloud:nth-child(7){animation:driftX 60s ease-in-out -11s infinite alternate;}
  .sky .cloud:nth-child(8){animation:driftY 69s ease-in-out -3s infinite alternate;}
}

/* ---- Horizon: castle in the mountains (home bottom) ----------------- */
.sheet.home .inner{padding-bottom:250px;}
.ridge,.ridge-back,.treeline{position:absolute;left:50%;transform:translateX(-50%);margin:0;
  font-family:var(--mono);white-space:pre;line-height:1.13;font-size:.66rem;}
.ridge{bottom:6px;z-index:3;
  color:rgba(152,164,214,.44);text-shadow:0 0 12px rgba(110,120,190,.30);}
.ridge-back{bottom:30px;z-index:1;
  color:rgba(123,136,190,.30);text-shadow:0 0 9px rgba(90,110,180,.16);}
.treeline{bottom:6px;z-index:2;
  color:rgba(120,198,150,.30);text-shadow:0 0 9px rgba(90,200,140,.15);}
@media (max-width:680px){ .ridge-back,.treeline{display:none;} }

/* ---- Masthead -------------------------------------------------------- */
.site-header{margin:0;}
.masthead{display:flex;gap:2.1rem;align-items:center;}
.logo{flex:0 0 auto;margin:0;color:var(--cyan);font-family:var(--mono);
  font-size:.6rem;line-height:1.18;text-align:left;text-shadow:0 0 14px rgba(86,225,216,.45);}
.logo span{color:var(--cyan);}
.mast-title{flex:1;min-width:0;}
.mast-title h1{
  margin:0;font-family:var(--title);font-weight:700;
  font-size:clamp(1.9rem,4.6vw,2.9rem);line-height:1.12;letter-spacing:-.02em;padding-bottom:.08em;
  background:linear-gradient(100deg,#ffffff 0%,#bfeaff 38%,var(--cyan) 64%,var(--violet) 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.mast-title h1 .cursor{color:var(--cyan);-webkit-text-fill-color:var(--cyan);
  font-weight:400;margin-left:.06em;animation:blink 1.1s steps(1) infinite;}
@keyframes blink{0%,50%{opacity:1}50.01%,100%{opacity:0}}
.nightsky{margin:1.3rem 0 .2rem;font-family:var(--mono);font-size:.62rem;line-height:1.3;
  color:rgba(122,224,160,.55);white-space:pre;overflow:hidden;
  text-shadow:0 0 8px rgba(90,247,142,.3);}

/* ---- Nav ------------------------------------------------------------- */
.site-nav{display:flex;flex-wrap:wrap;gap:.2rem 1.4rem;margin:1.9rem 0 0;
  padding-bottom:.9rem;border-bottom:1px solid var(--rule);}
.site-nav a{font-family:var(--mono);font-size:.8rem;letter-spacing:.02em;text-decoration:none;
  color:var(--muted);padding:.15rem 0;border-bottom:2px solid transparent;transition:color .15s ease;}
.site-nav a:hover{color:var(--star);}
.site-nav a.current{color:var(--star);border-bottom-color:var(--cyan);font-weight:700;}

/* ---- Home contents --------------------------------------------------- */
.contents{margin:2rem 0 0;}
.eyebrow{font-family:var(--mono);font-size:.72rem;letter-spacing:.26em;text-transform:uppercase;
  color:var(--violet);margin:0 0 .5rem;}
.toc{list-style:none;margin:0;padding:0;}
.toc li{border-bottom:1px solid var(--rule);}
.toc li:last-child{border-bottom:none;}
.toc li a{display:flex;align-items:center;padding:.7rem 0;text-decoration:none;color:inherit;}
.toc .ic{width:2.4rem;flex:0 0 auto;display:inline-flex;align-items:center;}
.toc .ic img{width:1.5rem;height:1.5rem;display:block;}
.toc .nm{font-family:var(--mono);font-weight:700;font-size:1.05rem;color:var(--star);white-space:nowrap;letter-spacing:-.01em;transition:color .15s ease;}
.toc li a:hover .nm{color:var(--cyan);}
.toc .dots{flex:1;margin:0 .8rem;border-bottom:2px dotted var(--rule);transform:translateY(-.2rem);}
.toc .ds{font-family:var(--sans);color:var(--muted);font-size:.92rem;text-align:right;flex:0 0 auto;white-space:nowrap;}

/* ---- Markdown textbox ------------------------------------------------ */
main{margin:0;}
.mdbox{margin-top:1.7rem;border:1px solid var(--border);border-radius:12px;overflow:hidden;background:rgba(0,0,0,.30);}
.mdbox .bar{display:flex;align-items:center;gap:.55rem;padding:.5rem .7rem .5rem .95rem;
  border-bottom:1px solid var(--border);background:rgba(255,255,255,.03);
  font-family:var(--mono);font-size:.72rem;color:var(--muted);letter-spacing:.02em;}
.mdbox .bar .sq{width:.7rem;height:.7rem;border-radius:3px;background:linear-gradient(var(--violet),var(--cyan));}
.copy{margin-left:auto;font-family:var(--mono);font-size:.66rem;letter-spacing:.07em;text-transform:uppercase;
  color:var(--muted);background:rgba(255,255,255,.04);border:1px solid var(--border);border-radius:6px;
  padding:.3rem .7rem;cursor:pointer;transition:color .15s,border-color .15s,background .15s;}
.copy:hover{color:var(--star);border-color:var(--rule);background:rgba(255,255,255,.07);}
.copy.ok{color:var(--green);border-color:rgba(126,224,160,.5);}
.mdbox pre{margin:0;padding:1.15rem 1.3rem;font-family:var(--mono);font-size:.8rem;line-height:1.8;
  color:#cbd1e2;white-space:pre;overflow-x:auto;tab-size:2;}
.mdbox .mh{color:var(--cyan);font-weight:700;}
.mdbox .mq{color:var(--violet);}
.mdbox .cm{color:var(--green);opacity:.85;}
.mdbox .fence{color:var(--muted);opacity:.7;}

/* ---- Footer ---------------------------------------------------------- */
.site-footer{margin:2.4rem 0 0;border-top:1px solid var(--rule);padding-top:1.1rem;
  display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.6rem;}
.home-footer{margin-top:.5rem;border-top:none;padding-top:0;}
.btn-donate{display:inline-block;font-family:var(--mono);font-size:.74rem;font-weight:600;letter-spacing:.03em;
  color:var(--muted);text-decoration:none;border:1px solid var(--border);border-radius:7px;
  padding:.45rem .9rem;background:transparent;transition:color .15s ease,border-color .15s ease;}
.btn-donate:hover{color:var(--star);border-color:var(--rule);}
.colo{font-family:var(--mono);font-size:.72rem;letter-spacing:.05em;color:var(--muted);text-align:center;margin:.5rem 0 0;}
.colo a{color:var(--muted);}
a{color:var(--cyan);}

/* ---- 404 ------------------------------------------------------------- */
.lost{font-size:1.05rem;color:var(--text);margin:1.4rem 0;}
.lost kbd{font-family:var(--mono);font-size:.85em;color:var(--star);
  background:rgba(255,255,255,.06);border:1px solid var(--border);
  border-radius:5px;padding:.05em .45em;}

/* ---- Responsive ------------------------------------------------------ */
@media (max-width:680px){
  body{padding:24px 12px;}
  .inner{padding:1.6rem 1.2rem 1.5rem;}
  .masthead{flex-direction:column;align-items:flex-start;gap:1rem;}
  .site-nav{flex-wrap:nowrap;overflow-x:auto;-ms-overflow-style:none;scrollbar-width:none;}
  .site-nav::-webkit-scrollbar{display:none;}
  .toc .ds{display:none;}
  .mdbox pre{font-size:.74rem;}
}
@media (prefers-reduced-motion: reduce){
  *{transition:none !important;scroll-behavior:auto !important;}
  .cursor{animation:none;}
}

/* ---- Print: clean black-on-white cheat sheet ------------------------- */
@media print {
  body{background:#fff !important;color:#000;padding:0;}
  .inner{background:none !important;box-shadow:none !important;padding:0;}
  .sheet.home .inner{padding-bottom:0 !important;}
  .nightsky,.sky,.logo,.site-nav,.site-footer,.copy,.cursor,.cmdk-trigger,.cmdk-backdrop{display:none !important;}
  .mast-title h1{background:none !important;-webkit-text-fill-color:#000 !important;color:#000 !important;}
  .contents .eyebrow,.toc .no,.toc .nm,.toc .ds,a{color:#000 !important;}
  .mdbox{border:1px solid #bbb;background:#fff !important;}
  .mdbox .bar{background:#f2f2f2 !important;color:#333;border-bottom:1px solid #ddd;}
  .mdbox pre{color:#111 !important;white-space:pre-wrap;word-break:break-word;}
  .mdbox .mh{color:#000 !important;font-weight:700;}
  .mdbox .mq,.mdbox .cm,.mdbox .fence{color:#555 !important;opacity:1;}
  .md-body{color:#000 !important;} .md-body h2,.md-body h3,.md-body h4{color:#000 !important;}
  .md-body code{background:#f2f2f2 !important;color:#111 !important;}
  .codeblock pre{background:#fff !important;color:#111 !important;border:1px solid #bbb;}
  .codeblock .tok-com{color:#666 !important;opacity:1;}
  .codeblock .tok-kw,.codeblock .tok-fn,.codeblock .tok-tag,.codeblock .tok-att,
  .codeblock .tok-str,.codeblock .tok-num,.codeblock .tok-var{color:#111 !important;}
  .block-copy,.md-body .anchor{display:none !important;}
  .md-body blockquote{background:#f7f7f7 !important;color:#333 !important;}
}

/* ---- Cool links list ------------------------------------------------- */
.links{list-style:none;margin:1.6rem 0 0;padding:0;}
.links li{border-top:1px solid var(--rule);}
.links li:first-child{border-top:none;}
.links a{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:.8rem;row-gap:.15rem;
  padding:.75rem 0;text-decoration:none;color:inherit;}
.links .nm{font-family:var(--mono);font-weight:700;font-size:1.02rem;color:var(--star);
  letter-spacing:-.01em;transition:color .15s ease;}
.links a:hover .nm{color:var(--cyan);}
.links .ds{font-family:var(--sans);color:var(--muted);font-size:.92rem;}
.links .host{font-family:var(--mono);font-size:.72rem;color:var(--violet);margin-left:auto;white-space:nowrap;}
@media (max-width:680px){ .links .host{margin-left:0;} }

/* ---- Rendered Markdown body ----------------------------------------- */
.md-source{display:none;}
.md-body{padding:1.15rem 1.3rem;font-family:var(--sans);color:var(--text);font-size:.9rem;}
.md-body h2,.md-body h3,.md-body h4{font-family:var(--mono);color:var(--cyan);letter-spacing:-.01em;
  margin:1.6rem 0 .5rem;line-height:1.25;}
.md-body h2{font-size:1.15rem;} .md-body h3{font-size:1.02rem;} .md-body h4{font-size:.9rem;}
.md-body > h2:first-child,.md-body > h3:first-child{margin-top:0;}
.md-body p{margin:.5rem 0;} .md-body em{color:var(--gold);font-style:normal;}
.md-body code{font-family:var(--mono);font-size:.86em;color:var(--gold);
  background:rgba(255,255,255,.05);padding:.05em .35em;border-radius:4px;}
.md-body ul,.md-body ol{margin:.5rem 0;padding-left:1.4rem;}
.md-body li{margin:.2rem 0;}
.md-body blockquote{margin:.7rem 0;padding:.5rem .9rem;border-left:2px solid var(--violet);
  background:rgba(139,123,255,.07);color:var(--muted);border-radius:0 6px 6px 0;}
.md-body blockquote p{margin:0;} .md-body blockquote code{color:var(--gold);}
.md-body table{border-collapse:collapse;width:100%;margin:.7rem 0;font-size:.84rem;}
.md-body th,.md-body td{border:1px solid var(--border);padding:.4rem .6rem;text-align:left;font-family:var(--mono);}
.md-body th{color:var(--star);background:rgba(255,255,255,.03);}
.md-body .anchor{color:var(--muted);opacity:0;text-decoration:none;margin-left:.4rem;
  font-weight:400;cursor:pointer;transition:opacity .15s,color .15s;}
.md-body h2:hover .anchor,.md-body h3:hover .anchor,.md-body h4:hover .anchor{opacity:.6;}
.md-body .anchor:hover{color:var(--cyan);opacity:1;}
.md-body .anchor.ok{opacity:1;color:var(--green);}
.codeblock{position:relative;margin:.6rem 0;}
.codeblock pre{margin:0;padding:.9rem 1.1rem;font-family:var(--mono);font-size:.76rem;line-height:1.7;
  color:#cbd1e2;white-space:pre;overflow-x:auto;tab-size:2;background:rgba(0,0,0,.30);
  border:1px solid var(--border);border-radius:10px;}
.codeblock code{font-family:inherit;font-size:inherit;color:inherit;background:none;padding:0;}
/* Code token colors (lib/highlight.js) */
.codeblock .tok-com{color:var(--muted);opacity:.8;font-style:italic;}
.codeblock .tok-kw{color:var(--violet);}
.codeblock .tok-str{color:var(--green);}
.codeblock .tok-num{color:var(--gold);}
.codeblock .tok-fn{color:var(--cyan);}
.codeblock .tok-var{color:var(--gold);}
.codeblock .tok-tag{color:var(--violet);}
.codeblock .tok-att{color:var(--cyan);}
.block-copy{position:absolute;top:.45rem;right:.5rem;font-family:var(--mono);font-size:.6rem;
  letter-spacing:.07em;text-transform:uppercase;color:var(--muted);background:rgba(20,24,46,.85);
  border:1px solid var(--border);border-radius:6px;padding:.2rem .5rem;cursor:pointer;opacity:0;
  transition:color .15s,border-color .15s,opacity .15s;}
.codeblock:hover .block-copy{opacity:1;}
.block-copy:hover{color:var(--star);border-color:var(--rule);}
.block-copy.ok{color:var(--green);border-color:rgba(126,224,160,.5);opacity:1;}
@media (max-width:680px){ .block-copy{opacity:1;} .md-body{padding:1rem;} }

/* ---- Command-palette search (search.js) ----------------------------- */
.cmdk-trigger{position:fixed;top:14px;right:14px;z-index:40;display:inline-flex;align-items:center;
  gap:.4rem;font-family:var(--mono);font-size:.72rem;color:var(--muted);
  background:rgba(13,17,38,.66);border:1px solid var(--border);border-radius:8px;
  padding:.34rem .55rem;cursor:pointer;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  transition:color .15s,border-color .15s,background .15s;}
.cmdk-trigger:hover{color:var(--star);border-color:var(--violet);background:rgba(20,24,46,.8);}
.cmdk-mag{font-size:.9rem;line-height:1;color:var(--cyan);}
.cmdk-trigger kbd{font-family:var(--mono);font-size:.62rem;color:var(--muted);
  border:1px solid var(--border);border-radius:4px;padding:.02rem .26rem;}

.cmdk-backdrop{position:fixed;inset:0;z-index:60;display:none;justify-content:center;
  align-items:flex-start;padding:14vh 1rem 2rem;background:rgba(4,6,14,.62);
  backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);}
.cmdk-backdrop.is-open{display:flex;}
body.cmdk-lock{overflow:hidden;}
.cmdk{width:100%;max-width:540px;background:linear-gradient(var(--panel-1),var(--panel-2));
  border:1px solid var(--border);border-radius:14px;overflow:hidden;
  box-shadow:0 24px 70px rgba(0,0,0,.55),0 0 0 1px rgba(139,123,255,.08);}
.cmdk-input{width:100%;box-sizing:border-box;font-family:var(--mono);font-size:1rem;color:var(--text);
  background:transparent;border:0;border-bottom:1px solid var(--border);
  padding:.95rem 1.1rem;outline:none;}
.cmdk-input::placeholder{color:var(--muted);}
.cmdk-list{list-style:none;margin:0;padding:.4rem;max-height:46vh;overflow-y:auto;}
.cmdk-row{display:flex;align-items:baseline;gap:.6rem;padding:.5rem .7rem;border-radius:8px;
  cursor:pointer;}
.cmdk-row.is-active{background:rgba(139,123,255,.16);}
.cmdk-sec{font-family:var(--mono);font-size:.9rem;color:var(--star);}
.cmdk-row.is-active .cmdk-sec{color:#fff;}
.cmdk-src{margin-left:auto;font-family:var(--mono);font-size:.7rem;color:var(--muted);
  letter-spacing:.02em;white-space:nowrap;}
.cmdk-empty{padding:.7rem .8rem;font-family:var(--mono);font-size:.85rem;color:var(--muted);}
.cmdk-hint{display:flex;gap:1rem;padding:.5rem .9rem;border-top:1px solid var(--border);
  font-family:var(--mono);font-size:.66rem;color:var(--muted);}
.cmdk-hint kbd{border:1px solid var(--border);border-radius:4px;padding:.02rem .26rem;margin-right:.12rem;}
@media (max-width:680px){ .cmdk-trigger kbd{display:none;} }

/* ---- AI-news "Signal" feed (home page only) -------------------------------
   Every selector is scoped under .feed so no other page is affected. Reveal
   hiding is gated on html.js so the feed stays visible with JavaScript off. */
.feed{margin:1.7rem 0 0;}
.feed-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.7rem;}
.feed-head .eyebrow{margin:0;}
.feed-status{display:inline-flex;align-items:center;gap:.45rem;font-family:var(--mono);
  font-size:.64rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);white-space:nowrap;}
.pulse{width:.5rem;height:.5rem;border-radius:50%;background:var(--cyan);
  box-shadow:0 0 0 0 rgba(86,225,216,.5);animation:feedpulse 2.4s ease-out infinite;}
@keyframes feedpulse{
  0%{box-shadow:0 0 0 0 rgba(86,225,216,.5);}
  70%{box-shadow:0 0 0 .5rem rgba(86,225,216,0);}
  100%{box-shadow:0 0 0 0 rgba(86,225,216,0);}}

.feed-hero{position:relative;display:block;text-decoration:none;color:var(--text);
  background:linear-gradient(var(--panel-1),var(--panel-2));border:1px solid var(--border);
  border-radius:var(--radius);padding:1.05rem 1.2rem 1rem;overflow:hidden;margin-bottom:1rem;
  transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease;}
.feed-hero::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:linear-gradient(180deg,var(--gold),var(--violet));}
.feed-chip{display:inline-block;font-family:var(--mono);font-size:.6rem;letter-spacing:.14em;
  text-transform:uppercase;font-weight:700;color:var(--space);background:var(--gold);
  padding:.16rem .5rem;border-radius:999px;}
.feed-hero-title{margin:.55rem 0 .3rem;font-family:var(--mono);font-size:1.14rem;line-height:1.28;
  color:var(--star);letter-spacing:-.01em;}
.feed-hero-sum{margin:0 0 .55rem;color:var(--muted);font-size:.95rem;line-height:1.5;}
.feed-src{font-family:var(--mono);font-size:.68rem;color:var(--cyan);letter-spacing:.03em;}

.feed-grid{list-style:none;margin:0;padding:0;display:grid;gap:.8rem;
  grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));}
.feed-card{display:flex;}
.feed-card a{display:flex;flex-direction:column;gap:.32rem;width:100%;text-decoration:none;color:var(--text);
  background:linear-gradient(var(--panel-1),var(--panel-2));border:1px solid var(--border);
  border-radius:12px;padding:.85rem .95rem;
  transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease;}
.feed-card-src{font-family:var(--mono);font-size:.6rem;letter-spacing:.09em;text-transform:uppercase;color:var(--violet);}
.feed-card-title{font-family:var(--sans);font-weight:700;font-size:.98rem;line-height:1.3;color:var(--star);}
.feed-card-sum{font-size:.85rem;line-height:1.45;color:var(--muted);}
.feed-card-time{margin-top:auto;font-family:var(--mono);font-size:.62rem;color:var(--cyan);letter-spacing:.02em;}
.feed-card-time:empty{display:none;}

.feed-cc{list-style:none;margin:1rem 0 0;padding:.7rem .2rem 0;border-top:1px solid var(--rule);
  display:flex;flex-direction:column;gap:.4rem;}
.feed-cc a{font-family:var(--mono);font-size:.8rem;color:var(--muted);text-decoration:none;
  display:inline-flex;align-items:baseline;gap:.55rem;transition:color .15s ease;}
.feed-cc a:hover{color:var(--cyan);}
.cc-kind{font-size:.58rem;letter-spacing:.08em;text-transform:uppercase;color:var(--green);
  border:1px solid var(--rule);border-radius:4px;padding:.02rem .3rem;flex:0 0 auto;}

.feed-empty{margin:1.7rem 0 0;}
.feed-muted{color:var(--muted);font-size:.95rem;}
/* Untrusted feed text can contain long unbroken tokens (URLs, hostnames);
   let them wrap so they never force horizontal scroll. */
.feed-hero-title,.feed-hero-sum,.feed-card-title,.feed-card-sum,.feed-card-src,.feed-cc a{
  overflow-wrap:break-word;min-width:0;}

@media (hover:hover){
  .feed-hero:hover{transform:translateY(-2px);border-color:rgba(255,206,138,.42);box-shadow:0 14px 40px rgba(0,0,0,.42);}
  .feed-card a:hover{transform:translateY(-3px);border-color:rgba(139,123,255,.45);box-shadow:0 12px 30px rgba(0,0,0,.38);}}

/* Reveal-on-scroll. Hidden only when JS is on (html.js). feed.js adds .in as
   elements enter view; the failsafe animation force-reveals after 2s so that if
   feed.js never runs (blocked, 404, or throws) the content can never stay hidden. */
.js .reveal{opacity:0;transform:translateY(12px);animation:feedreveal .01s linear 2s forwards;}
.js .reveal.in{opacity:1;transform:none;animation:none;transition:opacity .5s ease,transform .5s ease;}
@keyframes feedreveal{to{opacity:1;transform:none;}}
@media (prefers-reduced-motion:reduce){
  .js .reveal{opacity:1 !important;transform:none !important;animation:none !important;transition:none !important;}
  .feed-hero:hover,.feed-card a:hover{transform:none;transition:none;}
  .pulse{animation:none;}}
