/* JetBrains Mono — self-hosted (SIL Open Font License 1.1, see fonts/OFL.txt); no third-party font requests */
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:400;font-display:swap;src:url("fonts/jetbrains-mono-latin-ext-400-normal.woff2") format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:700;font-display:swap;src:url("fonts/jetbrains-mono-latin-ext-700-normal.woff2") format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:400;font-display:swap;src:url("fonts/jetbrains-mono-latin-400-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:700;font-display:swap;src:url("fonts/jetbrains-mono-latin-700-normal.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
/* ===== themes: everything accent-coloured reads these custom properties (theme red|purple|amber|green) ===== */
:root{--bg:#0a0a0a;--ch:#141414;--fg:#d8d8d8;--dim:#7a7a7a;--red:#ff2a2a;--red2:#b30000;--ok:#39ff88;--amb:#ffb347;--font:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;
  --acc-rgb:255,42,42;--deep-rgb:120,0,0;--edge:#3a0000;--edge2:#2a0000;--edge3:#4a0000;--hover:#220000;--tint:#140606;--tint2:#1c0606;--light:#ff8080;--pale:#ffc0c0;--seg1:#d41a1a;--seg2:#a00000;--seg-fg:#fff;--wall-hue:hue-rotate(0deg)}
[data-theme="purple"]{--red:#b45cff;--red2:#7a2fd0;--acc-rgb:180,92,255;--deep-rgb:80,20,140;--edge:#2c1046;--edge2:#200b34;--edge3:#3c1760;--hover:#1e0b30;--tint:#130a1c;--tint2:#1a0d28;--light:#d4a6ff;--pale:#ead6ff;--seg1:#8a3be0;--seg2:#5d1fa6;--wall-hue:hue-rotate(275deg)}
[data-theme="amber"]{--red:#ffb000;--red2:#b37a00;--amb:#ff7a59;--acc-rgb:255,176,0;--deep-rgb:120,80,0;--edge:#3a2900;--edge2:#2a1d00;--edge3:#4a3500;--hover:#221800;--tint:#161004;--tint2:#1e1606;--light:#ffd27a;--pale:#ffe7b8;--seg1:#e09a00;--seg2:#a86f00;--seg-fg:#140c00;--wall-hue:hue-rotate(38deg) saturate(1.2)}
[data-theme="green"]{--red:#33ff77;--red2:#16a34a;--ok:#5ef2ff;--acc-rgb:51,255,119;--deep-rgb:0,100,40;--edge:#003a16;--edge2:#002a10;--edge3:#004a1c;--hover:#00220c;--tint:#04150a;--tint2:#061d0e;--light:#9dffbf;--pale:#d0ffe0;--seg1:#1fc95a;--seg2:#118a3c;--seg-fg:#001a08;--wall-hue:hue-rotate(125deg)}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:#000;color:var(--fg);font-family:var(--font)}
body{display:flex;flex-direction:column;height:100dvh}
.skip{position:absolute;left:-999px;top:0;background:var(--red);color:#000;padding:.5em;z-index:10}
.skip:focus{left:0}
.crt{position:relative;z-index:1;flex:1;display:flex;flex-direction:column;margin:10px;border:1px solid var(--edge);border-radius:8px;background:radial-gradient(ellipse at center,rgba(22,16,16,.58) 0%,rgba(10,10,10,.68) 75%);-webkit-backdrop-filter:blur(1.5px) saturate(1.1);backdrop-filter:blur(1.5px) saturate(1.1);box-shadow:0 0 40px rgba(var(--acc-rgb),.12),inset 0 0 80px rgba(0,0,0,.8);overflow:hidden;min-height:0}
.crt::after{content:"";position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(to bottom,rgba(255,255,255,.025) 0 1px,transparent 1px 3px);animation:flick 6s infinite}
@keyframes flick{0%,100%{opacity:.9}50%{opacity:1}}

.dot{width:11px;height:11px;border-radius:50%}.dot.r{background:#ff5f56}.dot.y{background:#ffbd2e}.dot.g{background:#27c93f}

.screen{flex:1;overflow-y:auto;padding:14px 16px 24px;font-size:14px;line-height:1.5;text-shadow:0 0 2px rgba(var(--acc-rgb),.25);cursor:text}
#out div{white-space:pre-wrap;word-break:break-word}
.banner{color:var(--red);text-shadow:0 0 6px rgba(var(--acc-rgb),.6);line-height:1;font-size:12px;white-space:pre!important;overflow-x:auto}
.red{color:var(--red)}.dim{color:var(--dim)}.ok{color:var(--ok)}.amb{color:var(--amb)}.b{font-weight:700}
.u{color:var(--red);font-weight:700}.p{color:var(--light)}
.inputline{display:flex;flex-wrap:wrap;align-items:baseline}
#promptlabel{display:contents}
.hidden{display:none}
.field{position:relative;flex:1;min-width:0}
#mirror{white-space:pre}
#cmd{position:absolute;inset:0;width:100%;opacity:0;border:0;background:transparent;color:transparent;font:inherit;font-size:16px;caret-color:transparent}
.cursor{display:inline-block;width:.6em;height:1.1em;vertical-align:text-bottom;background:var(--red);animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
.field:focus-within{outline:none}
#term:focus-within .bar{border-bottom-color:var(--red2)}
#cmd:focus-visible + *, .inputline:focus-within{outline:1px dashed rgba(var(--acc-rgb),.5);outline-offset:3px}
a{color:var(--light)}a:focus-visible,button:focus-visible{outline:2px solid var(--red);outline-offset:2px}
#matrix{position:absolute;inset:0;width:100%;height:100%;display:none;background:#000}
/* ===== taskbar: Start · pinned apps · tray ===== */
.taskbar{position:relative;z-index:9000;flex-shrink:0;display:flex;align-items:center;gap:6px;height:56px;padding:0 8px;padding-bottom:env(safe-area-inset-bottom);background:linear-gradient(180deg,#171010 0%,#0c0909 100%);border-top:1px solid var(--edge);box-shadow:0 -6px 24px rgba(var(--acc-rgb),.08)}
.start{flex-shrink:0;display:flex;align-items:center;gap:8px;height:42px;padding:0 14px 0 10px;font:inherit;font-weight:700;font-size:13px;letter-spacing:.08em;color:var(--red);background:linear-gradient(180deg,var(--tint2) 0%,var(--tint) 100%);border:1px solid var(--red2);border-radius:6px;cursor:pointer;text-shadow:0 0 8px rgba(var(--acc-rgb),.5);transition:background .12s,box-shadow .12s}
.start:hover,.start.on{background:linear-gradient(180deg,var(--edge) 0%,var(--tint2) 100%);box-shadow:0 0 14px rgba(var(--acc-rgb),.35),inset 0 0 10px rgba(var(--acc-rgb),.15);color:var(--light)}
.start:focus-visible{outline:2px solid var(--red);outline-offset:2px}
.start-ico{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 4px rgba(var(--acc-rgb),.5))}
.start-ico .a{stroke:#e6e6e6}.start-ico .glitch{stroke:var(--light);stroke-width:1.2}
.tb-sep{width:1px;height:30px;background:var(--edge);flex-shrink:0}
.chips{flex:1;min-width:0;display:flex;align-items:center;gap:4px;height:100%;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;padding:0 2px}
.chips::-webkit-scrollbar{display:none}
.chips .app{font:inherit;flex:0 0 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;width:52px;height:46px;padding:4px 2px;color:var(--red);background:transparent;border:1px solid transparent;border-radius:6px;cursor:pointer;position:relative;transition:background .12s,border-color .12s}
.chips .ico{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 4px rgba(var(--acc-rgb),.35));pointer-events:none}
.chips .ico .a{stroke:#e6e6e6}
.chips .app-label{font-size:9px;letter-spacing:.03em;color:#9a9a9a;line-height:1;pointer-events:none;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chips .app:hover{background:var(--hover);border-color:var(--edge3)}
.chips .app:hover .app-label{color:#fff}
.chips .app::after{content:"";position:absolute;bottom:1px;left:50%;width:0;height:2px;background:var(--red);transition:width .12s,left .12s;border-radius:2px}
.chips .app:hover::after{left:30%;width:40%}
.chips .app:focus-visible{outline:2px solid var(--red);outline-offset:-2px}
.tray{flex-shrink:0;display:flex;align-items:center;gap:4px;height:42px;padding-left:8px;border-left:1px solid var(--edge)}
.tray-weather{display:flex;align-items:center;gap:6px;height:38px;padding:0 8px;font:inherit;font-size:12px;color:var(--fg);background:transparent;border:1px solid transparent;border-radius:6px;cursor:pointer}
.tray-weather[hidden]{display:none}
.tray-weather:hover{background:var(--hover);border-color:var(--edge3)}
.tray-weather:focus-visible{outline:2px solid var(--red);outline-offset:-2px}
.tray-weather.loading{opacity:.6}
.wx-ico{width:20px;height:20px;fill:none;stroke:var(--red);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 4px rgba(var(--acc-rgb),.35))}
.wx-ico .a{stroke:#e6e6e6}
.wx-temp{font-weight:700;color:#fff}.wx-cond{color:var(--dim);font-size:11px}
.tray-clock{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;padding:0 6px;line-height:1.25;font-size:12px;color:var(--fg);white-space:nowrap;cursor:default}
.tc-time{font-weight:700;color:#fff}.tc-date{font-size:10.5px;color:var(--dim)}
/* Start menu */
.startmenu{position:fixed;z-index:9001;left:8px;bottom:64px;width:min(760px,calc(100vw - 16px));max-height:calc(100dvh - 90px);display:flex;flex-direction:column;background:rgba(14,10,10,.97);border:1px solid var(--red2);border-radius:10px;box-shadow:0 10px 40px rgba(0,0,0,.8),0 0 30px rgba(var(--acc-rgb),.18);overflow:hidden;animation:smIn .14s ease-out}
.startmenu[hidden]{display:none}
@keyframes smIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.sm-head{display:flex;align-items:center;gap:12px;padding:14px 16px;background:linear-gradient(90deg,var(--edge2) 0%,var(--tint) 60%,transparent 100%);border-bottom:1px solid var(--edge)}
.sm-logo{width:34px;height:34px;fill:none;stroke:var(--red);stroke-width:1.5;stroke-linejoin:round;filter:drop-shadow(0 0 6px rgba(var(--acc-rgb),.5))}
.sm-title{color:var(--red);font-weight:700;font-size:14px;letter-spacing:.03em;text-shadow:0 0 8px rgba(var(--acc-rgb),.45)}
.sm-sub{color:#b0b0b0;font-size:11px;margin-top:2px}
.sm-cols{display:grid;grid-template-columns:1fr 1.25fr 1fr;gap:4px;padding:10px;overflow-y:auto}
.sm-group ul{list-style:none;margin:0;padding:0}
.sm-gh{margin:4px 8px 6px;font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--amb)}
.sm-gh::before{content:"// ";color:var(--red)}
.sm-item{width:100%;display:flex;align-items:center;gap:10px;padding:6px 8px;font:inherit;text-align:left;color:var(--fg);background:transparent;border:1px solid transparent;border-radius:5px;cursor:pointer}
.sm-item:hover,.sm-item:focus-visible{background:var(--hover);border-color:var(--edge3);outline:none}
.sm-item:focus-visible{box-shadow:inset 2px 0 0 var(--red)}
.sm-ico{flex-shrink:0;width:18px;height:18px;fill:none;stroke:var(--red);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.sm-ico .a{stroke:#e6e6e6}
.sm-txt{display:flex;flex-direction:column;min-width:0}
.sm-name{font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sm-desc{font-size:10px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sm-foot{display:flex;justify-content:space-between;gap:10px;padding:8px 16px;font-size:10.5px;color:var(--dim);border-top:1px solid var(--edge2);background:#0a0707}
.sm-auth{color:#0a0a0a;background:var(--red);padding:1px 6px;border-radius:2px;font-weight:700;letter-spacing:.1em}
@media (max-width:900px){.chips .app-label{display:none}.chips .app{width:42px}.wx-cond{display:none}}
@media (max-width:640px){
  .taskbar{height:52px;gap:4px;padding:0 4px}
  .start{padding:0 10px;height:40px}.start-label{display:none}
  .tb-sep{display:none}
  .chips .app{width:40px;height:42px}
  .tray{padding-left:4px}.tc-date{display:none}.tray-weather{padding:0 4px;gap:3px}
  .startmenu{left:0;right:0;width:100vw;bottom:52px;border-radius:10px 10px 0 0;max-height:calc(100dvh - 70px)}
  .sm-cols{grid-template-columns:1fr}
}
@media (max-width:380px){.tray-weather .wx-temp{font-size:11px}.tc-time{font-size:11px}}
@media (prefers-reduced-motion:reduce){.startmenu{animation:none}.chips .app,.chips .app::after,.start{transition:none}}
@media (max-width:640px){.screen{font-size:12.5px;padding:10px}.banner{font-size:7px}.crt{margin:4px}}
@media (prefers-reduced-motion:reduce){.crt::after{animation:none;opacity:.35}.cursor{animation:none}.screen{text-shadow:none}*{scroll-behavior:auto!important}}


.tlogo{display:block;max-width:180px;width:40vw;height:auto;margin:8px 0;filter:drop-shadow(0 0 8px rgba(var(--acc-rgb),.35))}



.bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;background:linear-gradient(180deg,#1a1212 0%,var(--ch) 100%);border-bottom:1px solid var(--edge);font-size:12px;color:var(--dim)}
.bar-left{display:flex;align-items:center;gap:8px;min-width:0}
.bar-right{display:flex;align-items:center;gap:12px;min-width:0}
.hlogo{height:36px;width:auto;border-radius:4px;filter:drop-shadow(0 0 6px rgba(var(--acc-rgb),.35))}
.brand{display:flex;flex-direction:column;line-height:1.2;min-width:0}
.brand-name{color:var(--red);font-weight:700;font-size:13px;letter-spacing:.02em;text-shadow:0 0 8px rgba(var(--acc-rgb),.45);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brand-sub{color:var(--dim);font-size:11px;white-space:nowrap}
.brand-sub .title-cwd{color:var(--light)}
.slogan{color:#b0b0b0;font-size:11px;letter-spacing:.03em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:42vw}
.badge{flex-shrink:0;font-size:10px;font-weight:700;letter-spacing:.12em;color:#0a0a0a;background:var(--red);padding:3px 8px;border-radius:3px;box-shadow:0 0 10px rgba(var(--acc-rgb),.4)}
@media (max-width:700px){
  .slogan{display:none}
  .hlogo{height:28px}
  .brand-name{font-size:12px}
  .badge{letter-spacing:.08em;padding:2px 6px}
}


/* ---- feature pack UI (report actions, vim editor, banners) ---- */
.fbanner{border:1px solid var(--red);background:var(--tint);color:var(--amb);padding:8px 12px;margin:4px 0 12px;font-weight:700;letter-spacing:.04em;text-align:center;text-shadow:0 0 8px rgba(var(--acc-rgb),.35)}
.granted{display:inline-block;margin:10px 0 6px;padding:8px 14px;border:1px solid var(--ok);color:var(--ok);background:#041a0c;font-weight:700;letter-spacing:.06em;box-shadow:0 0 18px rgba(57,255,136,.25)}
.tactions{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 4px;white-space:normal!important}
.tbtn{font:inherit;font-size:12px;color:var(--red);background:var(--ch);border:1px solid var(--edge);border-radius:4px;padding:6px 12px;cursor:pointer}
.tbtn:hover{background:var(--hover);color:#fff}
.copyblk{border:1px solid var(--edge);background:#0e0e0e;padding:10px 12px;margin:6px 0;white-space:pre-wrap;color:#c8c8c8}

.vim{position:absolute;inset:0;z-index:5;display:flex;flex-direction:column;background:#0a0a0a;font-family:var(--font);font-size:13px;line-height:1.4}
.vim-buf{flex:1;overflow:auto;position:relative;padding:8px 10px 0;min-height:0}
.vim-ta{display:block;width:100%;min-height:120px;border:0;outline:none;resize:none;background:transparent;color:var(--fg);font:inherit;padding:0;margin:0;caret-color:var(--red);white-space:pre;overflow:hidden}
.vim-ta[readonly]{caret-color:var(--amb)}
.vim-tilde{position:absolute;left:10px;top:0;color:var(--edge);pointer-events:none;white-space:pre;line-height:1.4;z-index:0}
.vim-ta{position:relative;z-index:1}
.vim-status{display:flex;justify-content:space-between;gap:12px;padding:4px 10px;background:var(--red);color:#0a0a0a;font-weight:700;font-size:12px}
.vim-mode-tag{background:#0a0a0a;color:var(--red);padding:0 6px;margin-right:6px;border-radius:2px}
.vim-mode-tag.ins{background:#0a0a0a;color:var(--ok)}
.vim-cmd{min-height:1.4em;padding:2px 10px 4px;background:#050505;color:var(--fg)}
.vim-msg{color:var(--fg)}.vim-msg.err{color:var(--red)}
.vim-cl{width:100%;border:0;background:transparent;color:var(--fg);font:inherit;outline:none;padding:0}
.vim-keys{display:flex;flex-wrap:wrap;gap:6px;padding:6px 10px 8px;background:#0e0e0e;border-top:1px solid var(--edge2)}
.vim-keys button{font:inherit;font-size:11px;color:var(--dim);background:var(--ch);border:1px solid var(--edge);border-radius:3px;padding:4px 8px;cursor:pointer}
.vim-keys button:hover{color:var(--red);border-color:var(--red2)}
@media (prefers-reduced-motion:reduce){.granted,.fbanner{box-shadow:none}}
/* blog */
.post-head{border-left:3px solid var(--red);padding:4px 0 4px 10px;margin:4px 0 12px}
.post-title{color:var(--red);font-weight:700;font-size:1.15em;text-shadow:0 0 8px rgba(var(--acc-rgb),.4)}
.post-tag{color:var(--amb)}

/* neofetch: tighter rows so the block wordmark joins up */
.nf{line-height:1.12;white-space:pre!important;overflow-x:auto}
/* SSH-style MOTD warning */
.motd{max-width:72ch;margin:10px 0 8px;border:1px solid var(--red2);border-left:4px solid var(--red);background:repeating-linear-gradient(135deg,var(--tint) 0 12px,var(--tint) 12px 24px);box-shadow:0 0 16px rgba(var(--acc-rgb),.12);white-space:normal!important}
.motd-h{padding:6px 12px;background:var(--red);color:#0a0a0a;font-weight:700;letter-spacing:.08em;font-size:.92em}
.motd-l{margin:0;padding:8px 14px 4px 36px;color:#d0d0d0}
.motd-l li{margin:3px 0;line-height:1.45}
.motd-l li::marker{color:var(--red);font-weight:700}
.motd-f{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 14px;padding:6px 12px 8px;border-top:1px dashed var(--edge);font-size:.92em}
@media (max-width:640px){.motd-l{padding-left:28px}}
/* ===== zsh / Powerlevel10k-style prompt ===== */
.pl1{display:flex;align-items:center;flex-basis:100%;width:100%;min-width:0;line-height:1.6;margin-top:6px;white-space:nowrap}
.pl2{display:inline;white-space:pre}
.echo .pl2{display:inline}
.pl-c{color:var(--edge3)}
.pl-arrow{color:var(--ok);font-weight:700;text-shadow:0 0 6px rgba(57,255,136,.45)}
.pl-arrow.bad{color:var(--red);text-shadow:0 0 6px rgba(var(--acc-rgb),.5)}
.seg{display:inline-flex;align-items:center;gap:.25em;height:1.5em;padding:0 1em 0 1.15em;margin-right:-.42em;font-size:.94em;font-weight:700;clip-path:polygon(0 0,calc(100% - .62em) 0,100% 50%,calc(100% - .62em) 100%,0 100%,.62em 50%);text-shadow:none;flex-shrink:0}
.s-user{background:linear-gradient(180deg,var(--seg1),var(--seg2));color:var(--seg-fg);padding-left:.6em;clip-path:polygon(0 0,calc(100% - .62em) 0,100% 50%,calc(100% - .62em) 100%,0 100%);border-radius:3px 0 0 3px}
.s-user .pl-u{color:var(--seg-fg)}.s-user .pl-at{color:var(--pale);font-weight:400}
.s-dir{background:#2b2b2b;color:var(--light);flex-shrink:1;min-width:0;overflow:hidden;text-overflow:ellipsis}
.s-dir.s-mode{background:#3a2a10;color:var(--amb)}
.s-git{background:#181818;color:#d8d8d8;font-weight:400}
.pl-ico{width:.95em;height:.95em;fill:none;stroke:var(--ok);stroke-width:1.5;stroke-linecap:round}
.pl-dirty{color:var(--amb)}
.pl-fill{flex:1;min-width:1.5em;margin:0 .7em 0 1em;border-bottom:1px dotted #2e2e2e;align-self:center;height:0}
.rp{flex-shrink:0;font-size:.88em;color:var(--dim)}
.rp-t{color:#8a8a8a}
.brand-git{color:var(--ok);opacity:.8}
@media (max-width:520px){.rp-t{display:none}.seg{padding:0 .85em 0 1em}.s-user{padding-left:.5em}.pl-fill{margin:0 .4em}}
@media (max-width:380px){.s-git{display:none}}
.brand-sub{overflow:hidden;text-overflow:ellipsis;max-width:100%}
@media (max-width:700px){.brand-git{display:none}}
/* ===== desktop wallpaper: centered logo behind the translucent terminal ===== */
html{background:#000}
body{position:relative;background:radial-gradient(ellipse at center,var(--tint) 0%,#050303 70%,#000 100%) fixed;background-color:#000}
body::before{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;background:url("logo-transparent.png") center center/min(1150px,92vw,165vh) auto no-repeat fixed;opacity:.5;filter:var(--wall-hue) saturate(.9) brightness(.9)}
body::after{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;background:radial-gradient(ellipse at center,transparent 35%,rgba(0,0,0,.55) 100%)}
.skip{z-index:40}
.screen{text-shadow:0 0 2px rgba(var(--acc-rgb),.25),0 1px 2px rgba(0,0,0,.95)}
.bar{background:linear-gradient(180deg,rgba(26,18,18,.94) 0%,rgba(20,20,20,.92) 100%)}
.taskbar{background:linear-gradient(180deg,rgba(23,16,16,.9) 0%,rgba(12,9,9,.94) 100%);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.vim{background:rgba(10,10,10,.94)}
.copyblk{background:rgba(14,14,14,.85)}
.motd{background:repeating-linear-gradient(135deg,rgba(20,6,6,.82) 0 12px,rgba(16,5,5,.82) 12px 24px)}
@media (max-width:640px){body::before{background-size:min(140vw,900px) auto;opacity:.45}}
@media (prefers-reduced-transparency:reduce){.crt{background:#0a0a0a;backdrop-filter:none}.taskbar{background:#0c0909;backdrop-filter:none}}
/* ===== Conky-style fictional system monitor (right panel, ≥1100px) ===== */
.conky{position:fixed;z-index:15;top:12px;right:12px;bottom:68px;width:280px;overflow-y:auto;overflow-x:hidden;padding:10px 12px 12px;font-size:11px;line-height:1.35;color:#c8c8c8;background:rgba(8,6,6,.72);border:1px solid var(--edge);border-radius:8px;box-shadow:0 0 24px rgba(var(--acc-rgb),.12),inset 0 0 40px rgba(0,0,0,.35);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);scrollbar-width:thin}
.conky[hidden]{display:none}
.crt{margin-right:10px}
@media (min-width:1100px){body:not(.conky-off) .crt{margin-right:304px}}
.ck-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:2px}
.ck-host{color:var(--red);font-weight:700;font-size:13px;letter-spacing:.06em;text-shadow:0 0 8px rgba(var(--acc-rgb),.45)}
.ck-x{font:inherit;font-size:16px;line-height:1;color:var(--dim);background:transparent;border:0;cursor:pointer;padding:0 4px}
.ck-x:hover{color:var(--red)}
.ck-sub{color:var(--amb);font-size:10px;margin-bottom:8px}
.ck-sec{margin:8px 0;padding-top:6px;border-top:1px dashed var(--edge2)}
.ck-h{color:var(--red);font-weight:700;font-size:10.5px;letter-spacing:.08em;margin-bottom:4px}
.ck-row{display:flex;justify-content:space-between;gap:8px;color:#b8b8b8}
.ck-row span:last-child{color:#e8e8e8;text-align:right}
.ck-bar{height:6px;margin:3px 0 5px;background:var(--tint);border:1px solid var(--edge);border-radius:2px;overflow:hidden}
.ck-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--edge3),var(--red) 70%,var(--light));box-shadow:0 0 6px rgba(var(--acc-rgb),.4);transition:width .8s ease}
.ck-spark{display:block;width:100%;height:36px;margin:2px 0 4px;background:rgba(0,0,0,.35);border:1px solid var(--edge2);border-radius:2px}
.ck-gpus{display:grid;grid-template-columns:1fr 1fr;gap:2px 8px;margin-top:4px}
.ck-g{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:4px;font-size:10px;color:var(--dim)}
.ck-g .ck-bar{margin:0}
.ck-gv{color:#e8e8e8;min-width:2.4em;text-align:right}
.ck-foot{margin-top:10px;padding-top:6px;border-top:1px solid var(--edge2);font-size:10px;color:var(--dim);line-height:1.4}
.ck-tag{color:#0a0a0a;background:var(--red);padding:0 4px;border-radius:2px;font-weight:700;letter-spacing:.06em}
.ck-show{display:none;flex-shrink:0;height:38px;margin-left:4px;padding:0 10px;font:inherit;font-size:11px;font-weight:700;letter-spacing:.08em;color:var(--red);background:var(--tint);border:1px solid var(--edge);border-radius:6px;cursor:pointer}
.ck-show:hover{background:var(--hover);border-color:var(--red2)}
body.conky-off .ck-show{display:inline-flex;align-items:center}
@media (max-width:1099.98px){.conky{display:none!important}.ck-show{display:none!important}body .crt{margin-right:10px}}
@media (prefers-reduced-motion:reduce){.ck-bar i{transition:none}}
@media (prefers-reduced-transparency:reduce){.conky{background:#0a0707;backdrop-filter:none}}
/* ===== do-it-all pack ===== */
.tbl{white-space:pre!important;overflow-x:auto;word-break:normal!important}
.rp-grid{display:grid;grid-template-columns:9ch 1fr 1fr;gap:2px 14px;padding:3px 6px;border-left:2px solid var(--edge2);white-space:normal!important}
.rp-head{color:var(--red);font-weight:700;font-size:.9em;letter-spacing:.06em;border-left-color:var(--red);background:rgba(var(--deep-rgb),.35);margin-top:6px}
.rp-q{color:var(--dim);font-style:italic}.rp-w{color:var(--amb)}.rp-d{color:var(--ok)}
.rp-sum{margin-top:8px;padding:8px 10px;border:1px solid var(--red2);background:rgba(20,6,6,.8);white-space:pre-wrap}
@media (max-width:640px){.rp-grid{grid-template-columns:1fr;gap:0}.rp-head span:nth-child(n+2){display:none}.rp-grid>span:first-child{font-size:.9em}}
.df-del{color:var(--light);background:rgba(var(--deep-rgb),.28)}
.df-add{color:#7dffb0;background:rgba(20,40,28,.55)}
.df-hunk{color:#7fb8ff}
.man{color:#d8d8d8}
/* window controls */
.dots{display:inline-flex;gap:7px;align-items:center}
button.dot{position:relative;padding:0;border:0;cursor:pointer;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;font:700 9px/1 var(--font);color:transparent}
button.dot::before{content:"";position:absolute;inset:-6px}
button.dot.r::after{content:"×"}button.dot.y::after{content:"−"}button.dot.g::after{content:"+"}
.dots:hover button.dot,button.dot:focus-visible{color:rgba(0,0,0,.65)}
button.dot:focus-visible{outline:2px solid #fff;outline-offset:2px}
@media (min-width:900px) and (pointer:fine){.bar{cursor:grab;user-select:none}.win-drag .bar{cursor:grabbing}}
.crt{transition:opacity .18s ease,transform .18s ease}
.crt.win-drag{transition:none}
.crt.win-hidden{visibility:hidden;opacity:0;pointer-events:none}
.crt.win-max{position:fixed;inset:0 0 56px 0;margin:0!important;border-radius:0;z-index:16}
@media (max-width:640px){.crt.win-max{bottom:52px}}
.taskwin{flex-shrink:0;display:flex;align-items:center;gap:6px;height:38px;padding:0 10px;font:inherit;font-size:11px;color:#bbb;background:transparent;border:1px solid var(--edge2);border-radius:6px;cursor:pointer;position:relative}
.taskwin svg{width:18px;height:18px;fill:none;stroke:var(--red);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.taskwin svg .a{stroke:#e6e6e6}
.taskwin.on{background:var(--tint2);border-color:var(--edge3);color:#fff}
.taskwin.on::after{content:"";position:absolute;left:25%;right:25%;bottom:1px;height:2px;background:var(--red);border-radius:2px}
.taskwin:hover{background:var(--hover)}
.taskwin:focus-visible{outline:2px solid var(--red);outline-offset:2px}
@media (max-width:640px){.taskwin span{display:none}.taskwin{padding:0 6px}}
@media (prefers-reduced-motion:reduce){.crt{transition:none}}
.taskbar{margin-top:auto}
.tbl{line-height:1.32}

/* =====================================================================
   polish round: plain mode · desktop icons · app windows · GRUB · toasts · lock · tour · cowsay
   ===================================================================== */
.skip2{left:-999px}
/* --- crawlable semantic site: visually hidden in terminal mode --- */
.site{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
.site-js{display:none}
/* --- plain mode (and no-JS): a normal, readable, high-contrast page --- */
html.plain,html.nojs{background:#0b0b0b}
html.plain body,html.nojs body{display:block;height:auto;min-height:100%;background:#0b0b0b;color:#f2f2f2;overflow:auto}
html.plain body::before,html.plain body::after,html.nojs body::before,html.nojs body::after{display:none}
html.plain .crt,html.plain .taskbar,html.plain .conky,html.plain .desk-icons,html.plain .appwin,html.plain .toasts,html.plain .startmenu,html.plain .skip,html.plain .grub,html.plain .lock,html.plain .tour-cap,
html.nojs .crt,html.nojs .taskbar,html.nojs .conky,html.nojs .desk-icons,html.nojs .skip{display:none!important}
html.plain .site,html.nojs .site{position:static;width:auto;height:auto;margin:0 auto;padding:32px 22px 64px;overflow:visible;clip:auto;clip-path:none;white-space:normal;max-width:72ch;
  font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;font-size:18px;line-height:1.65;color:#f2f2f2}
html.plain .site-js{display:block}
.site h1{font-size:2rem;line-height:1.2;margin:0 0 .3em;color:#fff}
.site h2{font-size:1.4rem;margin:2em 0 .5em;padding-bottom:.25em;border-bottom:2px solid var(--red);color:#fff}
.site h3{font-size:1.1rem;margin:1.4em 0 .4em;color:#fff}
.site-slogan{font-size:1.15rem;color:var(--light)}
.site a{color:var(--light);text-decoration:underline;text-underline-offset:3px}
.site a:focus-visible,.site button:focus-visible,.site h1:focus-visible{outline:3px solid #fff;outline-offset:3px}
.site dt{font-weight:700;margin-top:.8em;color:#fff}.site dd{margin:0 0 0 1.2em}
.site li{margin:.25em 0}
.site-nav{display:flex;flex-wrap:wrap;gap:.4em 1.2em;list-style:none;padding:0;margin:1em 0 0}
.site-btn{font:inherit;font-size:1rem;font-weight:600;padding:.55em 1em;color:#000;background:var(--light);border:2px solid #fff;border-radius:6px;cursor:pointer}
.site-note{padding:.6em .9em;border-left:4px solid var(--red);background:#1a1a1a}
.site-foot{margin-top:3em;font-size:.9rem;color:#bdbdbd}
html.plain *,html.plain *::before,html.plain *::after{animation:none!important;transition:none!important}
/* tray toggle */
.tray-btn{height:34px;min-width:34px;padding:0 6px;font:inherit;font-size:12px;font-weight:700;color:var(--light);background:transparent;border:1px solid var(--edge2);border-radius:6px;cursor:pointer}
.tray-btn:hover{background:var(--hover);border-color:var(--edge3)}
.tray-btn:focus-visible{outline:2px solid var(--red);outline-offset:2px}

/* --- desktop icons (wide screens only, in a reserved left gutter) --- */
.desk-icons{display:none}
@media (min-width:1100px){
  .desk-icons{position:fixed;z-index:2;top:14px;left:8px;width:88px;display:flex;flex-direction:column;gap:6px}
  .crt{margin-left:106px}
}
html.plain .crt{margin-left:0}
.desk-icon{display:flex;flex-direction:column;align-items:center;gap:4px;width:88px;padding:8px 4px 6px;font:inherit;font-size:11px;color:#eee;background:transparent;border:1px dashed transparent;border-radius:6px;cursor:default;text-shadow:0 1px 3px #000,0 0 6px #000}
.desk-icon svg{width:40px;height:40px;fill:rgba(10,8,8,.6);stroke:var(--red);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 5px rgba(var(--acc-rgb),.45))}
.desk-icon svg .a{stroke:#e6e6e6;fill:none}
.desk-icon svg .b{fill:var(--red2);stroke:var(--red)}
.desk-icon svg text{font:700 8px var(--font);fill:#fff;stroke:none}
.desk-icon:hover{background:rgba(var(--acc-rgb),.08)}
.desk-icon.sel,.desk-icon:focus-visible{background:rgba(var(--acc-rgb),.2);border-color:var(--red);outline:none}
.desk-icon.sel span{background:var(--red2);color:#fff;border-radius:2px;padding:0 3px}

/* --- app windows --- */
.tasks{display:flex;gap:4px;flex-shrink:1;min-width:0;overflow:hidden}
.tasks:empty{display:none}
.task{display:flex;align-items:center;gap:6px;max-width:150px;height:38px;padding:0 10px;font:inherit;font-size:11px;color:#bbb;background:transparent;border:1px solid var(--edge2);border-radius:6px;cursor:pointer;position:relative;white-space:nowrap}
.task span{overflow:hidden;text-overflow:ellipsis}
.task::before{content:"";flex-shrink:0;width:8px;height:8px;border-radius:2px;background:var(--red)}
.task.on{background:var(--tint2);border-color:var(--edge3);color:#fff}
.task.on::after{content:"";position:absolute;left:25%;right:25%;bottom:1px;height:2px;background:var(--red);border-radius:2px}
.task:hover{background:var(--hover)}
.task:focus-visible{outline:2px solid var(--red);outline-offset:2px}
.appwin{position:fixed;z-index:30;display:flex;flex-direction:column;min-width:320px;min-height:200px;max-width:calc(100vw - 16px);max-height:calc(100dvh - 72px);
  background:rgba(12,9,9,.94);border:1px solid var(--edge);border-radius:8px;box-shadow:0 18px 50px rgba(0,0,0,.7),0 0 26px rgba(var(--acc-rgb),.14);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);overflow:hidden;animation:winin .14s ease-out;resize:both}
.appwin[hidden]{display:none}
.appwin.focused{border-color:var(--red2)}
.appwin.aw-max{inset:0 0 56px 0!important;width:auto!important;height:auto!important;max-width:none;max-height:none;border-radius:0;resize:none}
@keyframes winin{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}
.aw-bar{display:flex;align-items:center;gap:10px;height:34px;padding:0 10px;flex-shrink:0;background:linear-gradient(180deg,#1a1212,#0e0a0a);border-bottom:1px solid var(--edge2);cursor:grab;user-select:none;touch-action:none}
.appwin.dragging .aw-bar{cursor:grabbing}
.aw-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:#ddd}
.aw-title b{color:var(--red)}
.aw-body{flex:1;overflow:auto;padding:12px 16px 18px;font-size:13px;line-height:1.5;cursor:auto}
.aw-body>div{white-space:pre-wrap;word-break:break-word}
.aw-body:focus{outline:none}
@media (max-width:899px){
  .appwin{inset:0 0 56px 0!important;width:auto!important;height:auto!important;max-width:none;max-height:none;min-width:0;border-radius:0;resize:none}
  .aw-bar{cursor:default}
}
@media (max-width:640px){.appwin,.appwin.aw-max{bottom:52px!important}.task{max-width:90px;padding:0 6px}}
.rb-row{display:grid;grid-template-columns:1.6em 1fr 9em;gap:4px 10px;padding:6px 0;border-bottom:1px dashed var(--edge2);white-space:normal}
.rb-row .dim{font-size:.92em}
.rb-empty{margin-top:10px;font:inherit;font-size:12px;color:var(--light);background:var(--tint2);border:1px solid var(--edge3);border-radius:4px;padding:4px 10px;cursor:pointer}
@media (max-width:640px){.rb-row{grid-template-columns:1.6em 1fr}.rb-row>span:last-child{grid-column:2}}
.bslug{font:inherit;color:var(--ok);background:none;border:0;padding:0;cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px}
.bslug:hover{text-decoration-style:solid}

/* --- GRUB boot menu --- */
.grub{position:fixed;inset:0;z-index:9600;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;background:#000;color:#cfcfcf;font-family:var(--font);font-size:15px}
.grub-h{margin-bottom:18px;color:#cfcfcf;letter-spacing:.02em}
.grub-box{width:min(760px,100%);min-height:220px;padding:8px 2px;border:2px solid #9a9a9a;outline:1px solid #000}
.grub-box ul{list-style:none;margin:0;padding:0}
.grub-it{display:block;width:100%;text-align:left;font:inherit;color:#cfcfcf;background:transparent;border:0;padding:3px 12px;cursor:pointer}
.grub-it[aria-selected="true"]{background:var(--red);color:#000;font-weight:700}
.grub-it:focus-visible{outline:1px dashed #fff;outline-offset:-3px}
.grub-help{width:min(760px,100%);margin-top:16px;padding:0 6px;font-size:13px;line-height:1.6;color:#9a9a9a;white-space:pre-wrap}
.grub-help b{color:#cfcfcf;font-weight:400}
.grub-cd{color:var(--light)}
@media (max-width:640px){.grub{font-size:12.5px}.grub-help{font-size:11.5px}}

/* --- toasts (bottom-right, above taskbar, left of conky) --- */
.toasts{position:fixed;z-index:9200;right:12px;bottom:68px;display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:none;max-width:min(340px,calc(100vw - 24px))}
@media (min-width:1100px){body:not(.conky-off) .toasts{right:304px}}
@media (max-width:640px){.toasts{bottom:62px}}
.toast{pointer-events:auto;display:grid;grid-template-columns:auto 1fr auto;gap:2px 10px;align-items:start;width:100%;padding:10px 10px 10px 12px;font-size:12px;line-height:1.4;color:#e8e8e8;background:rgba(14,10,10,.96);border:1px solid var(--edge3);border-left:3px solid var(--red);border-radius:6px;box-shadow:0 8px 30px rgba(0,0,0,.6),0 0 14px rgba(var(--acc-rgb),.18);animation:toastin .22s ease-out}
.toast.out{opacity:0;transform:translateX(12px);transition:opacity .2s,transform .2s}
.toast-i{grid-row:span 2;font-size:16px;line-height:1.2}
.toast-t{font-weight:700;color:var(--red);font-size:11px;letter-spacing:.06em}
.toast-m{grid-column:2}
.toast-x{grid-row:1;grid-column:3;font:inherit;font-size:14px;line-height:1;color:#aaa;background:transparent;border:0;padding:2px 4px;cursor:pointer;border-radius:3px}
.toast-x:hover{color:#fff;background:var(--hover)}
@keyframes toastin{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* --- lock screen --- */
.lock{position:fixed;inset:0;z-index:9500;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;background:#050303;color:#f2f2f2;cursor:pointer;overflow:hidden;animation:lockin .35s ease-out;user-select:none}
.lock::before{content:"";position:absolute;inset:-40px;background:url("logo-transparent.png") center center/min(1150px,92vw,165vh) auto no-repeat;filter:var(--wall-hue) blur(12px) brightness(.85) saturate(1.2);opacity:.75;transform:scale(1.06)}
.lock::after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at center,rgba(0,0,0,.15),rgba(0,0,0,.75))}
.lock>*{position:relative;z-index:1}
.lock-time{font-size:clamp(64px,14vw,148px);font-weight:700;line-height:1;letter-spacing:-.02em;text-shadow:0 0 30px rgba(var(--acc-rgb),.45)}
.lock-date{font-size:clamp(16px,2.4vw,24px);color:#ddd;margin-bottom:28px}
.lock-user{display:flex;align-items:center;gap:10px;padding:10px 18px;font-size:14px;background:rgba(10,8,8,.55);border:1px solid var(--edge3);border-radius:999px}
.lock-user b{color:var(--red)}
.lock-hint{margin-top:10px;font-size:12px;color:#aaa}
.lock.out{opacity:0;transition:opacity .25s}
@keyframes lockin{from{opacity:0}to{opacity:1}}

/* --- tour captions --- */
.tour-cap{position:absolute;z-index:5;left:50%;top:48px;transform:translateX(-50%);max-width:calc(100% - 32px);padding:8px 14px;font-size:13px;color:#fff;background:rgba(10,6,6,.92);border:1px solid var(--red2);border-radius:6px;box-shadow:0 0 18px rgba(var(--acc-rgb),.3);pointer-events:none;text-align:center}
.tour-cap b{color:var(--red)}
.tour-cap .dim{display:block;font-size:11px;margin-top:2px}

/* --- start menu: system row --- */
.sm-sys{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 14px;border-top:1px solid var(--edge2)}
.sm-sys .sm-gh{margin:0 6px 0 0}
.sm-item.sm-mini{width:auto;display:inline-flex;align-items:center;gap:6px;padding:5px 9px;font-size:11.5px}
.sw{display:inline-block;width:11px;height:11px;border-radius:50%;border:1px solid rgba(255,255,255,.4)}
.sw-red{background:#ff2a2a}.sw-purple{background:#b45cff}.sw-amber{background:#ffb000}.sw-green{background:#33ff77}
.cow{white-space:pre!important;overflow-x:auto}

@media (prefers-reduced-motion:reduce){.appwin,.toast,.lock{animation:none}.toast.out,.lock.out{transition:none}}

/* cat: rendered markdown */
.md-view{white-space:pre-wrap;line-height:1.5;border-left:2px solid var(--red);padding-left:12px;margin:4px 0}

/* ===== Hollywood easter eggs (hidden) — colours follow the theme vars ===== */
.egg-film{display:inline-block;padding:0 6px;font-size:11px;letter-spacing:.12em;color:#000;background:var(--light);border-radius:2px}
.egg-tie{color:var(--dim)}
.egg-o{color:var(--ok)}
.egg-neon{margin:8px 0;font-size:clamp(22px,4.4vw,46px);font-weight:700;letter-spacing:.14em;line-height:1.1;color:#fff;white-space:normal!important;
  text-shadow:0 0 4px #fff,0 0 12px var(--red),0 0 26px var(--red),0 0 46px rgba(var(--acc-rgb),.7);animation:eggflick 2.4s infinite}
@keyframes eggflick{0%,18%,22%,62%,64%,100%{opacity:1}20%,63%{opacity:.55}}
.egg-gibson{white-space:pre!important;overflow-x:auto;line-height:1.05;color:var(--red);text-shadow:0 0 6px rgba(var(--acc-rgb),.6)}
.egg-wopr{white-space:pre!important;overflow-x:auto;color:var(--light);text-shadow:0 0 5px rgba(var(--acc-rgb),.45)}
.egg-ttt{font-size:1.15em;line-height:1.35;margin:4px 0}
.egg-defcon b{display:inline-block;min-width:1.6em;margin-left:3px;text-align:center;font-weight:700;color:var(--dim);border:1px solid var(--edge3);border-radius:2px}
.egg-defcon b.on{color:#000;background:var(--red);border-color:var(--red);box-shadow:0 0 10px rgba(var(--acc-rgb),.6)}
.egg-tiles{display:flex;flex-wrap:wrap;gap:4px;margin:8px 0;white-space:normal!important}
.egg-tiles span{display:inline-flex;align-items:center;justify-content:center;width:1.7em;height:2em;font-size:1.25em;font-weight:700;color:var(--light);background:var(--tint2);border:1px solid var(--edge3);border-radius:3px}
.egg-tiles span.lk{color:#000;background:var(--red);border-color:var(--red);box-shadow:0 0 8px rgba(var(--acc-rgb),.5)}
.egg-tiles span.sp{width:.8em;background:none;border:0}
.egg-type{color:var(--ok);font-size:1.1em;min-height:1.5em}
.egg-type.typing::after{content:"▌";animation:blink 1s steps(1) infinite;color:var(--ok)}
.egg-mask{white-space:pre!important;line-height:1.15;color:var(--light);overflow-x:auto}
.egg-glitch{font-size:1.4em;font-weight:700;color:#fff;text-shadow:2px 0 var(--red),-2px 0 var(--ok);min-height:1.4em}
.egg-hud{color:var(--fg)}
.egg-cube{white-space:pre!important;line-height:1;color:var(--red);text-shadow:0 0 8px rgba(var(--acc-rgb),.7);overflow-x:auto}
.egg-grid{white-space:pre!important;line-height:1.05;overflow-x:auto}
.egg-big{display:inline-block;margin:6px 0;font-size:1.3em;font-weight:700;color:var(--amb)}
.egg-tree{white-space:pre!important;overflow-x:auto}
.egg-nope{color:var(--red);font-weight:700}
.egg-pi{position:absolute;z-index:6;right:16px;bottom:12px;width:30px;height:30px;font:700 18px/1 Georgia,serif;color:var(--light);background:rgba(10,8,8,.8);border:1px solid var(--edge3);border-radius:50%;cursor:pointer;box-shadow:0 0 12px rgba(var(--acc-rgb),.4);animation:eggpi 2s ease-in-out infinite}
.egg-pi:hover{color:#fff;border-color:var(--red)}
@keyframes eggpi{50%{box-shadow:0 0 20px rgba(var(--acc-rgb),.75)}}
@media (prefers-reduced-motion:reduce){.egg-neon,.egg-pi,.egg-type.typing::after{animation:none}}

/* ===== systemd-style boot log (between GRUB and the desktop) — colours follow theme vars ===== */
.bootlog{position:fixed;inset:0;z-index:9580;overflow-y:auto;overflow-x:hidden;padding:14px 18px 44px;background:#000;color:#c9c9c9;font:13px/1.45 var(--font);cursor:default}
.bootlog.out{opacity:0;transition:opacity .3s}
.bl-line,.bootlog-static{white-space:pre-wrap;word-break:break-word}
.bl-ts,.bl-dim{color:#7a7a7a}
.bl-ok{color:var(--ok)}
.bl-warn{color:var(--amb)}
.bl-fail{color:var(--red);font-weight:700}
.bl-spin{color:var(--red)}
.bl-u{color:#fff;font-weight:700}
.bl-hint{position:fixed;right:16px;bottom:12px;font-size:11px;color:#6a6a6a}
.bootlog-static{font-size:12.5px;line-height:1.45}
@media (max-width:600px){.bootlog{font-size:10.5px;padding:8px 8px 36px}.bootlog-static{font-size:10.5px}.bl-hint{right:8px;bottom:8px}}
@media (prefers-reduced-motion:reduce){.bootlog.out{transition:none}}

/* ===== ssh · htop · gaphunt · achievements · sound (theme-aware via CSS vars) ===== */
.pl-ssh{color:var(--pale);font-weight:400;margin-left:.1em}
.ssh-motd{margin:.3em 0;white-space:pre-wrap}
.tray-btn.snd{display:inline-flex;align-items:center;justify-content:center}
.tray-btn.snd svg{width:16px;height:16px;display:block}
.tray-btn.snd.on{color:var(--ok);border-color:var(--edge3)}
/* htop — "fullscreen" inside the terminal: hide the scrollback while it runs */
.screen.htop-on #out > :not(.htop-live){display:none}
.htop{display:flex;flex-direction:column;white-space:pre;font-size:13px;line-height:1.35;background:rgba(0,0,0,.55);border:1px solid var(--edge2);border-radius:4px;padding:6px 8px;overflow:hidden;min-height:300px}
.htop-win{height:100%;min-height:0;border:0;background:transparent;padding:0}
.ht-top{overflow-x:auto;flex-shrink:0;padding-bottom:4px}
.ht-lbl{color:var(--light)}
.ht-lo{color:var(--ok)}.ht-hi{color:var(--red)}.ht-v{color:var(--dim)}
.ht-head{background:var(--ok);color:#000;font-weight:700;flex-shrink:0;overflow:hidden}
.ht-sorted{background:var(--red);color:#000}
.ht-body{flex:1;overflow:auto;min-height:0}
.ht-row{cursor:pointer}
.ht-row:hover{background:var(--hover)}
.ht-row.ht-sel{background:var(--red);color:#000}
.ht-row.ht-sel .dim,.ht-row.ht-sel .ok,.ht-row.ht-sel .red,.ht-row.ht-sel .amb,.ht-row.ht-sel .ht-args{color:#000}
.ht-row.ht-z{opacity:.8}
.ht-cmd{color:var(--fg);font-weight:700}.ht-args{color:var(--dim)}
.ht-help{padding:6px 0;white-space:pre-wrap}
.ht-msg{flex-shrink:0;min-height:1.35em;overflow:hidden;text-overflow:ellipsis;color:var(--amb)}
.ht-foot{display:flex;flex-wrap:wrap;flex-shrink:0;gap:0}
.ht-fk{font:inherit;font-size:inherit;border:0;padding:0;margin:0 2px 0 0;background:transparent;cursor:pointer;display:inline-flex}
.ht-fn{color:var(--fg);background:#000;padding:0 2px}
.ht-fl{color:#000;background:var(--red2);padding:0 6px 0 2px;min-width:5ch}
.ht-fk:hover .ht-fl,.ht-fk:focus-visible .ht-fl{background:var(--red)}
.ht-fk:focus-visible{outline:1px solid var(--pale)}
/* gaphunt */
.gh{border:1px solid var(--edge2);border-left:3px solid var(--red);background:rgba(0,0,0,.45);padding:6px 10px;margin:4px 0;border-radius:3px}
.gh-title{margin-bottom:6px;white-space:normal}
.gh-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:10px}
.gh-pane{white-space:pre;overflow-x:auto;background:var(--tint);border:1px solid var(--edge2);padding:4px 6px;border-radius:3px}
.gh-h{color:var(--light);font-weight:700;margin-bottom:2px;white-space:normal}
.gh-p{color:var(--red);font-weight:700}
.gh-end{white-space:pre-wrap}
/* achievements */
.ach-on{filter:drop-shadow(0 0 4px rgba(var(--acc-rgb),.6))}
.ach-off{opacity:.55;filter:grayscale(1)}
@media (max-width:1100px){.gh-grid{grid-template-columns:1fr}}
@media (max-width:600px){.htop{font-size:10px;padding:4px}.ht-fl{min-width:0;padding:0 3px 0 1px}.gh{padding:5px 6px}.gh-pane{font-size:11px}}
@media (prefers-reduced-motion:reduce){.ach-on{filter:none}}
.gh-pane{white-space:normal}
.gh-row{display:grid;column-gap:.9em;align-items:baseline;padding:1px 0}
.gh-tl{grid-template-columns:1.2em 3.2em 11.5em minmax(0,1fr)}
.gh-lg{grid-template-columns:3.2em 2.6em 3.2em minmax(0,1fr)}
@media (max-width:600px){.gh-tl{grid-template-columns:1em 3em minmax(0,1fr)}.gh-tl > :last-child{grid-column:2 / -1;color:var(--dim)}.gh-lg{grid-template-columns:3em 2.6em 3em minmax(0,1fr)}}
/* specificity over `#out div{white-space:pre-wrap}` */
#out .ssh-motd{white-space:pre-wrap!important}
#out .htop,#out .htop div{white-space:pre;word-break:normal}
#out .htop .ht-msg,#out .htop .ht-foot,#out .htop .ht-help{white-space:normal}
#out .htop .ht-help{white-space:pre-wrap}
.htop{overflow-x:auto}
.ht-head,.ht-body{min-width:max-content}
.ht-msg,.ht-foot{position:sticky;left:0}
#out .gh-pane,#out .gh-pane div,#out .ach-row{white-space:normal}
.ach-list{display:grid;gap:1px}
.ach-row{display:grid;grid-template-columns:1.6em 17em minmax(0,1fr);column-gap:.6em;align-items:baseline}
@media (max-width:600px){.ach-row{grid-template-columns:1.6em minmax(0,1fr)}.ach-row > :nth-child(3){grid-column:2;font-size:.92em;margin-bottom:3px}
  .toasts > :not(:last-child){display:none}}
#out .gh-rev,#out .gh-rev div{white-space:normal}
.gh-rev{margin:2px 0 2px 1ch;display:grid}
.gh-rv{grid-template-columns:1.2em 13em 7.5em minmax(0,1fr)}
@media (max-width:600px){.gh-rv{grid-template-columns:1.2em minmax(0,1fr) auto}.gh-rv > :last-child{grid-column:2 / -1;font-size:.92em}}

/* ===== security self-assessment additions (2026-10) ===== */
/* neofetch colour swatches (were inline style attributes; CSP style-src has no 'unsafe-inline') */
.nf-sw{display:inline-block}.nf-sw0{background:#b30000}.nf-sw1{background:#ff2a2a}.nf-sw2{background:#7a7a7a}.nf-sw3{background:#d8d8d8}.nf-sw4{background:#141414}
/* weather is opt-in: the tray button offers it instead of fetching on load */
.wx-offer .wx-temp{opacity:.75;font-style:italic}
/* clickjacking fallback (early.js) when the host can't send frame-ancestors / X-Frame-Options */
html.framed body > :not(#framebust){display:none !important}
html.framed body::before{display:none}
#framebust{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:24px;background:#000;font:16px/1.5 var(--font);text-align:center}
#framebust a{color:#ff2a2a}
/* print-to-PDF without a popup: only #printdoc is printed (built with textContent) */
#printdoc{display:none}
@media print{
  html,body{background:#fff !important;height:auto !important;overflow:visible !important}
  body::before,body::after{display:none !important}
  body > :not(#printdoc){display:none !important}
  #printdoc{display:block !important;color:#111;font:12px/1.45 ui-monospace,Menlo,Consolas,monospace;margin:32px}
  #printdoc h1{font-size:12px;color:#a00;letter-spacing:.08em;margin:0 0 12px}
  #printdoc pre{white-space:pre-wrap;word-break:break-word;font:inherit;margin:0}
}

/* ===== round 3: drafts · case studies · business card · puzzle · CRT power-off ===== */
.cslug{font:inherit;color:var(--ok);background:none;border:0;padding:0;cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px}
.cslug:hover{text-decoration-style:solid}
.post-tag.draft{color:var(--dim);border:1px solid #3a3a3a;border-radius:3px;padding:0 .35em;font-size:.78em;letter-spacing:.08em;text-transform:uppercase;vertical-align:1px}
.fm{display:block;color:var(--dim);border-left:2px solid var(--edge,#3a0000);padding:.15em 0 .15em .7em;margin:0 0 .8em}
.ccard{white-space:pre;line-height:1.3;overflow-x:auto;margin:.3em 0 .5em}
.cc-b,.cc-r{color:var(--red)}.cc-t{color:#fff;font-weight:700}.cc-s{color:var(--amb)}.cc-y{color:var(--ok);font-weight:700}.cc-k{color:var(--dim)}.cc-v{color:var(--ok)}
@media (max-width:600px){.ccard{font-size:10px}}
.pz-win{border:1px solid var(--ok);border-radius:6px;padding:.5em .8em;margin:.3em 0;background:rgba(57,255,136,.05)}
/* CRT power-off: the screen collapses to a bright line, then a dot, then black */
html.crt-off{background:#000}
html.crt-off body{animation:crtOff .6s cubic-bezier(.3,.6,.3,1) forwards;transform-origin:50% 50%;pointer-events:none;overflow:hidden}
@keyframes crtOff{0%{transform:scale(1,1);filter:brightness(1)}45%{transform:scale(1,.006);filter:brightness(3) saturate(0)}75%{transform:scale(.25,.006);filter:brightness(5) saturate(0)}100%{transform:scale(0,0);filter:brightness(0);opacity:0}}
.poweroff{position:fixed;inset:0;z-index:99999;display:flex;flex-direction:column;align-items:center;justify-content:center;background:transparent;animation:poBg .2s .5s forwards;cursor:pointer}
@keyframes poBg{to{background:#000}}
.poweroff::before{content:"";position:absolute;left:0;right:0;top:50%;height:2px;margin-top:-1px;background:#fff;box-shadow:0 0 10px 2px rgba(255,255,255,.75),0 0 26px 7px var(--red);opacity:0;animation:poLine .5s .22s ease-in forwards}
@keyframes poLine{0%{opacity:0;transform:scaleX(1)}20%{opacity:1;transform:scaleX(1)}100%{opacity:.9;transform:scaleX(0)}}
.po-dot{width:6px;height:6px;border-radius:50%;background:#fff;opacity:0;box-shadow:0 0 14px 5px rgba(255,255,255,.85),0 0 34px 12px var(--red);animation:poDot 1.3s .62s ease-out both}
@keyframes poDot{0%{opacity:1;transform:scale(1.8)}60%{opacity:.8;transform:scale(.6)}100%{opacity:0;transform:scale(.2)}}
.po-msg{position:absolute;left:0;right:0;top:calc(50% + 26px);text-align:center;font:13px/1.4 var(--font);color:#6a6a6a;letter-spacing:.12em;opacity:0;transition:opacity .6s}
.poweroff.ready .po-msg{opacity:1;animation:poBlink 2.4s 1s steps(1) infinite}
@keyframes poBlink{50%{opacity:.35}}
html.crt-instant body{animation:none;visibility:hidden}
html.crt-instant .poweroff{animation:none;background:#000}
html.crt-instant .po-dot,html.crt-instant .poweroff::before{display:none}
@media (prefers-reduced-motion:reduce){html.crt-off body{animation:none;visibility:hidden}.poweroff{animation:none;background:#000}.po-dot,.poweroff::before{display:none}.poweroff.ready .po-msg{animation:none}}
