:root{
  color-scheme:dark;
  --bg:#070707; --panel:#0E0E0E; --ink:#E6E6E6; --hi:#FFFFFF; --muted:#8A8A8A; --dim:#4E4E4E; --line:#1F1F1F; --bar:#E6E6E6;
  --mono:"JetBrains Mono", ui-monospace, Menlo, Consolas, monospace;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.6 var(--mono);-webkit-font-smoothing:antialiased}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
a{color:inherit}
:focus-visible{outline:1px dashed var(--hi);outline-offset:2px}

.term{position:relative;height:100%;display:flex;flex-direction:column;overflow:hidden}
/* CRT glass */
.term::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:5;
  background:repeating-linear-gradient(0deg,rgba(255,255,255,.025) 0 1px,transparent 1px 3px),radial-gradient(ellipse at center,transparent 60%,rgba(0,0,0,.5))}
.term.flick .screen{animation:flick .28s steps(2)}
@keyframes flick{0%{opacity:.2;filter:blur(1px)}40%{opacity:1}60%{opacity:.5}100%{opacity:1;filter:none}}

.titlebar{flex:none;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;height:32px;padding-inline:14px;border-bottom:1px solid var(--line);background:var(--panel);font-size:12px;color:var(--muted)}
.dots{display:flex;gap:7px}.dots i{width:11px;height:11px;border-radius:50%;border:1px solid var(--dim)}
.dots i:first-child{background:var(--dim)}
.tt{color:var(--ink)}.tt-r{text-align:right}

.screen{flex:1;overflow-y:auto;padding:22px clamp(16px,4vw,48px) 12px;scroll-behavior:smooth}
.screen::-webkit-scrollbar{width:8px}.screen::-webkit-scrollbar-thumb{background:#222}
.ln{white-space:pre-wrap;word-break:break-word;min-height:1.6em}
.ln.in{animation:lnIn .18s ease-out both}
@keyframes lnIn{from{opacity:0;transform:translateX(-6px)}to{opacity:1;transform:none}}
.ps{color:var(--muted)}
.c-dim{color:var(--dim)}.c-mut{color:var(--muted)}.c-hi{color:var(--hi);font-weight:700}
.glow{text-shadow:0 0 10px rgba(255,255,255,.35)}

.banner{margin:4px 0 14px;font-size:min(13px,calc((100vw - 64px) / 50));line-height:1.1;color:var(--hi);text-shadow:0 0 14px rgba(255,255,255,.3);white-space:pre;overflow:hidden}
.banner.big{font-size:min(15px,calc((100vw - 96px) / 50))}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* neofetch */
.neo{display:flex;gap:32px;flex-wrap:wrap;margin:6px 0 10px}
.neo-art{white-space:pre;color:var(--hi);line-height:1.25;font-weight:700}
.neo-art .eye{display:inline-block}
.neo-info{flex:1;min-width:260px}
.neo-info .k{color:var(--hi);font-weight:700}
.swatch{display:flex;gap:0;margin-top:10px}
.swatch i{width:26px;height:14px}

/* project table */
.tbl{border-collapse:collapse;margin:4px 0 8px;white-space:nowrap}
.tbl td{padding:1px 18px 1px 0;color:var(--dim)}
.tbl td.nm{color:var(--ink)}
.tbl tr.row{cursor:pointer}
.tbl tr.row:hover td.nm{color:var(--bg);background:var(--ink)}
.scroll-x{overflow-x:auto}
.boxed{white-space:pre;color:var(--ink);overflow-x:auto}
.link{color:var(--hi);text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.link:hover{background:var(--ink);color:var(--bg);text-decoration:none}
.tag-s{color:var(--dim);border:1px dashed var(--dim);padding:0 4px}

/* cat */
.cat-wrap{display:flex;align-items:flex-end;gap:14px;margin-top:10px}
.cat{white-space:pre;line-height:1.2;color:var(--hi);font-weight:700;cursor:pointer;user-select:none;padding:4px 6px;border-radius:4px}
.cat:hover{background:#141414}
.cat.jump{animation:jump .45s cubic-bezier(.3,1.6,.5,1)}
@keyframes jump{40%{transform:translateY(-12px)}}
.cat-say{color:var(--muted);padding-bottom:6px}

/* chips */
.chips{flex:none;display:flex;gap:8px;flex-wrap:wrap;padding:8px clamp(16px,4vw,48px) 0}
.chips button{font-size:12px;color:var(--muted);border:1px solid var(--line);padding:4px 10px;border-radius:3px}
.chips button::before{content:"$ ";color:var(--dim)}
.chips button:hover{color:var(--bg);background:var(--ink);border-color:var(--ink)}

/* prompt */
.prompt{flex:none;display:flex;align-items:center;gap:10px;padding:10px clamp(16px,4vw,48px) 14px}
.ps1{color:var(--hi);font-weight:700;white-space:nowrap}
.field{position:relative;flex:1;min-width:0}
.field input{width:100%;background:transparent;border:0;outline:0;font:inherit;color:transparent;caret-color:transparent;padding:0}
.ghost{position:absolute;left:0;top:0;pointer-events:none;white-space:pre;color:var(--ink)}
.caret{display:inline-block;width:.62em;height:1.2em;vertical-align:-.25em;background:var(--hi);box-shadow:0 0 8px rgba(255,255,255,.6);animation:blink 1s steps(1) infinite}
.field input:not(:focus) + .ghost .caret{background:transparent;outline:1px solid var(--muted);box-shadow:none}
@keyframes blink{50%{opacity:0}}

/* tmux bar */
.tmux{flex:none;display:flex;justify-content:space-between;align-items:center;gap:12px;height:26px;padding-inline:8px;background:var(--bar);color:#0A0A0A;font-size:12px;font-weight:500;position:relative;z-index:6}
.tm-l,.tm-r{display:flex;align-items:center;gap:12px;white-space:nowrap}
.sess{font-weight:800}
.tmux a{text-decoration:none;padding:0 4px}
.tmux a:hover{background:#0A0A0A;color:var(--bar)}
.tmux a[aria-current="page"]{font-weight:800}
.tmux a[aria-current="page"]::after{content:"*"}
.mnh{font-weight:800;letter-spacing:.02em}
.mnh.pop span{display:inline-block;animation:pop .5s cubic-bezier(.3,1.8,.5,1) both;animation-delay:calc(var(--i) * 35ms)}
@keyframes pop{0%{transform:translateY(8px) scale(.4);opacity:0}100%{transform:none;opacity:1}}
.sep{opacity:.4}

/* small screens: simple, no motion */
@media (max-width:600px){
  *,*::before,*::after{animation:none!important;transition:none!important}
  .term::after{display:none}
  .titlebar .tt-r,.titlebar .dots{visibility:hidden}
  .screen{padding:16px 16px 8px;font-size:13px}
  .neo{gap:12px}.neo-art{display:none}
  .chips button{font-size:13px;padding:8px 12px}
  .tm-r .sep,#clock{display:none}
  .tmux{height:auto;padding-block:6px;flex-wrap:wrap;font-size:11px;padding-bottom:calc(6px + env(safe-area-inset-bottom,0px))}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
