/* kennethclauwaert.com — terminal / gruvbox */
:root {
  --bg: #282828;
  --bg-soft: #32302f;
  --panel: #3c3836;
  --panel-2: #504945;
  --fg: #ebdbb2;
  --dim: #a89984;
  --faint: #7c6f64;
  --green: #b8bb26;
  --amber: #fabd2f;
  --orange: #fe8019;
  --blue: #83a598;
  --red: #fb4934;
  --aqua: #8ec07c;
  --border: #504945;
  --mono: 'JetBrains Mono', 'SFMono-Regular', Consolas, monospace;
}

* { box-sizing: border-box; margin: 0; padding: 0; }

html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
}

body {
  background: #1d2021;
  color: var(--fg);
  font-family: var(--mono);
  font-size: 0.95rem;
  line-height: 1.75;
  padding: 1.2rem;
  -webkit-font-smoothing: antialiased;
}

/* terminal window */
.term {
  max-width: 68rem;
  margin: 0 auto;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 6px;
  overflow: hidden;
}
.term-bar {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.55rem 1rem;
  background: var(--panel);
  border-bottom: 1px solid var(--border);
  color: var(--dim);
  font-size: 0.8rem;
}
.dots { display: inline-flex; gap: 0.4rem; }
.dots span {
  width: 0.7rem; height: 0.7rem; border-radius: 50%;
  background: var(--panel-2);
}
.dots span:nth-child(1) { background: #cc6666a0; }
.dots span:nth-child(2) { background: #d8a65780; }
.dots span:nth-child(3) { background: #8fa96580; }
.term-title { flex: 1; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.wrap { max-width: 60rem; margin: 0 auto; padding: 0 1.6rem; }

/* header / nav */
.site-header {
  padding: 1rem 0 0.9rem;
  border-bottom: 1px solid var(--border);
  background: var(--bg-soft);
}
.site-header .wrap { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: 0.5rem 1.4rem; }
.site-name { color: var(--fg); font-weight: 700; text-decoration: none; }
.site-name::before { content: '~/'; color: var(--blue); font-weight: 400; }
.site-nav { display: flex; flex-wrap: wrap; gap: 1.15rem; font-size: 0.85rem; }
.site-nav a { color: var(--dim); text-decoration: none; }
.site-nav a:hover, .site-nav a[aria-current] { color: var(--amber); }
.site-nav a::before { content: './'; color: var(--faint); }
.site-nav .lang { border-left: 1px solid var(--border); padding-left: 1.15rem; color: var(--blue); }
.site-nav .lang::before { content: ''; }

/* skip link */
.skip {
  position: absolute; left: -999px; top: 0;
  background: var(--amber); color: #282828; padding: 0.4rem 1rem; z-index: 10;
}
.skip:focus { left: 0.5rem; top: 0.5rem; }

/* prompt = section header */
.prompt {
  display: block;
  margin: 0 0 1.1rem;
  font-size: 0.95rem;
  font-weight: 400;
  line-height: 1.6;
  word-break: break-word;
}
.prompt b { color: var(--green); font-weight: 600; }
.prompt b::after { content: ':'; color: var(--dim); font-weight: 400; }
.prompt i { color: var(--blue); font-style: normal; }
.prompt i::after { content: '$ '; color: var(--dim); }
h2.prompt { font-size: 0.95rem; font-weight: 400; color: var(--fg); }
h2.prompt::before { content: none; }
.sec { padding: 2.6rem 0; border-top: 1px dashed var(--border); }
.sec:first-of-type { border-top: none; }

/* typography */
h1 {
  font-size: clamp(1.5rem, 4.5vw, 2.3rem);
  line-height: 1.25;
  font-weight: 700;
  color: var(--fg);
  max-width: 44rem;
  overflow-wrap: break-word;
  margin: 0 0 1rem;
}
h2 { font-size: 1.02rem; font-weight: 700; color: var(--amber); margin: 0 0 0.7rem; }
h2::before { content: '## '; color: var(--faint); font-weight: 400; }
h3, h4 { font-size: 0.95rem; color: var(--fg); margin: 1.1rem 0 0.35rem; }
p { max-width: 44rem; margin: 0 0 1rem; }
.lead { font-size: 1rem; color: var(--fg); }
.soft, .dim { color: var(--dim); }
a { color: var(--amber); text-decoration: none; }
a:hover { background: var(--panel-2); text-decoration: underline; }
::selection { background: var(--panel-2); color: var(--fg); }

.cursor {
  display: inline-block; width: 0.55em; height: 1.1em;
  background: var(--fg); vertical-align: text-bottom;
  animation: blink 1.1s steps(1) infinite;
}
@keyframes blink { 50% { opacity: 0; } }

/* meta key-value (dl) */
.meta { margin: 1.4rem 0 0; max-width: 44rem; }
.meta div { display: grid; grid-template-columns: 9.5rem 1fr; gap: 1rem; padding: 0.3rem 0; }
.meta dt { color: var(--blue); }
.meta dt::before { content: '- '; color: var(--faint); }
.meta dd { color: var(--dim); }

/* lists */
ul { list-style: none; }
.dashlist { max-width: 44rem; margin: 0 0 1rem; }
.dashlist li { padding-left: 1.3rem; position: relative; margin-bottom: 0.35rem; color: var(--dim); }
.dashlist li::before { content: '-'; position: absolute; left: 0.2rem; color: var(--orange); }

/* ls-style project rows */
.filelist { margin: 0 0 1rem; }
.filelist li {
  display: grid; grid-template-columns: 13rem 1fr; gap: 1rem;
  padding: 0.45rem 0; border-bottom: 1px dashed var(--panel-2);
}
.filelist li:last-child { border-bottom: none; }
.filelist .fname { color: var(--aqua); font-weight: 600; }
.filelist .fname a { color: inherit; }
.filelist .fdesc { color: var(--dim); }
.filelist .fdesc .stack { display: block; color: var(--faint); font-size: 0.82rem; }

/* git-log career rows */
.loglist li { padding: 0.25rem 0; color: var(--fg); }
.loglist .hash { color: var(--orange); margin-right: 0.7rem; }
.loglist .when { color: var(--faint); }

/* htop-style skill bars */
.bars { max-width: 44rem; }
.bars li { display: grid; grid-template-columns: 10.5rem 1fr auto; gap: 1rem; align-items: center; padding: 0.22rem 0; }
.bars .blabel { color: var(--fg); }
.bar { height: 0.75rem; background: var(--panel); border: 1px solid var(--panel-2); }
.bar-fill { height: 100%; background: var(--green); }
.bar-fill.mid { background: var(--amber); }
.bar-fill.low { background: var(--orange); }
.bars .bnote { color: var(--faint); font-size: 0.8rem; }

/* trees, flows, code */
pre { font-family: var(--mono); overflow-x: auto; }
.tree, .flow {
  color: var(--dim); background: var(--bg-soft);
  border: 1px solid var(--border); border-left: 3px solid var(--panel-2);
  padding: 0.9rem 1.1rem; margin: 0 0 1.2rem;
  font-size: 0.85rem; line-height: 1.7;
}
pre.code {
  background: #1d2021; border: 1px solid var(--border);
  padding: 1rem 1.2rem; margin: 0 0 1.4rem;
  font-size: 0.83rem; line-height: 1.7; color: var(--fg);
}
pre.code .cm { color: var(--faint); font-style: italic; }
pre.code .kw { color: var(--red); }
pre.code .str { color: var(--green); }
pre.code .cls { color: var(--amber); }
pre.code .fn { color: var(--blue); }
pre.code .flag { color: var(--orange); }

/* buttons = bracket links */
.btn-row { display: flex; flex-wrap: wrap; gap: 0.9rem; margin: 1.4rem 0 0; }
.btn {
  color: var(--amber); border: 1px solid var(--border);
  padding: 0.45rem 1rem; text-decoration: none;
}
.btn::before { content: '[ '; color: var(--dim); }
.btn::after { content: ' ]'; color: var(--dim); }
.btn:hover { background: var(--panel); text-decoration: none; }
.btn-solid { background: var(--amber); color: #282828; border-color: var(--amber); font-weight: 600; }
.btn-solid::before, .btn-solid::after { color: #28282880; }
.btn-solid:hover { background: var(--orange); border-color: var(--orange); }

/* figures */
figure.shot { margin: 1.4rem 0; }
figure.shot img { max-width: 100%; display: block; border: 1px solid var(--border); }
figure.shot figcaption { color: var(--faint); font-size: 0.8rem; margin-top: 0.45rem; }

/* layout helpers */
.cols { display: grid; grid-template-columns: 1fr 1fr; gap: 2.4rem; }
.cols-wide { display: grid; grid-template-columns: 2fr 1fr; gap: 2.8rem; }
.defrow { margin-bottom: 1.1rem; }
.defrow h3 { margin-top: 0; color: var(--aqua); }

/* footer */
.site-footer {
  border-top: 1px solid var(--border); background: var(--bg-soft);
  padding: 1.1rem 0 1.3rem; color: var(--faint); font-size: 0.8rem;
}
.site-footer .wrap { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 0.4rem 1.5rem; }
.site-footer a { color: var(--dim); }

/* exit code line */
.exit { color: var(--faint); font-size: 0.8rem; margin-top: 2rem; }
.exit b { color: var(--green); font-weight: 400; }

@media (max-width: 720px) {
  body { padding: 0.4rem; font-size: 0.9rem; }
  .cols, .cols-wide { grid-template-columns: 1fr; gap: 1.6rem; }
  .filelist li { grid-template-columns: 1fr; gap: 0.1rem; }
  .meta div { grid-template-columns: 1fr; gap: 0; }
  .bars li { grid-template-columns: 7.5rem 1fr; }
  .bars .bnote { display: none; }
}

@media print {
  body { background: #fff; color: #000; padding: 0; font-size: 10pt; }
  .term { border: none; max-width: none; background: #fff; }
  .term-bar, .site-header, .site-footer, .btn-row, .skip, .cursor { display: none; }
  a { color: inherit; text-decoration: none; }
  .prompt b, .prompt i, h2, .meta dt { color: #000; }
  .soft, .dim, .meta dd, .dashlist li { color: #333; }
  .bar { border-color: #999; } .bar-fill { background: #666; }
  .sec { padding: 1rem 0; border-top-color: #ccc; }
}
