/* employee.css — Employees (Employee.swift: roster :541, wall :583, desk :1107,
   timeline :809, composer :1691, hand-over :1861). Owned by the Employees
   agent; contract: docs/web-redesign-spec/3-employees.md §3.16.
   Only emp-* classes are defined here; .state .dot .island* .srcs .btn* .chip
   .btnrow .eyebrow .hint .empty .msg .md* .mark .mgr-mark come from base.css.
   Colour: pure black only behind a picture; every tint is a color-mix of a token. */

/* ------------------------------------------------------------- the frame */
.emp-frame{display:flex;flex:1;min-height:0;min-width:0}
.emp-roster{width:var(--roster);flex:none;overflow-y:auto;min-height:0;padding:8px 0;
  border-right:1px solid var(--line);background:color-mix(in srgb,var(--card) 35%,transparent);
  display:flex;flex-direction:column}
.emp-roster>.empty{padding:var(--s-xxl);margin:0}
.emp-room{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;position:relative}

/* ------------------------------------------------------------ the roster */
.emp-row{display:flex;flex-direction:column;align-items:stretch;gap:6px;width:100%;margin:0 0 2px;padding:12px;
  border:0;border-radius:var(--r-md);background:none;color:inherit;text-align:left;cursor:pointer;font-family:inherit}
.emp-row:hover{background:var(--card)}
.emp-row[aria-current="true"]{background:var(--card2)}
.emp-row:focus-visible{outline:2px solid var(--line2);outline-offset:-2px}
.emp-namerow{display:flex;align-items:center;gap:6px;min-width:0}
.emp-namerow>.mark{width:15px;height:15px;margin:0 1px 0 0}
.emp-name{flex:1;min-width:0;font-size:14.5px;font-weight:500;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.emp-line{font-size:12.5px;color:var(--faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4}
.emp-row[data-kind="busy"] .emp-line,.emp-row[data-kind="warn"] .emp-line,.emp-row[data-kind="bad"] .emp-line{color:var(--muted)}
.emp-still{position:relative;width:228px;max-width:100%;aspect-ratio:16/10;border-radius:var(--r-md);overflow:hidden;background:#000;
  border:1px solid var(--line2);flex:none}
.emp-row[data-kind="busy"] .emp-still{border-color:color-mix(in srgb,var(--text) 60%,transparent)}
/* A desk is 1280x800: every picture of one is 16:10 and shown whole, never cropped to fill its box. */
.emp-still img{display:block;width:100%;height:100%;object-fit:contain}
.emp-age{position:absolute;right:6px;bottom:6px;font-size:11px;color:var(--faint);font-variant-numeric:tabular-nums;line-height:1.3;
  padding:2px 6px;border-radius:var(--r-sm);background:color-mix(in srgb,var(--bg) 72%,transparent);white-space:nowrap;pointer-events:none}
.emp-foot{padding:12px;margin-top:auto;display:flex;flex-direction:column;gap:10px}
.emp-learned{background:color-mix(in srgb,var(--card) 50%,transparent);border-radius:var(--r-sm);padding:8px 12px;display:flex;flex-direction:column;gap:2px}
.emp-learned>header{display:flex;align-items:center;gap:6px;min-height:22px;color:var(--faint);margin-bottom:4px}
.emp-learned>header>span{flex:1;min-width:0;font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.emp-learned>header>i{font-style:normal;font-size:11px;color:var(--faint);font-variant-numeric:tabular-nums}
.emp-learned>.hint{margin:6px 0 0}
.emp-skill{display:flex;align-items:center;gap:8px;width:100%;height:28px;padding:0 6px;margin:0 -6px;box-sizing:content-box;
  border:0;border-radius:var(--r-sm);background:none;color:var(--text);font-size:12.5px;text-align:left;cursor:pointer;font-family:inherit}
.emp-skill:hover{background:var(--card)}
.emp-skill>span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.emp-skill>i{font-style:normal;color:var(--faint);font-variant-numeric:tabular-nums}
.emp-hint{font-size:12.5px;color:var(--faint);line-height:1.45}
.emp-roster[data-mode="desk"] .emp-hint{display:none}

/* --------------------------------------------------- the room, team mode */
.emp-scroll{flex:1;min-height:0;overflow-y:auto;padding:12px 24px 0;scrollbar-gutter:stable both-edges}
.emp-feed{max-width:900px;margin:0 auto;display:flex;flex-direction:column;gap:16px;padding-bottom:40px;min-height:100%}
.emp-feed>.empty{padding-top:96px;margin:0 auto}
.emp-feed>.empty>span{color:var(--faint)}
.emp-feed>.msg{border-radius:var(--r-sm);border:1px solid var(--line)}
.emp-said{align-self:flex-end;margin-left:72px;max-width:78%;background:var(--card2);border-radius:var(--r-bubble);padding:10px 15px;
  font-size:14.5px;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--text)}
.emp-said[data-pending]{color:var(--muted)}
.emp-from{display:flex;align-items:flex-start;gap:10px;min-width:0}
.emp-from>.mgr-mark,.emp-thinking>.mgr-mark{width:24px;height:24px;margin-top:1px}
.emp-body{flex:1;min-width:0;padding-top:2px}
.emp-body .srcs{margin-top:10px}
.emp-plain{font-size:14.5px;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere}
.emp-thinking{display:flex;align-items:center;gap:10px;font-size:14.5px;color:var(--muted)}
.emp-thinking>.live-spin{color:var(--muted);margin-left:-2px}
.emp-dock{flex:none;padding:8px 24px 16px;overflow:hidden;scrollbar-gutter:stable both-edges}   /* the same gutters as .emp-scroll: one column edge */
.emp-dock>.island{max-width:900px}   /* the feed's width (§3.6), so cards, bubbles and the island share both edges */

/* ------------------------------------------------------------ job cards */
.emp-job{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:12px;min-width:0;
  display:flex;flex-direction:column;gap:8px;color:var(--text)}
.emp-job[data-state="running"]{border-color:var(--line2)}
.emp-job[data-kind="warn"]{border-color:color-mix(in srgb,var(--warn) 45%,transparent)}
.emp-jobhead{display:flex;align-items:flex-start;gap:8px;min-width:0}
.emp-jobhead>.mark{margin-top:2px}
.emp-jobhead>div{flex:1;min-width:0}
.emp-jobhead>.state{margin-left:auto;margin-top:2px}
.emp-jobtitle{font-size:14.5px;font-weight:500;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.emp-jobwho{font-size:12.5px;color:var(--muted);line-height:1.4}
.emp-jobwho[data-kind="off"]{color:var(--faint)}
.emp-jobnow{font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:-2px}
.emp-jobmeta{font-size:11px;color:var(--faint);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.emp-jobmodels{font-size:11px;color:var(--faint);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.emp-sidesec>.emp-jobmodels{text-align:left}
.emp-ask{display:flex;align-items:flex-start;gap:10px;background:color-mix(in srgb,var(--warn) 10%,transparent);border-radius:var(--r-md);padding:12px}
.emp-ask>svg{color:var(--warn);flex:none;margin-top:3px}
.emp-ask>div{flex:1;min-width:0;font-size:14.5px;line-height:1.45}
.emp-ask .btnrow{margin-top:10px}
.emp-jobreply{display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:0}
.emp-jobreply .md{max-height:calc(1.5em * var(--lines));overflow:hidden}   /* --lines unset → no max-height: the clip is that property alone */
.emp-jobreply>.btn{margin-left:-14px}
.emp-jobreply>.srcs{margin-top:2px}
.emp-joberr{font-size:14.5px;color:var(--bad);line-height:1.45}
.emp-joblatest{display:flex;flex-direction:column;align-items:flex-start;gap:6px;font-size:12.5px;color:var(--muted);line-height:1.45}
.emp-joblatest>div:not(.srcs){display:flex;align-items:flex-start;gap:8px;min-width:0;width:100%}
.emp-joblatest>.srcs{margin-top:0;padding-left:22px}
.emp-jobreply>.emp-jobwho{margin-top:4px}
.emp-joblatest .mgr-mark{width:14px;height:14px;margin-top:2px}
.emp-joblatest>div>span:not(.mgr-mark){flex:1;min-width:0;overflow-wrap:anywhere}
.emp-joblatest time{font-size:11px;color:var(--faint);font-variant-numeric:tabular-nums;flex:none;margin-top:2px}
.emp-joblatest>.btn{margin-left:-14px}
.emp-jobbtns{margin-top:0}
.emp-jobbtns>.btn:first-child{margin-left:-14px}
.emp-job>.btnrow{margin-top:2px}
.emp-jobwhy{font-size:12.5px;color:var(--faint);line-height:1.45}
.emp-job:not(.folded)>:not(.emp-jobhead){margin-left:24px}   /* under the title: 16 mark + 8 gap */
.emp-job.folded{width:100%;padding:8px 12px;border-radius:var(--r-md);gap:4px;text-align:left;cursor:pointer;font-family:inherit}
.emp-job.folded:hover{border-color:var(--line2)}
.emp-job.folded .emp-jobhead{display:flex;align-items:center;gap:8px}
.emp-job.folded .emp-jobhead>.mark{margin:0}
.emp-job.folded .emp-jobtitle{display:block;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4}
.emp-job.folded .emp-jobmeta{font-size:12.5px}
.emp-job.folded .emp-jobhead>.state{margin:0}
.emp-job.folded .emp-jobhead>svg{color:var(--faint);flex:none}
.emp-peek{display:block;padding-left:22px;font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4}
.emp-peek[data-kind="bad"]{color:var(--bad)}
.emp-job[data-flash]{outline:2px solid var(--line2);outline-offset:2px}

/* ------------------------------------- multitask: the tag in the row, the tray above it (§3.8.1) */
.emp-mt-tag{flex:none;display:inline-flex;align-items:center;gap:6px;height:28px;margin-bottom:6px;padding:0 10px;
  border:1px solid var(--line2);border-radius:14px;background:var(--card2);color:var(--text);font-size:12.5px;font-weight:500;
  white-space:nowrap;cursor:pointer;font-family:inherit}
.emp-mt-tag:hover{border-color:var(--text)}
.emp-mt-tag:focus-visible{outline:2px solid var(--line2);outline-offset:2px}
.emp-mt-tag>.dot{width:6px;height:6px}
.emp-mt-tag>svg{color:var(--faint);transition:transform .18s ease-out}
.emp-mt-tag[aria-expanded="true"]>svg{transform:rotate(180deg)}
.emp-mt{display:grid;grid-template-rows:0fr;transition:grid-template-rows .18s ease-out;border-bottom:1px solid transparent;flex:none}
.emp-mt[data-open="true"]{grid-template-rows:1fr;border-bottom-color:var(--line)}
.emp-mt-inner{min-height:0;overflow:hidden}
.emp-mt-head{display:flex;align-items:center;gap:8px;padding:8px 8px 4px 16px}
.emp-mt-head>.eyebrow{margin:0;flex:none}
.emp-mt-head>span:not(.eyebrow){flex:1;min-width:0;font-size:12.5px;color:var(--faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.emp-mt-list{max-height:calc(36px * 5 + 6px);overflow-y:auto;overscroll-behavior:contain;padding:0 6px 6px}
.emp-mt[data-ask="true"] .emp-mt-list{max-height:calc(36px * 3 + 6px)}
/* rows cut off at an edge: that edge fades (a still mask, no motion) */
.emp-mt-list[data-more="top"]{-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 22px);mask-image:linear-gradient(to bottom,transparent 0,#000 22px)}
.emp-mt-list[data-more="bottom"]{-webkit-mask-image:linear-gradient(to top,transparent 0,#000 22px);mask-image:linear-gradient(to top,transparent 0,#000 22px)}
.emp-mt-list[data-more="both"]{-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 22px,#000 calc(100% - 22px),transparent 100%);
  mask-image:linear-gradient(to bottom,transparent 0,#000 22px,#000 calc(100% - 22px),transparent 100%)}
.emp-mt-row{position:relative;display:flex;align-items:center;gap:2px;height:36px;padding:0 4px 0 10px;border-radius:var(--r-sm);
  animation:emp-mt-in .15s ease-out}
.emp-mt-row:hover{background:var(--card2)}
.emp-mt-open{flex:1;min-width:0;height:100%;display:flex;align-items:center;gap:8px;padding:0;border:0;background:none;color:inherit;
  text-align:left;cursor:pointer;font-family:inherit}
.emp-mt-open:focus-visible{outline:2px solid var(--line2);outline-offset:-2px;border-radius:var(--r-sm)}
.emp-mt-open>.mark,.emp-mt-open>.mgr-mark{width:14px;height:14px;flex:none}
.emp-mt-open>.state{flex:none}
.emp-mt-title{flex:1;min-width:0;font-size:12.5px;font-weight:500;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.emp-mt-who{flex:none;max-width:32%;font-size:12.5px;color:var(--faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.emp-mt[data-narrow="true"] .emp-mt-who{display:none}
.emp-mt-age{flex:none;width:48px;text-align:right;font-size:11px;color:var(--faint);font-variant-numeric:tabular-nums;white-space:nowrap}
.emp-mt-acts{flex:none;display:flex;align-items:center;justify-content:flex-end;gap:2px;width:calc(var(--h-chip) * 2 + 2px)}
.emp-mt-acts>.xbtn{flex:none}
/* line 2 while in flight (W1, 3-employees-anatomy.md A.2): the row grows to 52 (30 + 18 + the track), line 1 stays today's */
.emp-mt-row[data-step]{height:52px;align-items:flex-start}
.emp-mt-row[data-step]>.emp-mt-acts{height:30px}
.emp-mt-row[data-step] .emp-mt-open{flex-wrap:wrap;align-content:flex-start;row-gap:0}
.emp-mt-row[data-step] .emp-mt-open::after{content:"";order:1;flex-basis:100%;height:0}   /* the break between the two lines */
.emp-mt-row[data-step] .emp-mt-title{line-height:30px}
.emp-mt-step,.emp-mt-model,.emp-mt-usd{order:2;font-size:11px;line-height:18px;white-space:nowrap}
.emp-mt-step{flex:1 1 0;min-width:0;margin-left:22px;color:var(--muted);overflow:hidden;text-overflow:ellipsis}   /* under the title: mark 14 + gap 8 */
.emp-mt-model{flex:none;max-width:30%;margin-left:auto;color:var(--faint);overflow:hidden;text-overflow:ellipsis}
.emp-mt-usd{flex:none;margin-left:auto;color:var(--faint);font-variant-numeric:tabular-nums}
.emp-mt-model+.emp-mt-usd{margin-left:0}
.emp-mt-bar{position:absolute;left:10px;right:10px;bottom:1px;height:2px;border-radius:1px;pointer-events:none}
.emp-mt-row[data-kind="busy"] .emp-mt-bar{background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--text) 55%,transparent),transparent) no-repeat;
  background-size:35% 100%;animation:emp-mt-sweep 1.6s linear infinite}
.emp-mt-row[data-kind="warn"] .emp-mt-bar{background:color-mix(in srgb,var(--warn) 60%,transparent)}
.emp-mt-row[data-kind="ok"] .emp-mt-bar{background:color-mix(in srgb,var(--ok) 60%,transparent);transform-origin:left;animation:emp-mt-fill .3s ease-out}
.emp-mt-row[data-kind="bad"] .emp-mt-bar{background:color-mix(in srgb,var(--bad) 60%,transparent)}
@keyframes emp-mt-sweep{from{background-position:-60% 0}to{background-position:160% 0}}
@keyframes emp-mt-fill{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes emp-mt-in{from{opacity:0;transform:translateY(4px)}}
@media (max-height:799px){.emp-mt-list{max-height:calc(36px * 3 + 6px)}}
@media (prefers-reduced-motion:reduce){.emp-mt-row[data-kind="busy"] .emp-mt-bar{background:color-mix(in srgb,var(--text) 30%,transparent)}}

/* a web source's site mark on its chip (Chat draws the same tile) */
.emp-fav{width:14px;height:14px;flex:none;display:grid;place-items:center;overflow:hidden;border-radius:4px;background:var(--card2);
  color:var(--muted);font-size:11px;font-weight:600;line-height:1}
.emp-fav img{display:block;width:14px;height:14px;border-radius:3px;object-fit:cover}

/* ------------------------------------------------- Connect tools: the sheet's rows, the form, the desk (§3.8.2) */
.emp-login-mark{display:inline-grid;place-items:center;width:20px;height:20px;flex:none;border-radius:6px;background:var(--card2);
  color:var(--muted);font-size:11px;font-weight:600;line-height:1}
.emp-login-chips{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;min-width:0}
.emp-login-chips>.chip{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--muted)}
.emp-login-chips:has(>.f){flex-wrap:nowrap;margin-top:0}
.emp-login-chips>.f{flex:1;width:auto;min-width:0}
.emp-login-chips>.check{font-size:12.5px;align-items:center;min-width:120px}
.trow:has(.emp-login-chips){align-items:flex-start;padding:12px 0}
.trow:has(.emp-login-chips)>.port-logo,.trow:has(.emp-login-chips)>.emp-login-mark{margin-top:1px}
.trow:has(.emp-login-chips) .emp-name{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.trow:has(.emp-login-chips)>.trail{display:flex;flex-direction:column;align-items:flex-end;gap:4px;white-space:nowrap;padding-top:2px}
.trow:has(.emp-login-chips)>.btnrow{margin:0;flex:none;flex-wrap:nowrap;gap:0}
.emp-sidesec>.emp-jobwho:has(>.emp-login-mark),.emp-sidesec>.emp-jobwho:has(>.port-logo){display:flex;align-items:center;gap:8px;min-width:0}
.emp-sidesec>.emp-jobwho>.emp-login-mark,.emp-sidesec>.emp-jobwho>.port-logo{width:16px;height:16px;border-radius:5px;font-size:11px}
.emp-sidesec>.emp-jobwho>span:last-child{min-width:0;overflow-wrap:anywhere}

/* ---------------------------------------------------------- the island */
.emp-frame .island-to>span:first-child{font-size:12.5px;color:var(--faint)}
.emp-frame .island-to .chip{color:var(--text);gap:6px}
.emp-frame .island-to .chip .xbtn{margin-right:-6px}
.emp-frame .island-files .chip[aria-busy="true"]{color:var(--faint)}
.emp-frame .island-ask .emp-jobwho{color:var(--faint);margin-left:2px}
.emp-frame .island-ask .emp-jobwho~.btn{height:22px;padding:0 6px;margin-left:-2px}
.emp-frame .island-ask .btn+.emp-jobwho{margin-left:-12px}   /* the "," hugs the name before it (the button's 6 px pad and the gap) */

/* the mention popover — above the island, positioned by the one cssText */
.emp-mention{position:absolute;z-index:5;width:290px;background:var(--card);border:1px solid var(--line2);border-radius:var(--r-md);padding:6px;
  display:flex;flex-direction:column;gap:1px;max-height:287px;overflow-y:auto}
.emp-mrow{display:flex;align-items:center;gap:8px;width:100%;min-height:34px;flex:none;padding:4px 8px;border:0;border-radius:var(--r-sm);background:none;
  color:var(--text);font-size:14.5px;text-align:left;cursor:pointer;font-family:inherit;min-width:0}
.emp-mrow:hover,.emp-mrow[aria-current="true"]{background:var(--card2)}
.emp-mrow .mgr-mark{width:14px;height:14px}
.emp-mrow>span{flex:none;white-space:nowrap}
.emp-mrow>i{font-style:normal;font-size:12.5px;line-height:1.35;color:var(--muted);flex:1;min-width:0;overflow-wrap:anywhere}   /* wraps to a second line rather than cut */
.emp-mrow>.state{margin-left:auto}

/* ------------------------------------------------------------- the desk */
.emp-headname{font-size:14.5px;font-weight:500;color:var(--text);white-space:nowrap}
.emp-strip{flex:none;display:flex;align-items:center;gap:12px;min-height:44px;padding:12px 24px;border-bottom:1px solid var(--line);
  font-size:14.5px;color:var(--muted);line-height:1.45}
.emp-strip>svg{flex:none}
.emp-strip>div:not(.btnrow){flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.emp-strip>div>b{font-weight:500;color:var(--text);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.emp-strip>div>span{font-size:12.5px;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.emp-strip>div>span:only-child{font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.emp-strip>.btnrow{margin:0;flex:none;flex-wrap:nowrap}   /* the sentence wraps before a button drops */
.emp-strip.is-warn{background:color-mix(in srgb,var(--warn) 10%,transparent)}
.emp-strip.is-warn>svg{color:var(--warn)}
.emp-strip.is-ok{background:color-mix(in srgb,var(--ok) 10%,transparent)}
.emp-strip.is-ok>svg{color:var(--ok)}
.emp-deskbody{flex:1;min-height:0;display:flex;min-width:0}
.emp-screen{flex:1;min-width:0;position:relative;background:var(--bg);padding-bottom:112px;overflow:hidden}   /* the island's 95 + 16 + 1: nothing of the picture lies under it */
.emp-screen.is-shot{background:#000}
.emp-big{position:absolute;left:0;top:0;right:0;bottom:112px;width:100%;height:calc(100% - 112px);object-fit:contain;display:block}
.emp-deskdock>.emp-age{right:auto;left:0;bottom:calc(100% + 8px)}   /* just above the island, whatever its height */
.emp-noshot{position:absolute;left:0;top:0;right:0;bottom:112px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;
  color:var(--faint);padding:24px;text-align:center}
.emp-noshot>span{font-size:14.5px;color:var(--muted)}
.emp-deskdock{position:absolute;left:24px;right:24px;bottom:16px;z-index:2}   /* menus opening up from the island stay above the live screen */
.emp-deskdock textarea::placeholder{white-space:normal;max-height:1.45em;overflow:hidden}   /* a narrow island cuts the placeholder at a word, one line; Chrome will not ellipsize one */
  display:flex;flex-direction:column}
.emp-sidesec{padding:12px 16px;border-bottom:1px solid var(--line);display:flex;flex-direction:column;align-items:flex-start;gap:6px;
  font-size:14.5px;line-height:1.45;min-width:0}
.emp-sidesec:last-child{border-bottom:0}
.emp-sidesec>b{font-weight:500}
.emp-sidesec>div{min-width:0;width:100%;overflow-wrap:anywhere}
.emp-sidesec>.emp-jobmeta{font-size:12.5px;text-align:left}
.emp-sidesec>.emp-ask{width:100%}
.emp-sidesec>.emp-job.folded{background:none;border-color:transparent;padding:4px 0;max-width:none}
.emp-sidesec>.emp-job.folded:hover{background:color-mix(in srgb,var(--card2) 60%,transparent)}
.emp-sidesec>.emp-jobreply,.emp-sidesec>.emp-peek{padding-left:0;white-space:normal}
.emp-sidesec>.emp-joberr{font-size:12.5px}
.emp-sidesec>.btn{margin-left:-14px}
.emp-sidehead{display:flex;align-items:baseline;gap:8px;width:100%;min-width:0}
.emp-sidehead>.eyebrow{margin:0;flex:1;min-width:0}
.emp-sidehead>span:last-child:not(.eyebrow){font-size:12.5px;color:var(--faint);font-variant-numeric:tabular-nums;white-space:nowrap}

/* ------------------------------------------------------------- the wall */
.emp-room>.emp-wall{flex:1;min-height:0;overflow-y:auto;padding:24px;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,340px));
  gap:12px;justify-content:start;align-content:start}
.emp-room>.emp-wall>.empty{grid-column:1/-1;margin:auto}
.emp-tile{display:flex;flex-direction:column;align-items:stretch;gap:6px;padding:0;border:0;background:none;color:inherit;text-align:left;
  cursor:pointer;font-family:inherit;min-width:0}
.emp-tile:focus-visible{outline:2px solid var(--line2);outline-offset:2px;border-radius:var(--r-md)}
.emp-tile-shot{position:relative;aspect-ratio:16/10;border-radius:var(--r-md);background:var(--card);border:1px solid var(--line2);overflow:hidden;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--faint);transition:border-color .12s ease}
.emp-tile:hover .emp-tile-shot{border-color:var(--text)}
.emp-tile[data-kind="busy"] .emp-tile-shot{border-color:color-mix(in srgb,var(--text) 60%,transparent)}
.emp-tile[data-kind="warn"] .emp-tile-shot{border-color:color-mix(in srgb,var(--warn) 60%,transparent)}
.emp-tile-shot.is-shot{background:#000;display:block}
.emp-tile-shot.is-shot img{display:block;width:100%;height:100%;object-fit:contain}
.emp-tile-shot:not(.is-shot)>span{font-size:12.5px;color:var(--muted)}
.emp-tile-name{display:flex;align-items:center;gap:6px;min-width:0}
.emp-tile-name>span:not(.state){flex:1;min-width:0;font-size:12.5px;font-weight:500;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.emp-tile-line{font-size:12.5px;color:var(--muted);line-height:1.45;min-height:36px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* ------------------------------------------- the request view (3-employees-anatomy.md A.9) */
/* One block from Enter to its fold. Motion: emp-mt-fill on a phase or segment turning done, one reversed
   emp-mt-sweep on the doing phase while fresh, emp-mt-in on first appearances, emp-step-in on changed words. */
.emp-req{max-width:640px}
.emp-req[data-state="sending"],.emp-req[data-state="queued"],.emp-req[data-state="confirmed"],.emp-req[data-state="sent"]{border-color:var(--line2)}
.emp-jobhead>.mgr-mark{width:16px;height:16px;flex:none;margin-top:2px}
.emp-reqclock{flex:none;margin-top:3px;font-size:11px;line-height:1.35;color:var(--faint);font-variant-numeric:tabular-nums;white-space:nowrap}
.emp-req .emp-jobwho{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}   /* one line at every width; the whole list is its title */
.emp-reqsum{display:flex;align-items:center;gap:8px;min-width:0;height:28px;padding:0 6px;border:0;border-radius:var(--r-sm);background:none;
  color:var(--muted);font-size:12.5px;text-align:left;cursor:pointer;font-family:inherit}
.emp-reqsum:hover{background:var(--card2)}
.emp-reqsum:focus-visible{outline:2px solid var(--line2);outline-offset:-2px}
.emp-reqsum>svg{flex:none;color:var(--faint);transition:transform .18s ease-out}
.emp-reqsum[aria-expanded="true"]>svg{transform:rotate(90deg)}
.emp-reqsum>span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
.emp-reqbody{display:grid;grid-template-rows:1fr;min-width:0;transition:grid-template-rows .24s ease-out}
.emp-reqbody[data-open="false"]{grid-template-rows:0fr;transition-duration:.2s;transition-timing-function:ease-in}
.emp-reqbody>div{min-height:0;min-width:0;overflow:hidden}
.emp-req[data-leaving]{opacity:0;overflow:hidden;padding-top:0;padding-bottom:0;pointer-events:none;
  transition:opacity .2s ease-in,height .2s ease-in,padding .2s ease-in}

/* the steps (2026-09-15, replacing the four bars): plain words, a check / a spinner / a circle, the time each took;
   the running step shimmers and its details hang under it */
.emp-rail{display:flex!important;flex-direction:column;gap:0;margin:12px 0 2px;padding:0;list-style:none;min-width:0}
.emp-rail>.emp-stage{display:block;flex:none;min-width:0}
.emp-stage-row{display:grid;grid-template-columns:18px minmax(0,1fr) auto;align-items:center;column-gap:10px;min-height:28px}
.emp-stage-icon{position:relative;display:block;box-sizing:border-box;width:16px;height:16px;justify-self:center;border-radius:50%}
.emp-stage[data-state="todo"] .emp-stage-icon{border:1.5px solid var(--line2)}
.emp-stage[data-state="done"] .emp-stage-icon,.emp-lane[data-state="ok"]>.emp-lane-icon{background:var(--muted)}
.emp-stage[data-state="done"] .emp-stage-icon::after,.emp-lane[data-state="ok"]>.emp-lane-icon::after{content:"";position:absolute;left:5.5px;top:3px;width:3.5px;height:7px;
  border:solid var(--card);border-width:0 1.8px 1.8px 0;transform:rotate(45deg)}
.emp-stage[data-state="doing"] .emp-stage-icon,.emp-lane[data-state="busy"]>.emp-lane-icon{border:2px solid color-mix(in srgb,var(--text) 20%,transparent);border-top-color:var(--text);
  animation:live-spin .75s linear infinite}
.emp-stage[data-state="warn"] .emp-stage-icon,.emp-lane[data-state="warn"]>.emp-lane-icon{background:var(--warn);box-shadow:0 0 0 0 color-mix(in srgb,var(--warn) 50%,transparent);
  animation:emp-attn 1.8s ease-out infinite}
.emp-stage[data-state="bad"] .emp-stage-icon,.emp-lane[data-state="bad"]>.emp-lane-icon{background:var(--bad)}
.emp-stage[data-state="off"] .emp-stage-icon,.emp-lane[data-state="off"]>.emp-lane-icon{border:1.5px solid var(--faint)}
@keyframes emp-attn{70%{box-shadow:0 0 0 6px transparent}100%{box-shadow:0 0 0 0 transparent}}
.emp-rail .emp-stage-name{font-size:14px;line-height:1.4;color:var(--faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.emp-stage[data-state="done"] .emp-stage-name{color:var(--muted)}
.emp-stage[data-state="doing"] .emp-stage-name{font-weight:600;color:var(--text)}
.emp-stage[data-state="warn"] .emp-stage-name{font-weight:600;color:var(--warn)}
.emp-stage[data-state="bad"] .emp-stage-name{color:var(--bad)}
.emp-stage-time{font-size:12.5px;color:var(--faint);font-variant-numeric:tabular-nums}
.emp-stage[data-state="doing"] .emp-stage-time{color:var(--muted)}
.emp-stage-detail{display:flex;flex-direction:column;min-width:0;margin:0 0 8px 8px;padding:2px 0 2px 19px;border-left:1.5px solid var(--line)}
.emp-rail+.emp-stage-detail{margin-left:0;padding-left:0;border-left:0}
.emp-stage-detail>.emp-doing{margin-top:0}
.emp-stage-detail>.emp-doing>.mgr-mark{display:none}
.emp-stage-detail .emp-doing-text{font-size:13.5px;font-weight:400;color:var(--muted);white-space:normal}
.emp-stage-detail>.emp-lanes{margin-top:8px;padding-top:0;border-top:0;gap:10px}
.emp-stage-detail:has(>.emp-lanes)>.emp-plan{display:none}   /* once employees are on it, their rows are the plan */

/* the four phases: names only, the doing one swept against the direction of progress */
.emp-rail{display:flex;gap:4px;margin:8px 0 0;padding:0;list-style:none;min-width:0}
.emp-stage{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:4px}
.emp-stage[data-key="working"]{flex-grow:3}
.emp-stage-bar{position:relative;display:flex;gap:2px;height:3px;border-radius:1.5px;background:var(--line);overflow:hidden}
.emp-stage[data-state="done"] .emp-stage-bar{background:var(--muted)}
.emp-stage[data-state="doing"] .emp-stage-bar,.emp-stage[data-state="off"] .emp-stage-bar{background:var(--line2)}
.emp-stage[data-state="warn"] .emp-stage-bar{background:color-mix(in srgb,var(--warn) 60%,transparent)}
.emp-stage[data-state="bad"] .emp-stage-bar{background:color-mix(in srgb,var(--bad) 60%,transparent)}
.emp-stage[data-fill] .emp-stage-bar,.emp-seg[data-fill]{transform-origin:left;animation:emp-mt-fill .16s cubic-bezier(.2,.8,.2,1)}
.emp-stage-bar:has(>.emp-seg){background:none}   /* Working with lanes: one segment each, the gaps show the card */
.emp-seg{flex:1 1 0;min-width:0;height:3px;border-radius:1.5px;background:var(--line)}
.emp-stage[data-state="doing"] .emp-seg,.emp-stage[data-state="off"] .emp-seg{background:var(--line2)}
.emp-stage[data-state="warn"] .emp-seg{background:color-mix(in srgb,var(--warn) 60%,transparent)}
.emp-stage[data-state="bad"] .emp-seg{background:color-mix(in srgb,var(--bad) 60%,transparent)}
.emp-stage .emp-seg[data-state="done"],.emp-stage[data-state="done"] .emp-seg{background:var(--muted)}
.emp-stage-band{position:absolute;inset:0;z-index:1;pointer-events:none}
.emp-req[data-fresh="true"] .emp-stage[data-state="doing"]:not([data-key="working"]) .emp-stage-bar,
.emp-req[data-fresh="true"] .emp-stage[data-key="working"][data-state="doing"] .emp-stage-band{
  background-image:linear-gradient(90deg,transparent,color-mix(in srgb,var(--text) 85%,transparent),transparent);background-repeat:no-repeat;
  background-size:40% 100%;animation:emp-mt-sweep 1.6s linear infinite reverse}
.emp-stage-name{font-size:11px;line-height:1.35;color:var(--faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.emp-stage[data-state="doing"] .emp-stage-name{color:var(--text)}
.emp-stage[data-state="warn"] .emp-stage-name{color:var(--warn)}

/* the one live sentence, the plan under it */
.emp-doing{display:flex;align-items:center;gap:8px;min-width:0;min-height:20px;margin-top:8px}
.emp-doing>.mgr-mark{width:14px;height:14px;flex:none}
/* a model call writing right now (its count rose since the last read): a ring leaves the mark (A.9 §2 M7) */
.emp-doing>.mgr-mark,.emp-lane{position:relative}
.emp-doing[data-stream]>.mgr-mark::after,.emp-lane[data-stream]::before{content:"";position:absolute;inset:-3px;border-radius:50%;pointer-events:none;
  border:1.5px solid color-mix(in srgb,var(--text) 70%,transparent);animation:emp-stream 1.1s cubic-bezier(.2,.8,.2,1) infinite}
.emp-lane[data-stream]::before{inset:auto;left:-3px;top:-1px;width:20px;height:20px;box-sizing:border-box}   /* over the lane's 14 px mark: an img draws no ::after */
@keyframes emp-stream{from{opacity:.9;transform:scale(.75)}to{opacity:0;transform:scale(1.35)}}
.emp-doing-text{flex:1;min-width:0;font-size:12.5px;font-weight:500;line-height:1.45;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.emp-doing[data-kind="warn"]>.emp-doing-text{color:var(--warn)}
.emp-doing-text[data-in],.emp-lane-step[data-in]{animation:emp-step-in .26s cubic-bezier(.2,.8,.2,1)}
.emp-plan{margin:4px 0 0;padding:0 0 0 22px;list-style:decimal inside;min-width:0}
.emp-plan>li{font-size:12.5px;line-height:18px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.emp-plan>li::marker{color:var(--faint);font-variant-numeric:tabular-nums}
.emp-plan>li[data-in],.emp-lane[data-in],.emp-lanes-more[data-in]{animation:emp-mt-in .18s cubic-bezier(.2,.8,.2,1)}

/* the lanes: one per employee on the request */
.emp-lanes{display:flex;flex-direction:column;gap:8px;min-width:0;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
.emp-lane{display:grid;grid-template-columns:14px minmax(0,1fr) auto;column-gap:8px;row-gap:2px;align-items:start;min-width:0}
.emp-lane>.mark{grid-column:1;grid-row:1;width:14px;height:14px;margin:2px 0 0}
.emp-lane>.emp-lane-icon{grid-column:1;grid-row:1;position:relative;display:block;box-sizing:border-box;width:14px;height:14px;margin:2px 0 0;border-radius:50%}
.emp-lane[data-state="ok"]>.emp-lane-icon::after{left:4.5px;top:2.2px;width:3px;height:6px}
/* busy: the step it is on, nothing else — what it read shows once it has finished */
.emp-req:not([data-expanded="true"]) .emp-lane[data-state="busy"] .emp-lane-trail,
.emp-req:not([data-expanded="true"]) .emp-lane[data-state="busy"] .emp-lane-srcs{display:none}
.emp-doing[data-stream]>.mgr-mark::after,.emp-lane[data-stream]::before{display:none}
.emp-lane-head{grid-column:2;grid-row:1;display:flex;align-items:baseline;gap:6px;min-width:0;font-size:12.5px;line-height:1.45}
.emp-lane-task{flex:0 1 auto;min-width:0;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.emp-req:not([data-narrow="true"]) .emp-lane-task{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}   /* two lines before it is cut */
.emp-lane-name{flex:none;color:var(--faint);white-space:nowrap}
.emp-lane-task[hidden]+.emp-lane-name{color:var(--text)}
.emp-lane-head>.state{flex:none;margin-left:auto}
.emp-lane-meta{flex:none;margin-left:auto;font-size:11px;color:var(--faint);font-variant-numeric:tabular-nums;white-space:nowrap}
.emp-lane-head>.state+.emp-lane-meta{margin-left:0}
.emp-lane-step{grid-column:2;grid-row:2;min-width:0;font-size:12.5px;font-weight:500;line-height:1.45;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.emp-lane-step>i{font-style:normal;font-weight:400;font-size:11px;color:var(--faint);font-variant-numeric:tabular-nums}
.emp-lane:not([data-state="busy"]):not([data-state="warn"]) .emp-lane-step,.emp-lane[data-fresh="false"] .emp-lane-step{font-weight:400;color:var(--muted)}
.emp-lane-trail{grid-column:2;grid-row:3;min-width:0;margin:0;padding:0;list-style:none}
.emp-lane-trail>li{font-size:12.5px;line-height:18px;color:var(--faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.emp-lane-trail>li>i{font-style:normal;font-size:11px;color:var(--faint);font-variant-numeric:tabular-nums;margin-right:6px}
.emp-req[data-expanded="true"] .emp-lane-trail>li{color:var(--muted)}
.emp-lane-srcs{grid-column:2;grid-row:4;min-width:0}
.emp-lane .emp-lane-srcs{margin-top:4px}
.emp-lane-srcs>[data-in]{animation:emp-mt-in .15s cubic-bezier(.2,.8,.2,1) backwards}
.emp-lane-srcs>[data-in="1"]{animation-delay:60ms}
.emp-lane-srcs>[data-in="2"]{animation-delay:120ms}
.emp-lane-act{grid-column:3;grid-row:1/span 4;display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.emp-lane-act>.btn{font-size:12.5px;border-color:color-mix(in srgb,var(--warn) 60%,transparent)}
.emp-lane-shot{display:block;width:64px;height:40px;padding:0;border:1px solid var(--line2);border-radius:8px;overflow:hidden;background:#000;cursor:pointer}
.emp-lane-shot:empty{display:none}
.emp-lane-shot:hover{border-color:var(--text)}
.emp-lane-shot:focus-visible,.emp-lane-stop:focus-visible{outline:2px solid var(--line2);outline-offset:2px}
.emp-lane-shot img{display:block;width:100%;height:100%;object-fit:contain}
.emp-lane-stop{height:20px;padding:0 6px;border:0;border-radius:var(--r-sm);background:none;color:var(--faint);font-size:11px;cursor:pointer;font-family:inherit}
.emp-lane-stop:hover{color:var(--text)}
.emp-lanes-more{align-self:flex-start;margin-left:8px;font-size:12.5px}

/* narrow blocks (< 520): four bars, no thumbnails, the lane's figures under its name */
.emp-req[data-narrow="true"] .emp-stage-name,.emp-req[data-narrow="true"] .emp-lane-shot{display:none}
.emp-req[data-narrow="true"] .emp-lane-head{flex-wrap:wrap;row-gap:0}
.emp-req[data-narrow="true"] .emp-lane-meta{flex-basis:100%;margin-left:0}

/* needs you, inside the block: its own answer field (or Take over), one Tab from the head */
.emp-askrow{display:flex;align-items:center;gap:8px;margin-top:8px;min-width:0}
.emp-askin{flex:1;min-width:0;height:30px;padding:0 10px;border:1px solid var(--line2);border-radius:var(--r-sm);background:var(--bg);
  color:var(--text);font-family:inherit;font-size:14.5px}
.emp-askin::placeholder{color:var(--faint)}
.emp-askin:focus-visible{outline:2px solid color-mix(in srgb,var(--warn) 60%,transparent);outline-offset:1px}
.emp-stopnote{align-self:center;font-size:11px;color:var(--faint)}

/* "Go to the latest": bottom centre of the feed while the reader is scrolled up */
.emp-jump{position:sticky;bottom:12px;z-index:2;display:block;max-width:min(480px,calc(100% - 32px));margin:-38px auto 12px;padding:4px 10px;
  border:1px solid var(--line2);border-radius:999px;background:var(--card);color:var(--text);font-size:12.5px;line-height:18px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;font-family:inherit}
.emp-jump:hover{border-color:var(--text)}
.emp-jump:focus-visible{outline:2px solid var(--line2);outline-offset:2px}
@keyframes emp-step-in{from{opacity:0;transform:translateY(3px)}}
@media (prefers-reduced-motion:reduce){
  .emp-stage[data-state="doing"]:not([data-key="working"]) .emp-stage-bar,.emp-stage[data-key="working"][data-state="doing"] .emp-stage-bar:not(:has(>.emp-seg)),
  .emp-stage[data-key="working"][data-state="doing"] .emp-seg:not([data-state="done"]){background:color-mix(in srgb,var(--text) 30%,transparent)}
  .emp-stage-band{display:none}
  .emp-doing[data-stream]>.mgr-mark::after,.emp-lane[data-stream]::before{opacity:.6;transform:none}   /* still: the ring stands while it writes */
}

/* ------------------------------------------------------------ the widths */
@media (max-width:1180px){
}
@media (max-width:939px){
  .emp-line,.emp-still{display:none}
}
/* below 600 px the Employees page takes the whole width: the rail becomes a menu over the page, the roster steps aside */
.emp-railbtn{display:none}
@media (max-width:599px){
  .app:has(.emp-frame){grid-template-columns:minmax(0,1fr)}
  .app:has(.emp-frame)>aside#rail{position:fixed;z-index:60;top:0;bottom:0;left:0;width:min(var(--rail),86vw);transform:translateX(-100%);visibility:hidden;
    transition:transform .2s ease-in,visibility 0s linear .2s}
  .app[data-emp-rail="open"]:has(.emp-frame)>aside#rail{transform:none;visibility:visible;transition:transform .24s ease-out;
    box-shadow:0 0 0 100vmax color-mix(in srgb,var(--bg) 70%,transparent)}
  .emp-railbtn{display:inline-grid;place-items:center;width:30px;height:30px;padding:0;margin-left:-6px;color:var(--text)}
  .page-head.emp-mac .page-title-row:has(>#emp-head-lead>.emp-railbtn){display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:6px;align-content:center}
  .page-head.emp-mac #emp-head-lead:has(>.emp-railbtn){grid-row:1/span 2}
  .emp-frame .emp-roster[data-mode="team"]{display:none}
  .emp-scroll{padding:12px 16px 0}
  .emp-dock{padding:8px 16px 16px}
}

/* take over: the employee's live screen over the still, your mouse and keyboard on it */
.emp-live{position:absolute;left:0;right:0;top:0;bottom:112px;background:#000;z-index:1;pointer-events:none}   /* the still's box; watching takes no input */
.emp-live.is-control{pointer-events:auto}
.emp-liveview{position:absolute;inset:0;overflow:hidden}
.emp-livebadge{position:absolute;top:12px;left:50%;transform:translateX(-50%);z-index:2;padding:6px 14px;border-radius:999px;
  background:#fff;color:#111;font-size:12.5px;font-weight:600;white-space:nowrap;pointer-events:none;
  box-shadow:0 0 0 1px rgba(0,0,0,.18),0 4px 18px rgba(0,0,0,.45)}   /* reads on the black letterbox and on a white page */
.emp-takebtn{min-width:172px;justify-content:center}   /* Take over and Done — hand back take the same room: the strip does not reflow */
.emp-screen.is-live .emp-deskdock>.emp-age{visibility:hidden}   /* its time belongs to the still */

/* the manager's question as choices, under the thread; its recommendation first */
.emp-choices{display:flex;flex-wrap:wrap;gap:8px;margin:-2px 0 6px 36px}
.emp-choice{display:inline-flex;align-items:center;gap:8px}
.emp-rectag{font-size:10.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;opacity:.72}

/* "Clear chat" leaves one quiet line where the earlier conversation was, and the way back */
.emp-cleared{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:var(--s-s) var(--s-m);
  padding:var(--s-m) 0 var(--s-l);font-size:12.5px;color:var(--faint);text-align:center}
