/* ============================================================
   JEM surfaces — per-surface rules, built station by station.
   Loads after jem-core.css (tokens + components). Anything here
   is specific to one surface; shared vocabulary lives in jem-core.
   ============================================================ */

/* ============================================================
   Repo core (Station 3 baseline — migrated from the 2.0 wave)
   ============================================================ */
/* file browser — premium quiet rows */
[data-theme=jem] #repo-files-table.ui.table{border-color:var(--jem-hairline)}
[data-theme=jem] #repo-files-table tr.commit-list>td{background:rgba(255,255,255,.022)}
[data-theme=jem] #repo-files-table tr.ready.entry td{padding-top:.5rem;padding-bottom:.5rem;transition:background var(--jem-dur) var(--jem-ease)}
[data-theme=jem] #repo-files-table tr.ready.entry:hover td{background:rgba(255,255,255,.032)}
[data-theme=jem] #repo-files-table td.name a{letter-spacing:-.006em}

/* repository summary (commits/branches/tags + language bar) as one clean card */
[data-theme=jem] .repository-summary.ui.segments{border-radius:var(--jem-r-md);overflow:hidden;border-color:var(--jem-hairline)}

/* clone widget — mono + tight */
[data-theme=jem] .clone-panel.ui.input>input{font-family:var(--jem-mono);font-size:var(--jem-text-sm)}
[data-theme=jem] .repo-buttons.button-row{gap:var(--jem-s-1)}

/* code / blob view rhythm (scoped, never global) */
[data-theme=jem] .file-view.code-view .lines-code{line-height:var(--jem-leading-relaxed)}
[data-theme=jem] .file-view .lines-num{opacity:.45}

/* ============================================================
   Station 1 — Entry (landing / auth / status)
   ============================================================ */
/* --- landing --- */
[data-theme=jem] .jem-landing-hero{display:flex;flex-direction:column;align-items:center;text-align:center;padding:12vh 1rem 9vh;position:relative}
[data-theme=jem] .jem-landing-mark{position:relative;display:grid;place-items:center}
[data-theme=jem] .jem-landing-mark::before{content:"";position:absolute;width:min(340px,80vw);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,var(--jem-iris-soft),transparent 62%);filter:blur(22px);z-index:0}
[data-theme=jem] .jem-landing-mark img{position:relative;z-index:1;opacity:.96}
[data-theme=jem] .jem-landing-word{font-size:clamp(2.6rem,7vw,3.4rem);font-weight:var(--jem-w-regular);letter-spacing:-.03em;margin:var(--jem-s-8) 0 0;color:var(--jem-text)}
[data-theme=jem] .jem-landing-tag{font-size:var(--jem-text-lg);color:var(--jem-text-muted);margin:var(--jem-s-2) 0 0}
[data-theme=jem] .jem-landing-lede{max-width:44ch;color:var(--jem-text-faint);margin:var(--jem-s-5) 0 var(--jem-s-8);line-height:var(--jem-leading-relaxed)}
[data-theme=jem] .jem-landing-actions{display:flex;gap:var(--jem-s-3);flex-wrap:wrap;justify-content:center}

/* --- auth (login / signup): mark + one narrow centred card --- */
[data-theme=jem] .jem-auth-wrap{max-width:400px;margin:0 auto;padding:7vh 1rem 5vh;display:flex;flex-direction:column;align-items:center;gap:var(--jem-s-6)}
[data-theme=jem] .jem-auth-mark img{opacity:.95}
[data-theme=jem] .jem-auth-hello{
  margin:calc(var(--jem-s-3) * -1) 0 0;text-align:center;color:var(--jem-text);
  font-size:clamp(1.3rem,2.2vw,1.7rem);font-weight:var(--jem-w-regular);letter-spacing:-.02em;line-height:1.2;
}
[data-theme=jem] .jem-auth-line{margin:calc(var(--jem-s-4) * -1) 0 0;max-width:36ch;text-align:center;color:var(--jem-text-muted);font-size:var(--jem-text-sm);line-height:1.5;text-wrap:balance}
[data-theme=jem] .jem-auth-card{width:100%}

/* ---------- the reflection surface: the book of your becoming (leaves turn like pages) ---------- */
[data-theme=jem] .jem-book-surface{padding:0}
[data-theme=jem] .jem-book{position:relative;max-width:560px;margin:0 auto;padding:0 var(--jem-s-4);overflow:hidden}
[data-theme=jem] .jem-leaves{
  display:flex;align-items:stretch;width:100%;
  transition:transform .6s var(--jem-eio, cubic-bezier(.7,0,.2,1));
  will-change:transform;
}
@media (prefers-reduced-motion: reduce){[data-theme=jem] .jem-leaves{transition:transform .2s linear}}
[data-theme=jem] .jem-leaf{
  flex:0 0 100%;min-width:0;box-sizing:border-box;
  min-height:82vh;padding:8vh var(--jem-s-3) var(--jem-s-8);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--jem-s-4);text-align:center;
  opacity:.28;transition:opacity .5s var(--jem-ease);
}
[data-theme=jem] .jem-leaf.current{opacity:1}
[data-theme=jem] .jem-leaf[inert]{pointer-events:none}
[data-theme=jem] .jem-leaf-num{font-size:var(--jem-text-xs);letter-spacing:.24em;text-transform:uppercase;color:var(--jem-text-faint)}
[data-theme=jem] .jem-leaf-head{margin:0;color:var(--jem-text);font-size:clamp(1.5rem,3vw,2.1rem);font-weight:var(--jem-w-regular);letter-spacing:-.025em;line-height:1.15;text-wrap:balance}
[data-theme=jem] .jem-book-title{margin:0;color:var(--jem-text);font-size:clamp(1.8rem,4vw,2.6rem);font-weight:var(--jem-w-regular);letter-spacing:-.03em;line-height:1.1;text-wrap:balance}
[data-theme=jem] .jem-book-sub{margin:0;max-width:40ch;color:var(--jem-text-muted);font-size:var(--jem-text-sm);line-height:1.55;text-wrap:balance}
[data-theme=jem] .jem-scene-ask{margin:0;max-width:38ch;color:var(--jem-text);font-size:var(--jem-text-md);line-height:1.4;text-wrap:balance}
[data-theme=jem] .jem-scene-lore{margin:0;max-width:42ch;color:var(--jem-text-faint);font-size:var(--jem-text-xs);font-style:italic;line-height:1.6;text-wrap:balance}
[data-theme=jem] .jem-auth-jump{font-size:var(--jem-text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--jem-text-faint);transition:color var(--jem-dur) var(--jem-ease)}
[data-theme=jem] .jem-auth-jump:hover{color:var(--jem-text)}

/* turning the page */
[data-theme=jem] .jem-turn{
  border:1px solid var(--jem-hairline-strong);border-radius:var(--jem-r-pill);background:transparent;cursor:pointer;
  padding:var(--jem-s-2) var(--jem-s-5);color:var(--jem-text);font-size:var(--jem-text-sm);letter-spacing:.04em;
  transition:border-color var(--jem-dur) var(--jem-ease),background var(--jem-dur) var(--jem-ease),transform var(--jem-dur) var(--jem-ease);
}
[data-theme=jem] .jem-turn:hover{border-color:var(--jem-iris-line);background:var(--jem-iris-soft)}
[data-theme=jem] .jem-turn:active{transform:scale(.97)}
[data-theme=jem] .jem-turn.ghost{border-color:transparent;color:var(--jem-text-faint);padding-left:var(--jem-s-3);padding-right:var(--jem-s-3)}
[data-theme=jem] .jem-turn.ghost:hover{color:var(--jem-text);background:transparent}
[data-theme=jem] .jem-turn-open{margin-top:var(--jem-s-2)}
[data-theme=jem] .jem-leaf-nav{display:flex;align-items:center;gap:var(--jem-s-3);margin-top:var(--jem-s-4)}
[data-theme=jem] .jem-leaf-nav-solo{justify-content:center}

/* the spine — a dot per page, the book's thickness */
[data-theme=jem] .jem-spine{display:flex;justify-content:center;gap:var(--jem-s-2);padding:var(--jem-s-5) 0 8vh}
[data-theme=jem] .jem-spine-dot{
  width:7px;height:7px;padding:0;border-radius:50%;cursor:pointer;
  border:1px solid var(--jem-hairline-strong);background:transparent;
  transition:background var(--jem-dur) var(--jem-ease),border-color var(--jem-dur) var(--jem-ease),transform var(--jem-dur) var(--jem-ease);
}
[data-theme=jem] .jem-spine-dot.here{background:var(--jem-text-faint);border-color:var(--jem-text-faint)}
[data-theme=jem] .jem-spine-dot.now{background:var(--jem-iris);border-color:var(--jem-iris-line);transform:scale(1.35)}

/* the mic — speak your hello; the ear that keeps your voice */
[data-theme=jem] .jem-mic{
  display:inline-flex;align-items:center;gap:.5em;cursor:pointer;
  border:1px solid var(--jem-hairline-strong);border-radius:var(--jem-r-pill);background:transparent;
  padding:var(--jem-s-2) var(--jem-s-4);color:var(--jem-text-muted);font-size:var(--jem-text-xs);
  letter-spacing:.1em;text-transform:uppercase;
  transition:color var(--jem-dur) var(--jem-ease),border-color var(--jem-dur) var(--jem-ease),background var(--jem-dur) var(--jem-ease);
}
[data-theme=jem] .jem-mic:hover{color:var(--jem-text);border-color:var(--jem-iris-line)}
[data-theme=jem] .jem-mic.live{color:var(--jem-text);border-color:var(--jem-iris-line);background:var(--jem-iris-soft)}
[data-theme=jem] .jem-mic.live svg{animation:jem-mic-pulse 1.1s var(--jem-ease) infinite alternate}
@keyframes jem-mic-pulse{from{opacity:.5}to{opacity:1}}
@media (prefers-reduced-motion: reduce){[data-theme=jem] .jem-mic.live svg{animation:none}}

/* crystallize — the words that deployed */
[data-theme=jem] .jem-leaf-crystal .jem-crystal{display:flex;flex-direction:column;align-items:center;gap:var(--jem-s-3);max-width:44ch}
[data-theme=jem] .jem-crystal-empty{color:var(--jem-text-faint);font-style:italic;font-size:var(--jem-text-sm);line-height:1.6;text-wrap:balance}
[data-theme=jem] .jem-crystal-word{
  display:flex;flex-direction:column;gap:2px;color:var(--jem-text);font-size:clamp(1.2rem,2.6vw,1.7rem);
  letter-spacing:-.02em;line-height:1.2;
  opacity:0;transform:translateY(6px);animation:jem-crystal-rise .6s var(--jem-ease) forwards;
}
[data-theme=jem] .jem-crystal-word em{font-size:var(--jem-text-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--jem-text-faint);font-style:normal}
[data-theme=jem] .jem-crystal-tongue{color:var(--jem-text-muted);font-size:var(--jem-text-xs);font-style:italic}
@keyframes jem-crystal-rise{to{opacity:1;transform:none}}
@media (prefers-reduced-motion: reduce){[data-theme=jem] .jem-crystal-word{animation:none;opacity:1;transform:none}}
[data-theme=jem] .jem-crystal-truth{margin:0;max-width:42ch;color:var(--jem-text-muted);font-size:var(--jem-text-sm);line-height:1.6;text-wrap:balance}
[data-theme=jem] .jem-leaf-name .jem-auth-card{width:100%;max-width:400px}

/* page one · your tongue (igni's assumption, greeted in-tongue) */
[data-theme=jem] .jem-tongue-guess{
  display:flex;flex-direction:column;align-items:center;gap:var(--jem-s-1);
  padding:var(--jem-s-5) var(--jem-s-6);border:1px solid var(--jem-hairline-strong);border-radius:var(--jem-r-lg);
  background:radial-gradient(circle at 50% 30%, var(--jem-iris-soft), transparent 70%);min-width:min(300px,86vw);
}
[data-theme=jem] .jem-tongue-hello{color:var(--jem-text);font-size:clamp(1.7rem,4vw,2.4rem);letter-spacing:-.02em;line-height:1.1}
[data-theme=jem] .jem-tongue-name{color:var(--jem-text);font-size:var(--jem-text-md);font-weight:var(--jem-w-medium);letter-spacing:.02em}
[data-theme=jem] .jem-tongue-src{color:var(--jem-text-faint);font-size:var(--jem-text-xs);letter-spacing:.06em;text-transform:uppercase}
[data-theme=jem] .jem-tongue-actions{display:flex;justify-content:center}
[data-theme=jem] .jem-tongue-other{
  background:none;border:none;cursor:pointer;color:var(--jem-text-faint);
  font-size:var(--jem-text-xs);letter-spacing:.08em;text-transform:uppercase;transition:color var(--jem-dur) var(--jem-ease);
}
[data-theme=jem] .jem-tongue-other:hover{color:var(--jem-text)}
[data-theme=jem] .jem-tongue-correct{display:flex;flex-direction:column;align-items:center;gap:var(--jem-s-3);width:100%;padding-top:var(--jem-s-2)}
[data-theme=jem] .jem-tongue-correct[hidden]{display:none}

/* the hello (now the "correct me" path) */
[data-theme=jem] .jem-hello-row{display:flex;gap:var(--jem-s-2);width:100%;max-width:340px}
[data-theme=jem] .jem-hello-input{
  flex:1;min-width:0;background:var(--jem-surface);border:1px solid var(--jem-hairline-strong);
  border-radius:var(--jem-r-pill);padding:var(--jem-s-2) var(--jem-s-4);color:var(--jem-text);
  font-size:var(--jem-text-md);text-align:center;
  transition:border-color var(--jem-dur) var(--jem-ease),box-shadow var(--jem-dur) var(--jem-ease);
}
[data-theme=jem] .jem-hello-input:focus{outline:none;border-color:var(--jem-iris-line);box-shadow:0 0 0 4px var(--jem-iris-soft)}
[data-theme=jem] .jem-hello-input::placeholder{color:var(--jem-text-faint)}
[data-theme=jem] .jem-hello-speak{
  border:1px solid var(--jem-iris-line);border-radius:var(--jem-r-pill);background:transparent;cursor:pointer;
  padding:var(--jem-s-2) var(--jem-s-4);color:var(--jem-iris);font-size:var(--jem-text-xs);
  letter-spacing:.12em;text-transform:uppercase;font-weight:var(--jem-w-semibold);
  transition:background var(--jem-dur) var(--jem-ease),color var(--jem-dur) var(--jem-ease);
}
[data-theme=jem] .jem-hello-speak:hover{background:var(--jem-iris-soft);color:var(--jem-text)}
[data-theme=jem] .jem-hello-reply{margin:0;min-height:1.4em;max-width:40ch;text-align:center;color:var(--jem-text);font-size:var(--jem-text-sm);line-height:1.5;text-wrap:balance}
[data-theme=jem] .jem-hello-reply a{color:var(--jem-iris)}
[data-theme=jem] .jem-hello-reply a:hover{text-decoration:underline;text-underline-offset:3px}
[data-theme=jem] .jem-hello-byhand{width:100%;text-align:center}
[data-theme=jem] .jem-hello-byhand summary{
  cursor:pointer;list-style:none;font-size:var(--jem-text-xs);letter-spacing:.08em;text-transform:uppercase;
  color:var(--jem-text-faint);transition:color var(--jem-dur) var(--jem-ease);
}
[data-theme=jem] .jem-hello-byhand summary::-webkit-details-marker{display:none}
[data-theme=jem] .jem-hello-byhand summary:hover{color:var(--jem-text)}
[data-theme=jem] .jem-hello-byhand[open] summary{margin-bottom:var(--jem-s-2)}

/* IV · the attunements */
[data-theme=jem] .jem-attune-rail{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--jem-s-2)}
[data-theme=jem] .jem-attune{
  border:1px solid var(--jem-hairline);border-radius:var(--jem-r-pill);padding:4px var(--jem-s-4);
  font-size:var(--jem-text-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--jem-text-muted);
  transition:color var(--jem-dur) var(--jem-ease),border-color var(--jem-dur) var(--jem-ease),background var(--jem-dur) var(--jem-ease);
}
[data-theme=jem] .jem-attune.lit{color:var(--jem-text);border-color:var(--jem-iris-line);background:var(--jem-iris-soft)}
[data-theme=jem] .jem-attune.lit::after{content:" ✓";color:var(--jem-iris)}
[data-theme=jem] .jem-attune.soon{opacity:.5}
[data-theme=jem] .jem-attune.soon::after{content:" · soon";letter-spacing:0;text-transform:none;color:var(--jem-text-faint)}

/* ---------- the reflection surface: the eye (a literal mirror — local only) ---------- */
[data-theme=jem] .jem-eye-block{display:flex;flex-direction:column;align-items:center;gap:var(--jem-s-3)}
[data-theme=jem] .jem-eye{
  position:relative;width:148px;height:148px;border-radius:50%;overflow:hidden;cursor:pointer;
  border:1px solid var(--jem-hairline-strong);background:radial-gradient(circle at 50% 42%, rgba(255,255,255,.06), rgba(14,14,17,.6) 62%);
  display:flex;align-items:center;justify-content:center;padding:0;
  transition:border-color var(--jem-dur) var(--jem-ease),box-shadow var(--jem-dur) var(--jem-ease),transform var(--jem-dur) var(--jem-ease);
}
[data-theme=jem] .jem-eye:hover{border-color:var(--jem-iris-line);box-shadow:0 0 0 5px var(--jem-iris-soft)}
[data-theme=jem] .jem-eye:active{transform:scale(.97)}
[data-theme=jem] .jem-eye video{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:50%;
  transform:scaleX(-1); /* a mirror, literally */
  opacity:0;transition:opacity var(--jem-dur) var(--jem-ease);
}
[data-theme=jem] .jem-eye.open video{opacity:1}
[data-theme=jem] .jem-eye.open{cursor:default}
[data-theme=jem] .jem-eye-iris{
  width:14px;height:14px;border-radius:50%;border:1px solid var(--jem-iris-line);background:var(--jem-iris-soft);
  position:absolute;top:38%;left:50%;translate:-50% -50%;transition:opacity var(--jem-dur) var(--jem-ease);
  animation:jem-eye-breathe 5.5s var(--jem-ease) infinite alternate;
}
@keyframes jem-eye-breathe{
  from{transform:scale(1);opacity:.55}
  to{transform:scale(1.35);opacity:1}
}
@media (prefers-reduced-motion: reduce){
  [data-theme=jem] .jem-eye-iris{animation:none}
}
[data-theme=jem] .jem-eye.open .jem-eye-iris,[data-theme=jem] .jem-eye.open .jem-eye-word{opacity:0}
[data-theme=jem] .jem-eye.closed .jem-eye-iris{opacity:.35}
[data-theme=jem] .jem-eye-word{
  position:absolute;bottom:26%;left:0;right:0;text-align:center;
  font-size:var(--jem-text-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--jem-text-muted);
}
[data-theme=jem] .jem-eye-state{margin:0;max-width:36ch;text-align:center;color:var(--jem-text-faint);font-size:var(--jem-text-xs);line-height:1.5;font-style:italic;text-wrap:balance}

/* what the glass reads — transparent, chip by chip */
[data-theme=jem] .jem-reads{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:var(--jem-s-2);max-width:100%}
[data-theme=jem] .jem-reads-label{flex-basis:100%;text-align:center;margin-bottom:var(--jem-s-1);font-size:var(--jem-text-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--jem-text-faint)}
[data-theme=jem] .jem-read{
  border:1px solid var(--jem-hairline);border-radius:var(--jem-r-pill);padding:3px var(--jem-s-3);
  font-family:var(--jem-mono);font-size:var(--jem-text-xs);color:var(--jem-text-muted);background:transparent;
}
[data-theme=jem] .jem-read:empty{display:none}
[data-theme=jem] button.jem-read-add{cursor:pointer;color:var(--jem-iris);border-color:var(--jem-iris-line);transition:background var(--jem-dur) var(--jem-ease)}
[data-theme=jem] button.jem-read-add:hover:not(:disabled){background:var(--jem-iris-soft)}
[data-theme=jem] button.jem-read-add:disabled{cursor:default;color:var(--jem-text-muted);border-color:var(--jem-hairline)}

/* onboarding — the tongue the glass speaks */
[data-theme=jem] .jem-onboard{width:100%;display:flex;flex-direction:column;align-items:center;gap:var(--jem-s-2)}
[data-theme=jem] .jem-onboard-label{font-size:var(--jem-text-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--jem-text-faint)}
[data-theme=jem] .jem-onboard-tongues{
  display:flex;flex-wrap:wrap;justify-content:center;gap:var(--jem-s-1);
  max-height:118px;overflow-y:auto;padding:var(--jem-s-1);
}
[data-theme=jem] .jem-onboard-tongues .item{
  border:1px solid var(--jem-hairline);border-radius:var(--jem-r-pill);padding:2px var(--jem-s-2);
  font-size:var(--jem-text-xs);color:var(--jem-text-muted);cursor:pointer;
  transition:color var(--jem-dur-fast) var(--jem-ease),border-color var(--jem-dur-fast) var(--jem-ease),background var(--jem-dur-fast) var(--jem-ease);
}
[data-theme=jem] .jem-onboard-tongues .item:hover{color:var(--jem-text);border-color:var(--jem-hairline-strong)}
[data-theme=jem] .jem-onboard-tongues .item.active{color:var(--jem-text);border-color:var(--jem-iris-line);background:var(--jem-iris-soft)}
[data-theme=jem] .jem-auth-first{
  font-size:var(--jem-text-sm);color:var(--jem-iris);text-align:center;
  transition:color var(--jem-dur) var(--jem-ease);
}
[data-theme=jem] .jem-auth-first:hover{color:var(--jem-text);text-decoration:underline;text-underline-offset:3px}
[data-theme=jem] .jem-auth-meet{margin:0;max-width:44ch;text-align:center;color:var(--jem-text-faint);font-size:var(--jem-text-xs);font-style:italic;line-height:1.6;text-wrap:balance}

/* Phase 5: JEM is the door — "Reflect yourself" (OIDC → id.lnk-us.com) leads; native password is the fallback */
[data-theme=jem] .jem-reflect-go{
  display:inline-flex;align-items:center;justify-content:center;gap:.6em;width:100%;max-width:340px;
  padding:var(--jem-s-3) var(--jem-s-5);border-radius:var(--jem-r-pill);
  background:var(--jem-iris);color:#0b0b12;font-size:var(--jem-text-md);font-weight:var(--jem-w-semibold);
  letter-spacing:.02em;border:1px solid var(--jem-iris);
  transition:transform var(--jem-dur) var(--jem-ease),box-shadow var(--jem-dur) var(--jem-ease);
}
[data-theme=jem] .jem-reflect-go:hover{transform:translateY(-1px);box-shadow:0 0 0 5px var(--jem-iris-soft);text-decoration:none}
[data-theme=jem] .jem-reflect-go:active{transform:scale(.98)}
[data-theme=jem] .jem-auth-native{width:100%;max-width:400px;text-align:center}
[data-theme=jem] .jem-auth-native summary{
  cursor:pointer;list-style:none;font-size:var(--jem-text-xs);letter-spacing:.08em;text-transform:uppercase;
  color:var(--jem-text-faint);transition:color var(--jem-dur) var(--jem-ease);padding:var(--jem-s-2);
}
[data-theme=jem] .jem-auth-native summary::-webkit-details-marker{display:none}
[data-theme=jem] .jem-auth-native summary:hover{color:var(--jem-text-muted)}
[data-theme=jem] .jem-auth-native[open] summary{margin-bottom:var(--jem-s-3)}
/* inside the fallback, hide Forgejo's own JEM oauth button + its "or" divider — the button above IS the JEM door */
[data-theme=jem] .jem-auth-native .oauth-login-image,
[data-theme=jem] .jem-auth-native .oauth-login-link,
[data-theme=jem] .jem-auth-native a[href*="/user/oauth2/JEM"],
[data-theme=jem] .jem-auth-native .divider{display:none !important}
[data-theme=jem] .jem-auth .ui.container.fluid{width:100%;padding:0}
[data-theme=jem] .jem-auth h4.ui.top.attached.header{background:transparent;border:none;color:var(--jem-text);font-weight:var(--jem-w-medium);font-size:var(--jem-text-lg);letter-spacing:var(--jem-track-snug);padding:0 0 var(--jem-s-1);text-align:center}
[data-theme=jem] .jem-auth .ui.attached.segment{border-radius:var(--jem-r-lg) !important;border:1px solid var(--jem-hairline);background:var(--jem-surface);padding:var(--jem-s-6)}
[data-theme=jem] .jem-auth .ui.form .field>label{color:var(--jem-text-muted);font-weight:var(--jem-w-medium)}
[data-theme=jem] .jem-auth .ui.attached.segment.header.top{margin-top:var(--jem-s-3);background:transparent;border:none;text-align:center;color:var(--jem-text-faint);border-radius:var(--jem-r-md) !important}
[data-theme=jem] .jem-auth .ui.attached.segment.header.top a{color:var(--jem-iris)}

/* --- status (404 / errors): calm, branded --- */
[data-theme=jem] .jem-status-wrap{max-width:520px;margin:0 auto;text-align:center;padding:14vh 1rem 10vh;display:flex;flex-direction:column;align-items:center;gap:var(--jem-s-4)}
[data-theme=jem] .jem-status-code{font-size:clamp(4rem,16vw,7rem);font-weight:200;letter-spacing:-.04em;line-height:1;color:var(--jem-text);opacity:.92}
[data-theme=jem] .jem-status-msg{color:var(--jem-text-muted);font-size:var(--jem-text-lg);margin:0}
[data-theme=jem] .jem-status-actions{display:flex;gap:var(--jem-s-3);flex-wrap:wrap;justify-content:center;margin-top:var(--jem-s-3)}
[data-theme=jem] .jem-status-ver{color:var(--jem-text-faint);font-size:var(--jem-text-xs);margin-top:var(--jem-s-6)}

/* ============================================================
   Station 2 — Dashboard
   ============================================================ */
/* context switcher bar (org/user + team + activity links) */
[data-theme=jem] .secondary-nav{border-bottom:1px solid var(--jem-hairline) !important;background:transparent}
[data-theme=jem] .secondary-nav .ui.secondary.menu{margin:0}
[data-theme=jem] .secondary-nav .truncated-item-name{font-weight:var(--jem-w-medium);color:var(--jem-text)}
[data-theme=jem] .secondary-nav .ui.floating.dropdown{border-radius:var(--jem-r-sm);transition:background var(--jem-dur) var(--jem-ease)}
[data-theme=jem] .secondary-nav .ui.floating.dropdown:hover{background:rgba(255,255,255,.04)}
[data-theme=jem] .secondary-nav .right.menu .active.item{color:var(--jem-iris)}
[data-theme=jem] .secondary-nav .org-visibility .ui.label{background:var(--jem-raised);border:1px solid var(--jem-hairline);color:var(--jem-text-faint)}

/* activity feed — quieter action glyphs, mono shas, iris subjects */
[data-theme=jem] #activity-feed .flex-item-trailing .svg{opacity:.24}
[data-theme=jem] #activity-feed .flex-item-main .ui.sha.label{font-family:var(--jem-mono);font-size:var(--jem-text-xs);background:var(--jem-raised);border:1px solid var(--jem-hairline)}
[data-theme=jem] #activity-feed .flex-item-main>div>a{color:var(--jem-iris)}
[data-theme=jem] #activity-feed .issue.title{color:var(--jem-text-muted)}
[data-theme=jem] #activity-feed .flex-text-block .text.truncate{color:var(--jem-text-muted)}

/* ============================================================
   Station 4 — Diff & PR review
   ============================================================ */
/* diff container + sticky file header */
[data-theme=jem] .diff-file-box{border-radius:var(--jem-r-md);border-color:var(--jem-hairline)}
[data-theme=jem] .diff-file-header{background:var(--jem-surface);border-color:var(--jem-hairline) !important}
[data-theme=jem] .diff-file-header .file{color:var(--jem-text);font-family:var(--jem-mono);font-size:var(--jem-text-sm)}
/* hunk-header rows (@@) read as quiet section dividers */
[data-theme=jem] .code-diff td.tag-code,[data-theme=jem] .code-diff .tag-code td,[data-theme=jem] .code-diff tr.tag-code>td{background:var(--jem-raised)}
[data-theme=jem] .code-diff .tag-code .lines-code,[data-theme=jem] .code-diff .tag-code .lines-num{color:var(--jem-text-faint)}
/* line-number gutter: quieter */
[data-theme=jem] .code-diff .lines-num{color:var(--jem-text-faint)}
/* expand-hunk / escape controls */
[data-theme=jem] .code-diff .code-expander-button:hover{background:var(--jem-iris-soft);color:var(--jem-iris)}
/* diff toolbar buttons */
[data-theme=jem] .diff-detail-box .ui.button{border-radius:var(--jem-r-sm)}
/* review comment threads inside the diff */
[data-theme=jem] .comment-code-cloud,[data-theme=jem] .code-comment{border-radius:var(--jem-r-md);border-color:var(--jem-hairline)}
[data-theme=jem] .review-box-panel,[data-theme=jem] .review-box{border-radius:var(--jem-r-md);border-color:var(--jem-hairline);box-shadow:var(--jem-shadow-2)}
/* PR merge box (open PRs) */
[data-theme=jem] .merge-section,[data-theme=jem] .pull-merge-box{border-radius:var(--jem-r-md);border-color:var(--jem-hairline)}
[data-theme=jem] .merge-section .divider{border-color:var(--jem-hairline)}
/* PR/issue status pill (Merged/Open/Closed) — iris/live/danger already via theme; refine radius */
[data-theme=jem] .issue-state-label,[data-theme=jem] .issue.list .label{border-radius:var(--jem-r-pill)}

/* ============================================================
   Station 5 — Issue/PR conversation & lists
   ============================================================ */
/* comment cards — cohesive header + body */
[data-theme=jem] .timeline-item.comment .comment-header{background:var(--jem-surface);border-color:var(--jem-hairline) !important;border-top-left-radius:var(--jem-r-md);border-top-right-radius:var(--jem-r-md)}
[data-theme=jem] .timeline-item.comment .comment-content .ui.attached.segment,
[data-theme=jem] .timeline-item.comment .render-content{border-color:var(--jem-hairline)}
[data-theme=jem] .comment-header-right .item,[data-theme=jem] .comment-header .item{color:var(--jem-text-faint);transition:color var(--jem-dur) var(--jem-ease)}
[data-theme=jem] .comment-header-right .item:hover{color:var(--jem-text)}
/* the little arrow connecting avatar → comment box */
[data-theme=jem] .timeline-item.comment .comment-header::before{border-right-color:var(--jem-hairline)}
[data-theme=jem] .timeline-item.comment .comment-header::after{border-right-color:var(--jem-surface)}

/* timeline event badges (nodes on the line) */
[data-theme=jem] .timeline-item.event .badge{border-radius:var(--jem-r-pill);background:var(--jem-raised);color:var(--jem-text-muted);border:1px solid var(--jem-hairline)}

/* sidebar (assignees / labels / milestone / participants) */
[data-theme=jem] .issue-content-right.ui.segment{border-radius:var(--jem-r-lg);border-color:var(--jem-hairline)}
[data-theme=jem] .issue-content-right .ui.divider{border-color:var(--jem-hairline)}
[data-theme=jem] .issue-content-right .header,[data-theme=jem] .issue-content-right .ui.header{color:var(--jem-text-muted);font-weight:var(--jem-w-medium)}

/* labels as pills */
[data-theme=jem] .labels-list a,[data-theme=jem] .label.color-label,[data-theme=jem] .issue-title-meta .label{border-radius:var(--jem-r-pill)}

/* checks / status panel */
[data-theme=jem] .commit-status-panel,[data-theme=jem] .commit-status-list{border-radius:var(--jem-r-md);border-color:var(--jem-hairline)}

/* --- issue/PR list: filter bar + rows --- */
[data-theme=jem] .issue-list-toolbar,[data-theme=jem] .list-header{margin-bottom:var(--jem-s-3)}
[data-theme=jem] .issue-list-toolbar .small-menu-items,[data-theme=jem] .issue-list-toolbar .ui.dropdown{color:var(--jem-text-muted)}
[data-theme=jem] .issue.list-items .flex-item .issue-item-icon .svg{opacity:.7}
[data-theme=jem] .issue.list-items .flex-item .desc .branch{background:var(--jem-raised);border:1px solid var(--jem-hairline);border-radius:var(--jem-r-xs);font-family:var(--jem-mono);font-size:var(--jem-text-xs)}

/* ============================================================
   Station 6 — Explore / profile / org
   ============================================================ */
/* profile header + info cards */
[data-theme=jem] .user.profile .ui.card{border-radius:var(--jem-r-lg);border-color:var(--jem-hairline);box-shadow:none}
[data-theme=jem] .user.profile .ui.card .username{letter-spacing:var(--jem-track-snug);font-weight:var(--jem-w-medium)}
[data-theme=jem] .user.profile .ui.card .extra,[data-theme=jem] .user.profile .follow{color:var(--jem-text-muted)}
[data-theme=jem] .user.profile .ui.card .extra a{color:var(--jem-text-muted)}
[data-theme=jem] .user.profile .ui.card .extra a:hover{color:var(--jem-iris)}
/* contribution heatmap chrome (cells already iris via --color-primary) */
[data-theme=jem] #user-heatmap{color:var(--jem-text-faint)}
[data-theme=jem] #user-heatmap .total-contributions{color:var(--jem-text-muted);font-weight:var(--jem-w-medium)}
[data-theme=jem] #user-heatmap .vch__legend,[data-theme=jem] #user-heatmap .vch__months__labels__wrapper text,[data-theme=jem] #user-heatmap .vch__days__labels__wrapper text{fill:var(--jem-text-faint)}
/* explore: search + tabs + filters */
[data-theme=jem] .explore .ui.dropdown{border-radius:var(--jem-r-md)}
[data-theme=jem] .explore .ui.secondary.pointing.menu .active.item{border-color:var(--jem-iris);color:var(--jem-text)}
/* org members / teams cards */
[data-theme=jem] .org-members .ui.card,[data-theme=jem] .team-list .ui.card{border-radius:var(--jem-r-md);border-color:var(--jem-hairline)}

/* ============================================================
   Station 7 — Settings & forms
   ============================================================ */
/* settings side-nav */
[data-theme=jem] .ui.fluid.vertical.menu{border-radius:var(--jem-r-lg);border-color:var(--jem-hairline);background:var(--jem-surface)}
[data-theme=jem] .ui.fluid.vertical.menu .item{transition:background var(--jem-dur) var(--jem-ease)}
[data-theme=jem] .ui.fluid.vertical.menu .item:hover{background:rgba(255,255,255,.04)}
[data-theme=jem] .ui.fluid.vertical.menu .active.item{background:var(--jem-iris-soft);color:var(--jem-text);font-weight:var(--jem-w-medium)}
/* form fields + help + required marker */
[data-theme=jem] .ui.form .field>label{color:var(--jem-text);font-weight:var(--jem-w-medium)}
[data-theme=jem] .ui.form .field .help,[data-theme=jem] .ui.form .help,[data-theme=jem] .help{color:var(--jem-text-faint);font-size:var(--jem-text-sm)}
[data-theme=jem] .ui.form .required.field>label::after{color:var(--jem-danger)}
/* danger zone — clear but calm */
[data-theme=jem] .ui.error.header,[data-theme=jem] .ui.attached.error.header{background:var(--jem-danger-soft) !important;border-color:var(--jem-danger) !important;color:var(--jem-danger) !important}
[data-theme=jem] .ui.error.segment,[data-theme=jem] .ui.error.danger.segment,[data-theme=jem] .ui.attached.error.segment{border-color:var(--jem-danger) !important}
/* key / token / webhook rows */
[data-theme=jem] .key.list .item,[data-theme=jem] .ssh-key-content,[data-theme=jem] .webhook-list .item{border-color:var(--jem-hairline)}
[data-theme=jem] .ui.list>.item .ui.label.gt-mono,[data-theme=jem] .print.tw-font-mono{font-family:var(--jem-mono)}

/* ============================================================
   Station 8 — Long tail (commits, releases, branches, labels, notifications)
   ============================================================ */
/* commit list + detail */
[data-theme=jem] #commits-table .ui.sha.label,[data-theme=jem] .commit-list .ui.sha.label,[data-theme=jem] .sha.label{font-family:var(--jem-mono);background:var(--jem-raised);border:1px solid var(--jem-hairline)}
[data-theme=jem] #commits-table td.message a,[data-theme=jem] .commit-list .commit-summary{color:var(--jem-text)}
[data-theme=jem] .commit-body{color:var(--jem-text-muted)}
/* labels management */
[data-theme=jem] .label-list .item .label,[data-theme=jem] .labels-list .label{border-radius:var(--jem-r-pill)}
/* releases */
[data-theme=jem] #release-list>li,[data-theme=jem] .release-list .release-entry{border-color:var(--jem-hairline)}
[data-theme=jem] .release-list .detail .tag-name,[data-theme=jem] .release .label.green{color:var(--jem-live)}
/* branch chips */
[data-theme=jem] .branch-name,[data-theme=jem] .gt-mono.branch{font-family:var(--jem-mono);background:var(--jem-raised);border:1px solid var(--jem-hairline);border-radius:var(--jem-r-xs)}
/* notifications inbox */
[data-theme=jem] .notifications-item{border-color:var(--jem-hairline);transition:background var(--jem-dur) var(--jem-ease)}
[data-theme=jem] .notifications-item:hover{background:rgba(255,255,255,.03)}
[data-theme=jem] .notifications-item.tw-border-l,[data-theme=jem] .notification.unread{border-left:2px solid var(--jem-iris)}
/* global search results */
[data-theme=jem] .search-result .header a,[data-theme=jem] .repository.search .header a{color:var(--jem-iris)}
/* admin panel */
[data-theme=jem] .admin .ui.segment,[data-theme=jem] .admin-setting-content{border-radius:var(--jem-r-md);border-color:var(--jem-hairline)}
/* wiki */
[data-theme=jem] .wiki .choose.page .menu,[data-theme=jem] .wiki-content-parts .ui.segment{border-radius:var(--jem-r-md);border-color:var(--jem-hairline)}

/* ============================================================
   LNK signature — the seal IS LNK. Never the letters, always the glyph
   (a chop, not text). Reversible skin CSS — no DB, no token.
   ============================================================ */
/* the avatar everywhere → the signature seal (LNK's stable identicon hash) */
[data-theme=jem] img.avatar[src*="30989f64f06053415a078541f3b847a6"]{content:url(/assets/img/lnk/lnk-avatar.png?v=2)}
/* every "LNK" name-text → the inline signature (swapped by glyph.js). Scales with
   the surrounding type, so it reads as a name-glyph in a heading or a sentence alike. */
[data-theme=jem] .lnk-glyph-inline{
  height:1.05em;width:auto;vertical-align:-0.19em;display:inline-block;
  margin:0 .06em;user-select:none;
}
/* on the profile header the name is large — let the glyph stand as a wordmark */
[data-theme=jem] .user.profile .username .lnk-glyph-inline{height:.86em;vertical-align:-0.1em}
