:root{
  --bg:#0a0c0a;
  --g1:#c8d0c8;            /* bright grey  */
  --g2:#8a948a;            /* mid grey     */
  --g3:#6c766c;            /* low grey — 4.16:1 on bg (wcag) */
  --fg:var(--g1); --dim:var(--g2); --rule:#454f45;   /* contour = darkest grey; text greys stay wcag */
  --acc:#7fb069;
  --barh:116px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{background:var(--bg)}
body{
  font:14px/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  color:var(--fg);background:var(--bg);-webkit-font-smoothing:antialiased;
}
::selection{background:var(--acc);color:var(--bg)}
a{color:var(--dim);text-decoration:none;transition:color .15s}
a:hover,a:focus-visible{color:var(--acc)}
@supports (scrollbar-width:thin){html{scrollbar-width:thin;scrollbar-color:var(--g3) var(--bg)}}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:var(--g3)}
::-webkit-scrollbar-track{background:var(--bg)}
a:focus-visible{outline:1px solid var(--acc);outline-offset:2px}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* top bar */
#bar{
  position:fixed;top:0;left:0;right:0;height:var(--barh);z-index:10;
  display:flex;flex-direction:column;justify-content:flex-start;gap:3px;
  padding:calc(env(safe-area-inset-top,0px) + 12px) 14px 0;
  background:rgba(10,12,10,.92);backdrop-filter:blur(6px);
  border-bottom:1px solid var(--rule);
}
#bar > div{flex:0 0 auto;min-height:20px}
#bar > div{width:100%;max-width:760px;margin:0 auto;display:flex;justify-content:safe center;gap:16px}
#bar a.on{color:var(--acc)}
#bar a:active{color:var(--acc)}
#bar .r1 a{color:var(--fg)}
#bar .r1 a{color:var(--g1)}
#bar .r1 .brand{color:var(--g1)}
#bar .rv{gap:8px}
#bar .rv a{padding:0 6px}
#bar .rv a.on{color:var(--acc)}
#bar .r2{white-space:nowrap;overflow-x:auto;scrollbar-width:none}
#bar .r2::-webkit-scrollbar{display:none}
#bar .r2 a.on{color:var(--acc)}
#bar .r3{gap:14px;white-space:nowrap;overflow-x:auto;scrollbar-width:none;
  color:var(--dim);padding-bottom:2px;
  padding-left:50%;padding-right:50%}
#bar .r3::-webkit-scrollbar{display:none}
#bar .r3 .yr{cursor:pointer;user-select:none;padding:0 1px}
#bar .r3 .yr.empty{opacity:.35}
#bar .r3 .yr.now{color:var(--acc);font-weight:bold}
#bar .r3 .yr:hover{color:var(--fg)}
body:not([data-view="feed"]) #bar .r3{display:none}

/* feed */
#feed{max-width:760px;margin:0 auto;padding:calc(var(--barh) + 18px) 12px 12px}
.post{padding:4px 0 8px;margin-bottom:8px}
.sep{border-bottom:1px solid var(--rule);margin-top:8px}
.row{display:grid;gap:8px;margin-bottom:8px}
.row.c1{grid-template-columns:1fr}
.row.c2{grid-template-columns:1fr 1fr}
.cell{min-width:0}
.media{width:100%;display:block;background:#101410;border:1px solid var(--rule);
  transition:border-color .15s}
img.media:hover,video.media:hover{border-color:var(--g2)}
img.media,video.media{object-fit:cover}
img.media{cursor:zoom-in}
video.media{cursor:default}
video.media::-webkit-media-controls-start-playback-button,
video.media::-webkit-media-controls-overlay-play-button{display:none!important}
.cell.txt{text-align:center;padding:2px;white-space:pre-line}
.row.c2 .cell.txt{color:var(--dim)}
.statusline{margin-top:10px;color:var(--dim);overflow-wrap:break-word;text-align:center}
.statusline .t{display:inline;font-size:inherit;font-weight:normal}
.statusline .t a{color:var(--g2)}
.statusline .pin{color:var(--acc)}
.statusline .t{margin-bottom:1px}
.statusline .sdesc{color:var(--g3)}
.statusline .sdate{color:var(--g3);margin-top:1px}
.cell .err{display:flex;align-items:center;justify-content:center;width:100%;
  border:1px dashed var(--dim);color:var(--dim);background:#0e100e}

/* video wrap */
.vwrap{position:relative}
img.media.portrait{width:50%;margin:0 auto;display:block}
video.media.portrait{width:100%}
.vwrap::after{content:attr(data-state);display:none;position:absolute;top:4px;right:6px;font-size:10px;
  color:var(--acc);background:rgba(10,12,10,.7);padding:1px 5px;pointer-events:none;
  opacity:0} /* debug: set opacity 1 to see states */

/* html embed */
.hwrap{position:relative}
.hwrap iframe{border:1px solid var(--rule)}
.hwrap:hover iframe{border-color:var(--acc)}
.hwrap .shield{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:flex-start;
  background:transparent;cursor:pointer;border:0;padding:8px;color:var(--acc);font:inherit}
.hwrap .shield span{background:rgba(10,12,10,.8);padding:2px 7px;border:1px solid var(--rule)}

/* pager (crawler path; hidden once JS boots) */
.pager{color:var(--dim);padding:10px 0 30px;text-align:center}
body.js .pager{display:none}

#sentinel{height:1px}
#tail{color:var(--dim);padding:20px 0 38vh;text-align:center;letter-spacing:2px}

/* lightbox */
#lb{position:fixed;inset:0;z-index:30;display:none;background:rgba(6,8,6,.97);
  align-items:center;justify-content:center;flex-direction:column;gap:10px;
  -webkit-tap-highlight-color:transparent}
#lb .stage img,#lb .stage video{user-select:none;-webkit-user-select:none}
#lb.open{display:flex;animation:lbin .16s ease-out}
@keyframes lbin{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){#lb.open{animation:none}}
#lb .stage{display:flex;align-items:center;justify-content:center;max-width:96vw;max-height:84vh}
#lb .stage img,#lb .stage video{max-width:96vw;max-height:84vh;border:1px solid var(--rule)}
#lb .stage img.fit{width:min(96vw,900px);height:auto}
#lb .stage iframe{width:96vw;height:80vh;border:1px solid var(--acc);background:#101410}
#lb .cap{color:var(--dim)}
#lb .x{position:absolute;top:calc(env(safe-area-inset-top,0px) + 10px);right:14px;
  background:rgba(10,12,10,.85);border:1px solid var(--rule);color:var(--acc);
  font:inherit;padding:4px 10px;cursor:pointer}

/* toast (copy link) */
#toast{font-size:14px;position:fixed;bottom:18px;left:50%;transform:translate(-50%,20px);z-index:40;
  background:rgba(10,12,10,.92);border:1px solid var(--acc);color:var(--acc);
  padding:6px 14px;opacity:0;pointer-events:none;
  transition:opacity .2s,transform .2s}
#toast.show{opacity:1;transform:translate(-50%,0)}

.e404{padding:40px 0;white-space:pre-wrap;color:var(--dim)}

/* debug hud (toggle: press d, or ?debug in url) */
#hud{position:fixed;bottom:10px;left:10px;z-index:20;display:none;
  font-size:11px;line-height:1.5;color:var(--acc);
  background:rgba(10,12,10,.88);border:1px solid var(--rule);
  padding:6px 9px;pointer-events:none;white-space:pre}
body.debug #hud{display:block}
body.debug .vwrap::after{display:block;opacity:1}

@media (prefers-reduced-motion:reduce){
  #toast{font-size:14px;transition:none}
  html{scroll-behavior:auto}
}

/* ---- wall view (masonry via columns) ---- */
.wall{position:relative}
.wall .tile{position:absolute;top:0;left:0;opacity:0}
.wall.laid .tile{opacity:1;transition:opacity .2s}
@media (prefers-reduced-motion:reduce){.wall.laid .tile{transition:none}}
body[data-view="wall"] #feed{max-width:1600px;padding-left:16px;padding-right:16px}
.tile{margin:0;position:relative;cursor:zoom-in;
  user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}
.tile img{width:100%;display:block;background:#101410;border:1px solid var(--rule);
  transition:border-color .15s}
.tile .mark{position:absolute;right:8px;bottom:8px;color:var(--acc);
  background:rgba(10,12,10,.75);border:1px solid var(--rule);padding:1px 7px;pointer-events:none}
.tile:hover img,.tile:focus-visible img{border-color:var(--acc)}
.tile:focus-visible{outline:1px solid var(--acc);outline-offset:2px}

/* ---- list view (cv rows) ---- */
.list{padding-top:4px}
.lrow{display:grid;grid-template-columns:76px minmax(120px,max-content) 1fr;gap:26px;
  padding:2px 0;align-items:baseline}
.lrow time{color:var(--dim);white-space:nowrap}
.lrow a{color:var(--fg)}
.lrow a:hover{color:var(--acc)}
.lrow .ldesc{color:var(--dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:520px){
  .lrow{grid-template-columns:60px 1fr;gap:1px 12px}
  .lrow time .dd{display:none}
  .lrow .ldesc{grid-column:2;white-space:normal}
  .sep{display:none}
  .post{padding:0;margin-bottom:0}
  .statusline{margin-top:6px;margin-bottom:1.5em}   /* item, title, one empty line, next item */
}

/* wall: html + text tiles */
.tile.htile iframe{width:100%;display:block;border:1px solid var(--rule);
  background:#101410;pointer-events:none}
.tile.htile:hover iframe,.tile.htile:focus-visible iframe{border-color:var(--acc)}
.tile.ttile .ttxt{text-align:center;aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;
  padding:12px;border:1px solid var(--rule);background:#0e100e;color:var(--g1);
  text-align:center;white-space:pre-line;overflow:hidden}
.tile.ttile:hover .ttxt,.tile.ttile:focus-visible .ttxt{border-color:var(--acc)}
/* lightbox text panel */
#lb .stage .lbtext{max-width:min(680px,92vw);max-height:84vh;overflow:auto;
  padding:34px;border:1px solid var(--rule);background:#0e100e;color:var(--g1);
  white-space:pre-line;text-align:center}

/* forced-frame media (_ar markers): fill the frame fully, crop overflow (feed only —
   the wall always shows native aspect ratios) */
.media.fit{object-fit:cover}


/* embeds (.vimeo/.yt) */
.ewrap iframe{border:1px solid var(--rule)}
.tile.etile iframe{pointer-events:none}

/* permalink tag line */
.statusline .stags{color:var(--g3);margin-top:1px}
.statusline .stags a{color:var(--g3)}
.statusline .stags a:hover,.statusline .stags a:focus-visible{color:var(--acc)}

/* list view: accordion expansion */
.lexp{overflow:hidden;height:0;transition:height .45s cubic-bezier(.22,.9,.36,1)}
.lexp .post{margin:8px 0 14px;padding:14px 12px 4px;border:1px solid var(--rule);background:#0c0e0c}
.lexp .sep{display:none}
.lrow.on a{color:var(--acc)}
@media (prefers-reduced-motion:reduce){.lexp{transition:none}}

/* lightbox prev/next */
#lb .nav{display:none;position:absolute;top:50%;transform:translateY(-50%);
  background:none;border:0;color:var(--dim);font:inherit;cursor:pointer;padding:14px 10px;z-index:2}
#lb .nav:hover,#lb .nav:focus-visible{color:var(--acc)}
#lb.multi .nav{display:block}
#lb .prev{left:8px}
#lb .next{right:8px}


/* extended description (permalink + list expansion only) */
.statusline .sdesc-ext{margin-top:8px;max-width:56ch;margin-left:auto;margin-right:auto}

/* feed statusline accordion (desc2 + date under the title) */
.statusline .sacc{overflow:hidden;height:0;transition:height .45s cubic-bezier(.22,.9,.36,1)}
.statusline .sacc-in{padding:6px 0 2px}
@media (prefers-reduced-motion:reduce){.statusline .sacc{transition:none}}
