/* fradley.org.uk — pixel-terminal theme. Generated by build_blog.py. Dark-only. */
:root{
 --bg:#0a0e13; --panel:#0d131a; --panel2:#111a24; --border:#1b2734;
 --text:#e8f0f6; --muted:#8aa0ad; --phos:#5df2b3; --phos-dim:#2fae86;
 --mono:"VT323",ui-monospace,monospace; --pixel:"Pixelify Sans",sans-serif;
 --body:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif; --radius:12px;
}
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{background:var(--bg);color:var(--text);font-family:var(--body);line-height:1.6;min-height:100vh;
 -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
 background-image:radial-gradient(1100px 560px at 72% -12%, rgba(93,242,179,.07), transparent 60%);}
body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:9;
 background:repeating-linear-gradient(to bottom, rgba(255,255,255,.028) 0 1px, transparent 1px 3px);opacity:.5}
a{color:inherit}
:focus-visible{outline:2px solid var(--phos);outline-offset:2px;border-radius:3px}
::selection{background:var(--phos);color:#04231a}
.glow{text-shadow:0 0 12px rgba(93,242,179,.5)}
.prompt{color:var(--phos)} .cmd{color:var(--text)} .mt{margin-top:1.1rem}

.bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.9rem clamp(1rem,4vw,1.6rem);
 border-bottom:1px solid var(--border);background:rgba(10,14,19,.82);backdrop-filter:blur(6px);position:sticky;top:0;z-index:10}
.brand{display:flex;align-items:center;gap:.6rem;font-family:var(--pixel);font-weight:700;font-size:1.05rem;text-decoration:none;color:var(--text)}
.chip{width:34px;height:34px;flex:none;display:grid;place-items:center;border-radius:8px;font-family:var(--pixel);font-weight:700;font-size:.9rem;
 background:linear-gradient(145deg,var(--phos),var(--phos-dim));color:#04231a;box-shadow:0 0 16px rgba(93,242,179,.4)}
.at{color:var(--muted)}
.nav{font-family:var(--mono);font-size:1.4rem;display:flex;gap:clamp(.9rem,3vw,1.3rem);color:var(--muted)}
.navlink{text-decoration:none}.navlink:hover,.navlink.cur{color:var(--phos)}

.wrap{max-width:820px;margin:0 auto;padding:2.4rem clamp(1.1rem,4vw,1.4rem) 4rem}
.wrap.narrow{max-width:720px}

.btn{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--mono);font-size:1.3rem;text-decoration:none;
 padding:.4rem 1.05rem;border-radius:8px;border:1px solid var(--border);color:var(--text);transition:.15s;background:var(--panel)}
.btn:hover{border-color:var(--phos);color:var(--phos)}
.btn.solid{background:linear-gradient(135deg,var(--phos),var(--phos-dim));color:#04231a;border:none;box-shadow:0 0 18px rgba(93,242,179,.3)}
.btn.solid:hover{color:#04231a;filter:brightness(1.05)}

.term{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--panel);box-shadow:0 24px 64px rgba(0,0,0,.55)}
.term-bar{display:flex;align-items:center;gap:.5rem;padding:.6rem .9rem;background:var(--panel2);border-bottom:1px solid var(--border);font-family:var(--mono);color:var(--muted);font-size:1.2rem}
.dot{width:11px;height:11px;border-radius:50%}.d1{background:#ff5f57}.d2{background:#febc2e}.d3{background:#28c840}
.term-title{margin-left:.4rem}
.term-body{padding:1.6rem 1.5rem 1.9rem;font-family:var(--mono);font-size:1.5rem;line-height:1.35}
.name{font-family:var(--pixel);font-weight:700;font-size:clamp(2.3rem,7vw,3.4rem);letter-spacing:1px;margin:.55rem 0 .15rem;line-height:1}
.tag{color:var(--muted);font-family:var(--mono);font-size:1.35rem}.tag b{color:var(--phos);font-weight:400}
.cursor{display:inline-block;width:.55ch;height:1.05em;vertical-align:-.15em;background:var(--phos);animation:blink 1s steps(1) infinite;box-shadow:0 0 10px var(--phos)}
@keyframes blink{50%{opacity:0}}

.cloud{width:52px;height:45px;image-rendering:pixelated;filter:drop-shadow(0 0 7px rgba(93,242,179,.5))}
.cloud.big{width:128px;height:110px;animation:bob 3.2s ease-in-out infinite}
.term.hero{position:relative}
.term.hero .cloud{position:absolute;top:-30px;right:26px;transform-origin:bottom center;animation:peek 13s ease-in-out infinite}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
@keyframes peek{0%,68%{transform:translateY(28px) scale(.55);opacity:0}74%{transform:translateY(-5px) scale(1.06);opacity:1}80%{transform:translateY(0) scale(1);opacity:1}87%{transform:translateY(-4px);opacity:1}93%{transform:translateY(0);opacity:1}100%{transform:translateY(28px) scale(.55);opacity:0}}
.gameover{text-align:center;padding:2.5rem 1rem 4rem}
.go-title{font-family:var(--pixel);font-weight:700;font-size:2.8rem;color:var(--phos);letter-spacing:3px;text-shadow:0 0 16px rgba(93,242,179,.5);margin:1.1rem 0 .4rem}
.go-sub{font-family:var(--mono);font-size:1.55rem;color:var(--muted);margin-bottom:1.7rem}
.go-hp{font-family:var(--mono);font-size:1.45rem;color:var(--muted);margin-top:1.5rem}
.go-hp b{color:var(--phos-dim);letter-spacing:4px;font-weight:400}
.go-coin{font-family:var(--mono);font-size:1.35rem;color:var(--phos);margin-top:.7rem;animation:coin 1.2s steps(1) infinite}
@keyframes coin{50%{opacity:.25}}

.sec{font-family:var(--mono);color:var(--muted);font-size:1.35rem;margin:2.2rem 0 1rem}
.post-list{list-style:none}
.card{display:block;text-decoration:none;color:inherit;border:1px solid var(--border);
 border-radius:10px;background:var(--panel);padding:1.2rem 1.4rem;margin-bottom:1rem;transition:transform .15s,border-color .2s,box-shadow .2s}
.card:hover{border-color:var(--phos-dim);transform:translateY(-2px);box-shadow:0 0 24px rgba(93,242,179,.10)}
.k{font-family:var(--mono);color:var(--phos-dim);font-size:1.2rem;letter-spacing:.02em}
.card h3{font-family:var(--mono);font-weight:400;font-size:1.7rem;margin:.15rem 0 .35rem;line-height:1.08}
.card p{color:var(--muted);font-size:.98rem;line-height:1.55}
.more{font-family:var(--mono);color:var(--phos);font-size:1.2rem;margin-top:.6rem;display:inline-block}

.back{display:inline-block;font-family:var(--mono);color:var(--muted);font-size:1.3rem;text-decoration:none;margin-bottom:1.4rem}
.back:hover{color:var(--phos)}
.post-kicker{font-family:var(--mono);color:var(--muted);font-size:1.25rem;margin-bottom:.3rem}
.post-title{font-family:var(--mono);font-weight:400;font-size:clamp(2.3rem,6vw,3.3rem);line-height:1.05;margin-bottom:.5rem}
.post-meta{font-family:var(--mono);color:var(--muted);font-size:1.25rem;margin-bottom:1.8rem;padding-bottom:1.3rem;border-bottom:1px solid var(--border)}
.post-body{font-size:1.06rem;line-height:1.75;color:#dbe6ee}
.post-body h2{font-family:var(--mono);font-weight:400;font-size:1.85rem;margin:2.2rem 0 .7rem;color:var(--text)}
.post-body h3{font-family:var(--mono);font-weight:400;font-size:1.5rem;margin:1.8rem 0 .5rem;color:var(--text)}
.post-body p{margin:0 0 1.2rem}
.post-body ul,.post-body ol{margin:0 0 1.2rem 1.3rem}
.post-body li{margin-bottom:.5rem}
.post-body strong{color:#fff;font-weight:700}
.post-body em{color:var(--muted)}
.post-body a{color:var(--phos);text-decoration:underline;text-underline-offset:2px}
.post-body code{font-family:var(--mono);font-size:1.05em;background:var(--panel2);border:1px solid var(--border);border-radius:6px;padding:.05rem .4rem;color:var(--phos)}
.post-body blockquote{border-left:3px solid var(--phos-dim);padding-left:1rem;margin:0 0 1.2rem;color:var(--muted);font-style:italic}
.post-body hr{border:none;border-top:1px solid var(--border);margin:2rem 0}
.post-foot{display:flex;gap:.8rem;flex-wrap:wrap;margin-top:2.6rem;padding-top:1.6rem;border-top:1px solid var(--border)}

.about-name{font-family:var(--pixel);font-weight:700;font-size:clamp(2rem,6vw,3rem);margin:.5rem 0 .1rem;line-height:1}
.about-role{font-family:var(--mono);color:var(--phos);font-size:1.4rem}
.about-loc{font-family:var(--mono);color:var(--muted);font-size:1.25rem;margin-top:.1rem}
.about-bio{color:#cfdae2;font-size:1.04rem;line-height:1.65;margin:1.3rem 0 0;max-width:64ch}
.cta{display:flex;gap:.7rem;flex-wrap:wrap;margin-top:1.6rem}
.grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(1.5rem,4vw,2.6rem);margin-top:2.8rem}
.col h3{font-family:var(--pixel);font-weight:600;font-size:1.15rem;margin-bottom:.9rem;color:var(--phos)}
.col h3:not(:first-child){margin-top:1.9rem}
.tl-item{display:grid;grid-template-columns:110px 1fr;gap:1rem;padding:.8rem 0;border-top:1px solid var(--border)}
.tl-item:first-child{border-top:none}
.tl-when{font-family:var(--mono);color:var(--muted);font-size:1.2rem;padding-top:.15rem}
.tl-role{font-weight:600}.tl-co{color:var(--muted);font-size:.9rem}
.pill-row{display:flex;flex-wrap:wrap;gap:.5rem}
.pill{font-family:var(--mono);font-size:1.15rem;background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:.2rem .7rem;color:var(--muted)}
.pill.cert{border-color:var(--phos-dim);color:var(--phos)}

.foot{font-family:var(--mono);color:var(--muted);font-size:1.2rem;text-align:center;padding:2.6rem 1rem}
.foot a{text-decoration:none}.foot a:hover{color:var(--phos)}

@media(max-width:640px){.grid{grid-template-columns:1fr}.tl-item{grid-template-columns:1fr;gap:.1rem}.tl-when{padding-top:0}}
@media(prefers-reduced-motion:reduce){.cursor,.cloud,.go-coin{animation:none}html{scroll-behavior:auto}body::after{display:none}}
