/*
 * Layout and type for the rooms page, after the founder's data room designs.
 * Colours, type sizes, spaces and timings are tokens from tokens.css; the
 * literals left here are geometry (column widths, clamps). Structure is
 * spacing and the occasional hairline; the accent marks one thing per screen;
 * amber marks what needs the uploader, red only Removed and errors.
 */
*,
*::before,
*::after{ box-sizing:border-box; }
[hidden]{ display:none !important; }

html,body{ margin:0; background:var(--vlt-bg); color:var(--vlt-ink); }
body{
  font-family:var(--vlt-sans);
  font-size:var(--vlt-t-row);
  line-height:var(--vlt-lh-ui);
  -webkit-font-smoothing:antialiased;
}
p{ margin:0; }
a{ color:var(--vlt-ink-2); }
a:hover{ color:var(--vlt-ink); }
strong{ font-weight:var(--vlt-w-med); color:var(--vlt-ink); }
button{ font:inherit; }
:focus-visible{ outline:var(--vlt-rule) solid var(--vlt-accent); outline-offset:2px; }
main:focus{ outline:none; }

.mono{ font-family:var(--vlt-mono); font-variant-numeric:tabular-nums; }
.muted{ color:var(--vlt-ink-3); }
.strong{ color:var(--vlt-ink); }
.nowrap{ white-space:nowrap; }
.pad{ padding:var(--vlt-s7) 0; }
.offscreen{ position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.skip{ position:absolute; left:var(--vlt-s4); top:calc(-1 * var(--vlt-s9)); z-index:50; padding:var(--vlt-s2) var(--vlt-s3); background:var(--vlt-raise); color:var(--vlt-ink); }
.skip:focus{ top:var(--vlt-s2); }

/* ---- controls ---- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:var(--vlt-s2);
  min-height:var(--vlt-button-h); padding:9px 14px;
  font-family:var(--vlt-sans); font-size:var(--vlt-t-label); font-weight:var(--vlt-w-semi); line-height:1;
  border-radius:var(--vlt-r); border:var(--vlt-rule) solid transparent; cursor:pointer; white-space:nowrap;
  transition:background var(--vlt-fast), border-color var(--vlt-fast), color var(--vlt-fast);
}
.btn-primary{ background:var(--vlt-ink); color:var(--vlt-bg); }
.btn-primary:hover:not(:disabled){ background:var(--vlt-press); }
.btn-ghost{ background:transparent; color:var(--vlt-ink-2); border-color:var(--vlt-line-2); }
.btn-ghost:hover:not(:disabled){ color:var(--vlt-ink); border-color:var(--vlt-line-3); }
.btn:disabled{ opacity:.45; cursor:default; }
.btn[aria-busy="true"]{ cursor:progress; }
.btn-block{ width:100%; min-height:var(--vlt-control-h); }

.link, .link-soft, .link-quiet{
  padding:0; border:0; background:none; cursor:pointer; text-align:left;
  font-size:var(--vlt-t-label); text-decoration:underline; text-underline-offset:3px; text-decoration-thickness:var(--vlt-rule);
  transition:color var(--vlt-fast);
}
.link{ color:var(--vlt-ink); }
.link-soft{ color:var(--vlt-ink-2); }
.link-quiet{ color:var(--vlt-ink-3); }
.link-soft:hover, .link-quiet:hover{ color:var(--vlt-ink); }
.link:disabled, .link-soft:disabled, .link-quiet:disabled{ color:var(--vlt-ink-4); cursor:default; }

/* ---- the frame ---- */
.shell{ position:relative; min-height:100vh; display:flex; flex-direction:column; }
.topbar{
  position:sticky; top:0; z-index:30;
  display:flex; align-items:center; justify-content:space-between; gap:var(--vlt-s4);
  height:var(--vlt-topbar-h); padding:0 clamp(16px,3vw,32px);
  background:var(--vlt-topbar); -webkit-backdrop-filter:blur(12px) saturate(140%); backdrop-filter:blur(12px) saturate(140%);
  border-bottom:var(--vlt-rule) solid var(--vlt-line-2);
}
.brand{ display:flex; align-items:center; gap:14px; text-decoration:none; }
.logo{ height:19px; width:auto; filter:var(--vlt-logo-filter); opacity:var(--vlt-logo-opacity); }
.brand-rule{ width:var(--vlt-rule); height:16px; background:var(--vlt-line-2); }
.brand-tag{ font-size:var(--vlt-t-label); color:var(--vlt-ink-3); }
.topbar-end{ display:flex; align-items:center; gap:18px; min-width:0; font-size:var(--vlt-t-label); }
.who{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--vlt-ink-2); }
.topbar-end .link-quiet{ flex:none; }

.foot{
  position:relative; z-index:2;
  display:flex; flex-wrap:wrap; justify-content:space-between; gap:6px 18px;
  padding:var(--vlt-s4) clamp(16px,3vw,32px);
  background:var(--vlt-bg); border-top:var(--vlt-rule) solid var(--vlt-line-2);
  font-size:var(--vlt-t-foot); color:var(--vlt-ink-3);
}
.foot-link{ color:var(--vlt-ink-3); }

/* the grid and the drawing behind sign-in and messages */
.backdrop{ position:fixed; inset:0; overflow:hidden; pointer-events:none; }
.backdrop-grid{
  position:absolute; inset:0;
  background-image:linear-gradient(to right, var(--vlt-grid) 1px, transparent 1px), linear-gradient(to bottom, var(--vlt-grid) 1px, transparent 1px);
  background-size:var(--vlt-grid-cell) var(--vlt-grid-cell);
}
.backdrop-scene{
  position:absolute; left:0; right:0; bottom:-4%; width:100%; opacity:var(--vlt-scene-opacity);
  -webkit-mask-image:linear-gradient(to bottom, transparent, #000 38%); mask-image:linear-gradient(to bottom, transparent, #000 38%);
}
.stage{ position:relative; z-index:2; flex:1; display:grid; place-items:center; padding:clamp(24px,8vh,96px) clamp(14px,4vw,56px); }
.stage-full{ min-height:100vh; padding:clamp(20px,5vh,64px) clamp(14px,4vw,56px); }

.title{
  margin:0; font-family:var(--vlt-display); font-size:var(--vlt-t-title); font-weight:var(--vlt-w-reg);
  letter-spacing:var(--vlt-track-title); line-height:var(--vlt-lh-tight); color:var(--vlt-ink);
}

/* ---- sign-in and terms ---- */
.signin{ position:relative; width:100%; max-width:var(--vlt-signin-w); background:var(--vlt-bg); border:var(--vlt-rule) solid var(--vlt-line-2); }
.signin.wide{ max-width:var(--vlt-terms-w); }
.signin-head{ display:flex; align-items:center; justify-content:space-between; gap:var(--vlt-s4); padding:var(--vlt-s4) clamp(20px,5vw,32px); border-bottom:var(--vlt-rule) solid var(--vlt-line-2); }
.signin-head .logo{ height:20px; }
.signin-body{ padding:clamp(28px,5vh,40px) clamp(20px,5vw,32px) clamp(26px,4vh,34px); font-size:var(--vlt-t-prose); }
.signin-body .title{ font-size:clamp(25px,6vw,30px); }
.signin-foot{
  display:flex; flex-wrap:wrap; justify-content:space-between; gap:6px var(--vlt-s4);
  padding:14px clamp(20px,5vw,32px); border-top:var(--vlt-rule) solid var(--vlt-line-2);
  font-size:var(--vlt-t-foot); line-height:1.55; color:var(--vlt-ink-3);
}
.field-label{ display:block; margin:28px 0 var(--vlt-s2); font-size:var(--vlt-t-label); color:var(--vlt-ink-2); }
.input{
  width:100%; height:var(--vlt-input-h); padding:0 14px;
  background:var(--vlt-side); border:var(--vlt-rule) solid var(--vlt-line-2); border-radius:var(--vlt-r-sm); outline:none;
  font-family:var(--vlt-sans); font-size:var(--vlt-t-input); color:var(--vlt-ink);
  transition:border-color var(--vlt-fast);
}
.input::placeholder{ color:var(--vlt-ink-3); }
.input:focus{ border-color:var(--vlt-bone-42); }
.input[aria-invalid="true"]{ border-color:var(--vlt-risk-elev); }
.field-error{ margin:var(--vlt-s2) 0 0; font-size:var(--vlt-t-label); color:var(--vlt-risk-elev); }
.field-error:empty{ margin:0; }
form > .btn-block{ margin-top:var(--vlt-s5); }
.hint{ margin:var(--vlt-s3) 0 0; font-size:var(--vlt-t-row); color:var(--vlt-ink-3); }
.staff-link{ display:inline-block; margin:var(--vlt-s7) 0 0; font-size:var(--vlt-t-foot); color:var(--vlt-ink-3); }
.lede{ margin:var(--vlt-s3) 0 0; line-height:var(--vlt-lh-prose); color:var(--vlt-ink-2); }
.lede .mono{ font-size:var(--vlt-t-row); }

.cells{ position:relative; margin:26px 0 0; }
.cells.locked{ opacity:.4; }
.cell-row{ display:grid; gap:var(--vlt-s2); }
.cell{
  display:grid; place-items:center; height:var(--vlt-cell-h);
  background:var(--vlt-side); border:var(--vlt-rule) solid var(--vlt-line-2); border-radius:var(--vlt-r-sm);
  font-family:var(--vlt-mono); font-size:var(--vlt-n-code); font-variant-numeric:tabular-nums; color:var(--vlt-ink);
  transition:border-color var(--vlt-fast);
}
.cell.filled{ border-color:var(--vlt-bone-32); }
.cell.active{ border-color:var(--vlt-accent); }
.cell.warn{ border-color:var(--vlt-risk-elev); }
.code-input{
  position:absolute; inset:0; width:100%; height:100%; opacity:0; border:0; padding:0;
  font-size:var(--vlt-t-input); cursor:text; caret-color:transparent;
}
#code-message:not(:empty){ margin:14px 0 0; }
.code-links{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:10px var(--vlt-s5); margin:var(--vlt-s5) 0 0; font-size:var(--vlt-t-row); }
.code-links .link-soft{ font-size:var(--vlt-t-row); text-decoration:none; }
.code-links .muted .mono{ font-size:var(--vlt-t-foot); }

.note{ display:flex; gap:var(--vlt-s3); }
.note-rule{ flex:none; width:var(--vlt-rule-strong); background:var(--vlt-bone-42); }
.note-rule.warn{ background:var(--vlt-risk-elev); }
.note-text{ flex:1; min-width:0; }
.note-title{ font-size:var(--vlt-t-body); line-height:1.55; color:var(--vlt-ink); }
.note-body{ margin:3px 0 0; font-size:var(--vlt-t-row); line-height:1.6; color:var(--vlt-ink-3); }
.note-action{ display:inline-block; margin:6px 0 0; font-size:var(--vlt-t-row); }
.note-bar{ display:block; position:relative; max-width:320px; height:var(--vlt-rule-strong); margin:10px 0 2px; background:var(--vlt-line-2); }
.note-bar-fill{ position:absolute; left:0; top:0; bottom:0; width:0; background:var(--vlt-accent); transition:width 160ms linear; }

.signed-in{ font-size:var(--vlt-n-meta); color:var(--vlt-ink-3); }
.signed-in + .title{ margin-top:var(--vlt-s4); }
.terms-scroll{
  margin:var(--vlt-s6) 0 0; max-height:min(42vh,340px); overflow-y:auto; padding:0 6px 0 0;
  border-top:var(--vlt-rule) solid var(--vlt-line-2); border-bottom:var(--vlt-rule) solid var(--vlt-line-2);
}
.terms-sec{ display:grid; grid-template-columns:30px minmax(0,1fr); gap:10px; padding:14px 0; border-bottom:var(--vlt-rule) solid var(--vlt-line); }
.terms-sec:last-child{ border-bottom:0; }
.terms-n{ font-size:var(--vlt-n-micro); line-height:1.9; color:var(--vlt-ink-3); }
.terms-title{ margin:0; font-size:var(--vlt-t-body); font-weight:var(--vlt-w-med); color:var(--vlt-ink); }
.terms-p, .terms-list{ margin:var(--vlt-s1) 0 0; font-size:var(--vlt-t-body); line-height:var(--vlt-lh-prose); color:var(--vlt-ink-2); }
.terms-p + .terms-p, .terms-list + .terms-p, .terms-p + .terms-list{ margin-top:var(--vlt-s2); }
.terms-list{ padding-left:var(--vlt-s5); }
.terms-version{ margin:var(--vlt-s3) 0 0; font-size:var(--vlt-n-micro); color:var(--vlt-ink-3); }
.check-row{ display:flex; align-items:flex-start; gap:var(--vlt-s3); margin:22px 0 0; }
.check{ flex:none; width:18px; height:18px; margin:1px 0 0; accent-color:var(--vlt-accent); cursor:pointer; }
.check-row label{ font-size:var(--vlt-t-body); line-height:1.5; color:var(--vlt-ink); cursor:pointer; }
.terms-actions{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:14px var(--vlt-s5); margin:22px 0 0; }
.terms-actions .btn{ min-width:140px; min-height:var(--vlt-control-h); }
.terms-actions .link-quiet{ font-size:var(--vlt-t-row); text-decoration:none; }

/* ---- system messages ---- */
.msg-card{ width:100%; max-width:var(--vlt-message-w); background:var(--vlt-bg); border:var(--vlt-rule) solid var(--vlt-line-2); padding:clamp(28px,5vh,44px) clamp(22px,5vw,40px) clamp(26px,4vh,36px); }
.msg-code{ display:flex; align-items:center; gap:10px; font-size:var(--vlt-n-micro); color:var(--vlt-ink-3); }
.msg-mark{ width:7px; height:7px; flex:none; border:var(--vlt-rule) solid var(--vlt-bone-72); }
.msg-mark.red{ border-color:var(--vlt-risk-high); }
.msg-mark.amber{ border-color:var(--vlt-risk-elev); }
.msg-title{
  margin:18px 0 0; font-family:var(--vlt-display); font-size:clamp(25px,5vw,var(--vlt-t-message)); font-weight:var(--vlt-w-reg);
  letter-spacing:var(--vlt-track-title); line-height:1.22; color:var(--vlt-ink);
}
.msg-title:focus{ outline:none; }
.msg-body{ margin:14px 0 0; max-width:52ch; font-size:var(--vlt-t-prose); line-height:1.7; color:var(--vlt-ink-2); }
.facts{ display:flex; flex-wrap:wrap; margin:var(--vlt-s6) 0 0; padding:14px 0; border-top:var(--vlt-rule) solid var(--vlt-line-2); border-bottom:var(--vlt-rule) solid var(--vlt-line-2); }
.facts div{ flex:1 1 140px; min-width:0; padding:0 18px 0 0; }
.facts dt{ font-size:var(--vlt-t-meta); color:var(--vlt-ink-3); }
.facts dd{ margin:var(--vlt-s1) 0 0; font-size:var(--vlt-t-label); color:var(--vlt-ink); }
.msg-actions{ display:flex; flex-wrap:wrap; align-items:center; gap:14px 22px; margin:28px 0 0; }

/* ---- room list ---- */
.rooms-page{ flex:1; width:100%; max-width:var(--vlt-rooms-w); margin:0 auto; padding:clamp(36px,7vh,72px) clamp(18px,4vw,40px) var(--vlt-s10); }
.rooms-page .title{ font-size:clamp(28px,4vw,34px); }
.rooms-table{ margin:var(--vlt-s7) 0 0; }
.rooms-row{
  display:grid; grid-template-columns:minmax(0,1fr) 110px 130px 130px; gap:var(--vlt-s4); align-items:center;
  height:var(--vlt-room-row-h); border-bottom:var(--vlt-rule) solid var(--vlt-line); text-decoration:none; color:inherit;
  transition:background var(--vlt-fast) ease;
}
a.rooms-row:hover{ background:var(--vlt-wash); color:inherit; }
.rooms-head{ height:28px; border-bottom-color:var(--vlt-line-2); font-size:var(--vlt-t-meta); color:var(--vlt-ink-3); }
.rooms-name{ font-size:var(--vlt-t-input); font-weight:var(--vlt-w-med); color:var(--vlt-ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.rooms-side{ font-size:var(--vlt-t-label); color:var(--vlt-ink-2); }
.rooms-when{ font-size:var(--vlt-t-label); color:var(--vlt-ink-3); }
.rooms-until{ font-size:var(--vlt-n-data); color:var(--vlt-ink-2); }
.rooms-row.is-ended .rooms-name{ color:var(--vlt-ink-3); }
.rooms-empty{ margin:28px 0 0; padding:var(--vlt-s6) 0 0; border-top:var(--vlt-rule) solid var(--vlt-line-2); font-size:var(--vlt-t-lede); line-height:1.7; color:var(--vlt-ink-2); }
.rooms-empty a{ color:var(--vlt-ink); }

/* ---- the room ---- */
.room-page{ flex:1; width:100%; max-width:var(--vlt-content-max); margin:0 auto; padding:30px clamp(16px,3vw,40px) 120px; }
.room-head{ display:flex; flex-wrap:wrap; align-items:baseline; gap:10px var(--vlt-s4); }
.room-head .title{ font-size:clamp(26px,3.4vw,32px); }
.badge{ display:inline-flex; align-items:center; height:22px; padding:0 var(--vlt-s2); border:var(--vlt-rule) solid var(--vlt-line-3); border-radius:var(--vlt-r-sm); font-size:var(--vlt-t-meta); color:var(--vlt-ink-2); }
.room-closed, .room-until{ font-size:var(--vlt-t-label); color:var(--vlt-ink-3); }
.room-until .mono{ font-size:var(--vlt-n-data); color:var(--vlt-ink-2); }

.toolbar{
  display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:var(--vlt-s4) var(--vlt-s6);
  margin:26px 0 0; padding:0 0 14px; border-bottom:var(--vlt-rule) solid var(--vlt-line-2);
}
.toolbar-path{ min-width:0; }
.crumbs{ display:flex; flex-wrap:wrap; align-items:center; gap:var(--vlt-s1) var(--vlt-s2); margin:0; padding:0; list-style:none; font-size:var(--vlt-t-body); }
.crumbs li{ display:flex; align-items:center; gap:var(--vlt-s2); min-width:0; }
.crumb{ color:var(--vlt-ink-3); text-decoration:none; white-space:nowrap; }
.crumb:hover{ color:var(--vlt-ink); }
.crumb.current{ color:var(--vlt-ink); }
.crumb-sep{ color:var(--vlt-ink-4); }
.level-meta{ margin:6px 0 0; font-size:var(--vlt-n-meta); color:var(--vlt-ink-3); }
.toolbar-actions{ display:flex; flex-wrap:wrap; gap:10px; }
.notice-host:not(:empty){ margin:var(--vlt-s4) 0 0; max-width:72ch; }
.note-room .link-quiet{ flex:none; align-self:flex-start; text-decoration:none; }

.drop-target{ position:relative; margin:6px 0 0; min-height:200px; outline:var(--vlt-rule) dashed transparent; outline-offset:4px; border-radius:2px; transition:background var(--vlt-med) var(--vlt-ease), outline-color var(--vlt-med) var(--vlt-ease); }
.drop-target.dragging{ outline-color:var(--vlt-accent); background:var(--vlt-accent-soft); }
.drop-hint{
  position:absolute; left:50%; top:72px; transform:translateX(-50%);
  padding:10px var(--vlt-s4); background:var(--vlt-raise); border:var(--vlt-rule) solid var(--vlt-accent-line); border-radius:var(--vlt-r);
  box-shadow:var(--vlt-elev-pop); font-size:var(--vlt-t-row); white-space:nowrap; color:var(--vlt-ink); pointer-events:none;
}

.list-head, .row-file{ display:grid; gap:var(--vlt-s4); align-items:center; }
.cols-full{ grid-template-columns:minmax(0,1fr) 84px 104px 130px 140px; }
.cols-buyer{ grid-template-columns:minmax(0,1fr) 84px 104px 140px; }
.list-head{ height:var(--vlt-head-h); border-bottom:var(--vlt-rule) solid var(--vlt-line-2); font-size:var(--vlt-t-meta); color:var(--vlt-ink-3); }
.col-sort{ padding:0; border:0; background:none; cursor:pointer; color:var(--vlt-ink-3); font-size:var(--vlt-t-meta); }
.col-sort.active{ color:var(--vlt-ink-2); }
.col-sort:hover{ color:var(--vlt-ink); }
.num{ text-align:right; }

.row-folder{
  display:flex; align-items:center; gap:var(--vlt-s3); height:var(--vlt-folder-h); padding:0 2px;
  border-bottom:var(--vlt-rule) solid var(--vlt-line); text-decoration:none; color:inherit; transition:background var(--vlt-fast) ease;
}
.row-folder:hover{ background:var(--vlt-wash); color:inherit; }
.folder-icon{ display:inline-flex; flex:none; color:var(--vlt-ink-3); }
.folder-name{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:var(--vlt-t-row); color:var(--vlt-ink); }
.folder-meta{ flex:none; font-size:var(--vlt-n-meta); color:var(--vlt-ink-3); }
.folder-chev{ display:inline-flex; flex:none; color:var(--vlt-ink-4); }

.row-file{ min-height:var(--vlt-row-h); border-bottom:var(--vlt-rule) solid var(--vlt-line); transition:background var(--vlt-fast) ease; }
.row-file:hover{ background:var(--vlt-wash); }
.file-cell{ display:flex; align-items:center; gap:var(--vlt-s3); min-width:0; }
.ext{ flex:none; width:15px; font-size:var(--vlt-n-ext); text-align:center; color:var(--vlt-ink-4); }
.file-name{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:var(--vlt-t-row); color:var(--vlt-ink); }
.is-removed .file-name{ color:var(--vlt-ink-3); }
.size{ font-size:var(--vlt-n-data); color:var(--vlt-ink-2); }
.date{ font-size:var(--vlt-n-data); color:var(--vlt-ink-3); }
.status{ display:inline-flex; align-items:center; gap:7px; height:22px; border-radius:var(--vlt-r-sm); font-size:var(--vlt-t-foot); white-space:nowrap; transition:color var(--vlt-slow) ease; }
.status .glyph{ font-size:var(--vlt-n-glyph); }
.status.checking{ color:var(--vlt-ink-3); }
.status.ready{ color:var(--vlt-ink); }
.status.review{ color:var(--vlt-bone-72); }
.status.removed{ padding:0 var(--vlt-s2); color:var(--vlt-risk-high); background:var(--vlt-risk-high-soft); }
.row-actions{ display:flex; justify-content:flex-end; gap:var(--vlt-s4); font-size:var(--vlt-t-label); }
.folder-empty{ padding:28px 0; font-size:var(--vlt-t-body); color:var(--vlt-ink-3); }
.more{ display:flex; justify-content:center; align-items:center; gap:14px; padding:18px 0 var(--vlt-s1); font-size:var(--vlt-t-label); }
.more .mono{ font-size:var(--vlt-n-meta); }

@media (max-width: 999px){
  .cols-full{ grid-template-columns:minmax(0,1fr) 104px 120px 140px; }
  .cols-buyer{ grid-template-columns:minmax(0,1fr) 104px 140px; }
  .list-head .num, .row-file .size{ display:none; }
  .row-file{ padding:6px 0; }
}

.empty-room{
  position:relative; overflow:hidden; margin:30px 0 0; padding:clamp(48px,11vh,120px) clamp(20px,5vw,64px);
  border:var(--vlt-rule) dashed var(--vlt-line-3); border-radius:var(--vlt-r); background:var(--vlt-wash-empty);
  transition:background var(--vlt-med) var(--vlt-ease), border-color var(--vlt-med) var(--vlt-ease);
}
.empty-room.dragging{ border-color:var(--vlt-accent); background:var(--vlt-accent-soft); }
.empty-grid{
  position:absolute; inset:0; pointer-events:none; opacity:.6;
  background-image:linear-gradient(to right, var(--vlt-grid-empty) 1px, transparent 1px), linear-gradient(to bottom, var(--vlt-grid-empty) 1px, transparent 1px);
  background-size:var(--vlt-grid-cell) var(--vlt-grid-cell);
}
.empty-inner{ position:relative; max-width:560px; margin:0 auto; text-align:center; }
.empty-line{ font-family:var(--vlt-display); font-size:clamp(24px,3.2vw,var(--vlt-t-empty)); letter-spacing:-0.02em; line-height:1.3; color:var(--vlt-ink); text-wrap:balance; }
.empty-sub{ margin:var(--vlt-s3) 0 0; font-size:var(--vlt-t-lede); line-height:var(--vlt-lh-prose); color:var(--vlt-ink-2); }
.empty-actions{ display:flex; justify-content:center; margin:28px 0 0; }
.empty-actions .btn{ min-width:150px; min-height:var(--vlt-control-h); }
.empty-suggest{ margin:36px 0 0; font-size:var(--vlt-t-label); line-height:1.7; color:var(--vlt-ink-3); text-wrap:balance; }
.empty-quiet{ font-size:var(--vlt-t-prose); color:var(--vlt-ink-2); }

/* ---- the upload panel ---- */
.upanel{
  position:fixed; z-index:40; right:var(--vlt-s6); bottom:var(--vlt-s6);
  width:min(var(--vlt-panel-w), calc(100vw - 32px)); max-height:min(70vh,560px);
  display:flex; flex-direction:column;
  background:var(--vlt-raise); border:var(--vlt-rule) solid var(--vlt-line-2); border-radius:var(--vlt-r-md); box-shadow:var(--vlt-elev-pop);
}
.up-main{ padding:var(--vlt-s4) 18px 14px; }
.up-head{ display:flex; align-items:baseline; justify-content:space-between; gap:var(--vlt-s3); }
.up-title{ font-size:var(--vlt-t-body); font-weight:var(--vlt-w-med); color:var(--vlt-ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.up-head .link-quiet{ text-decoration:none; }
.up-dest{ margin:var(--vlt-s1) 0 0; font-size:var(--vlt-t-foot); color:var(--vlt-ink-3); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.up-summary{ margin:14px 0 0; font-size:var(--vlt-t-foot); color:var(--vlt-ink); }
.up-bar{ display:block; position:relative; height:var(--vlt-rule-strong); margin:10px 0 0; background:var(--vlt-line-2); }
.up-bar-fill{ position:absolute; left:0; top:0; bottom:0; width:0; background:var(--vlt-accent); transition:width 160ms linear; }
.up-bar.done .up-bar-fill{ background:var(--vlt-bone-42); }
.up-phases{ margin:10px 0 0; font-size:var(--vlt-n-micro); color:var(--vlt-ink-3); }
.up-skipped{ margin:var(--vlt-s2) 0 0; font-size:var(--vlt-t-foot); color:var(--vlt-ink-3); }
.up-limit{ margin:var(--vlt-s2) 0 0; font-size:var(--vlt-t-foot); line-height:1.5; color:var(--vlt-risk-elev); }
.up-receipt{ display:inline-block; margin:var(--vlt-s3) 0 0; font-size:var(--vlt-t-row); }
.up-exceptions{ display:flex; flex-direction:column; min-height:0; border-top:var(--vlt-rule) solid var(--vlt-line-2); }
.up-toggle{
  display:flex; align-items:center; justify-content:space-between; gap:var(--vlt-s3);
  padding:11px 18px; border:0; background:none; cursor:pointer; text-align:left;
  font-size:var(--vlt-t-label); color:var(--vlt-risk-elev);
}
.up-toggle-state{ color:var(--vlt-ink-3); }
.up-problems{ padding:0 18px var(--vlt-s2); }
.up-retry-all{ padding:var(--vlt-s2) 0 0; }

.vlist{ position:relative; overflow-y:auto; }
.vlist-spacer{ position:relative; }
.vlist-row{ position:absolute; left:0; right:0; top:0; height:110px; }
.exc{ padding:10px 0; border-top:var(--vlt-rule) solid var(--vlt-line); overflow:hidden; }
.exc-top{ display:flex; align-items:center; gap:var(--vlt-s3); }
.exc-name{ flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:var(--vlt-t-row); color:var(--vlt-ink); }
.exc-badge{ display:inline-flex; align-items:center; gap:7px; height:22px; margin:6px 0 0; padding:0 var(--vlt-s2); border-radius:var(--vlt-r-sm); background:var(--vlt-risk-elev-soft); font-size:var(--vlt-t-foot); color:var(--vlt-risk-elev); }
.exc-badge .glyph{ font-size:var(--vlt-n-glyph); }
.exc-help{ margin:6px 0 0; font-size:var(--vlt-t-foot); line-height:1.4; color:var(--vlt-ink-3); overflow:hidden; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; }

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