/* Rules the build needs beyond the prototype: real viewer content, setup and no-access screens, groups, upload, new collection. */

/* viewer: real files */
.vbody.fill{padding:0;display:block;overflow:hidden}
.vframe{display:block;width:100%;height:100%;border:0;background:#fff}
.vpage.pdf{width:min(920px,100%)}
.pdfpage{position:relative;background:#fff;margin:0 auto 22px;box-shadow:0 14px 44px rgba(0,0,0,.35);border-radius:4px;overflow:hidden}
.pdfpage canvas{display:block;width:100%;height:auto}
.pdfpage .pno{position:absolute;right:10px;bottom:8px;font-family:"JetBrains Mono",monospace;font-size:10.5px;color:#7886a8;background:rgba(255,255,255,.8);padding:2px 6px;border-radius:5px}
.vstatus{text-align:center;color:var(--text3);font-size:13px;padding:40px 0}
.vstatus.err{color:var(--warn)}
.docbody{background:var(--elev1);border:1px solid var(--border);border-radius:14px;padding:36px clamp(18px,4vw,48px);font-size:15px;line-height:1.6;color:var(--text)}
.docbody h1,.docbody h2,.docbody h3{letter-spacing:-.02em;margin:1.2em 0 .5em;line-height:1.2}
.docbody h1{font-size:28px;margin-top:0}.docbody h2{font-size:21px}.docbody h3{font-size:16px}
.docbody p,.docbody ul,.docbody ol,.docbody pre,.docbody table,.docbody blockquote{margin:0 0 1em}
.docbody ul,.docbody ol{padding-left:1.4em}
.docbody a{color:var(--accent)}
.docbody code{font-family:"JetBrains Mono",monospace;font-size:.9em;background:var(--elev2);padding:1px 5px;border-radius:5px}
.docbody pre{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:14px;overflow:auto}
.docbody pre code{background:none;padding:0}
.docbody blockquote{border-left:3px solid var(--border2);padding-left:14px;color:var(--text2)}
.docbody img{max-width:100%}
.docbody table{border-collapse:collapse;width:100%}
.docbody th,.docbody td{border:1px solid var(--border);padding:6px 10px;text-align:left}
.docbody.plain{font-family:"JetBrains Mono",monospace;font-size:12.5px;white-space:pre-wrap;word-break:break-word}
.sheetwrap{background:var(--elev1);border:1px solid var(--border);border-radius:14px;overflow:auto;max-height:calc(100vh - 160px)}
.sheet{border-collapse:collapse;font-family:"JetBrains Mono",monospace;font-size:12.5px;min-width:100%}
.sheet th,.sheet td{border-bottom:1px solid var(--border);border-right:1px solid var(--border);padding:7px 12px;white-space:nowrap;text-align:left;max-width:360px;overflow:hidden;text-overflow:ellipsis}
.sheet th{position:sticky;top:0;background:var(--elev2);color:var(--k-sheet);font-weight:700;z-index:1}
.sheet td.num{text-align:right}
.sheet tr:nth-child(even) td{background:color-mix(in srgb,var(--elev2) 45%,transparent)}
.sheetnote{font-size:12.5px;color:var(--text3);margin-top:10px;text-align:center}
.linkcard{background:var(--elev1);border:1px solid var(--border2);border-radius:18px;padding:36px 28px;text-align:center}
.linkcard .lk{display:inline-flex;align-items:center;gap:6px;font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--k-link);border:1px solid color-mix(in srgb,var(--k-link) 45%,transparent);border-radius:999px;padding:4px 10px}
.linkcard h2{font-size:22px;margin:16px 0 6px;letter-spacing:-.02em}
.linkcard .url{font-family:"JetBrains Mono",monospace;font-size:12px;color:var(--text3);word-break:break-all}
.linkcard .btn{margin-top:20px}

/* sign-in, setup, no access */
.serr{margin-top:12px;padding:10px 12px;border-radius:10px;background:color-mix(in srgb,var(--warn) 12%,transparent);border:1px solid color-mix(in srgb,var(--warn) 40%,transparent);color:var(--text);font-size:13px}
.sbox.wide{width:min(560px,100%)}
.sbox .steps textarea{font-size:11.5px}
.sbox .f2{max-width:none}
.busy{opacity:.6;pointer-events:none}
.spin{width:16px;height:16px;border:2px solid var(--border2);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;display:inline-block;vertical-align:middle}
@keyframes spin{to{transform:rotate(360deg)}}
.loading{height:100vh;display:grid;place-items:center;color:var(--text3);font-size:13px}
.brandlogo{display:inline-grid;place-items:center}
.noaccess p{margin-top:10px;color:var(--text2);font-size:14px}
.noaccess .who{margin-top:16px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;font-size:13px;color:var(--text3);display:flex;gap:10px;align-items:center}

/* upload */
.upbtn{height:60px;padding:0 18px;border-radius:14px;flex:none}
.searchrow{display:flex;gap:10px;margin-top:24px;align-items:stretch}
.searchrow .search{flex:1;margin-top:0;min-width:0}
.dropzone{outline:2px dashed var(--accent);outline-offset:-2px}
.dropzone .main:after{content:"Drop files to land them";position:sticky;bottom:24px;display:block;text-align:center;color:var(--accent);font-weight:600}
.upcard{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--border);border-radius:11px;margin-bottom:8px;background:var(--elev1)}
.upcard .nm{flex:1;min-width:0;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.upcard .sz{font-family:"JetBrains Mono",monospace;font-size:11px;color:var(--text3)}
.upcard select{width:auto}
.fine-err{font-size:12px;color:var(--warn)}

/* people: groups tab */
.grow-members{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.mem{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px 0 4px;border:1px solid var(--border2);border-radius:999px;font-size:12.5px;font-weight:600}
.mem .iconbtn{width:22px;height:22px;border-radius:50%}
.pickrow{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:10px;cursor:pointer;font-size:13.5px;font-weight:600}
.pickrow:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}
.pickrow input{accent-color:var(--accent)}
.pickrow small{color:var(--text3);font-weight:400;margin-left:auto}
.picklist{display:flex;flex-direction:column;gap:6px;max-height:280px;overflow:auto}
.iconpick{display:flex;flex-wrap:wrap;gap:6px}
.iconpick button{width:38px;height:38px;border-radius:10px;border:1px solid var(--border2);display:grid;place-items:center;color:var(--text2)}
.iconpick button.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}
.setbylabel{font-family:"JetBrains Mono",monospace;font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--text3);border:1px solid var(--border2);border-radius:5px;padding:2px 6px;margin-left:6px;font-weight:700}

/* checkpoint-1 fixes (Lena, 2026-09-27) */
.th-sheet .grid span .bar{display:block;height:.55em;border-radius:1em;background:#2c5c4b}
.th-sheet .grid span.h .bar{background:#5fd39a;opacity:.85}
.th-sheet .grid span.l .bar{background:#3d7a63}
.cell.via{border:1px solid var(--border2);background:color-mix(in srgb,var(--accent-soft) 60%,transparent);color:var(--text3);opacity:.7}
.cell.via:hover{border-color:var(--accent);color:var(--accent);opacity:1}
.knote{font-size:12px;color:var(--text3);margin-top:2px;white-space:normal;line-height:1.35}
.who-row .nm .sub{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;max-width:100%;vertical-align:bottom}
.who-row .nm{display:flex;gap:4px;min-width:0;align-items:baseline}
.who-row .nm > span:first-child{white-space:nowrap}
.prow{grid-template-columns:40px minmax(0,1.3fr) 128px minmax(220px,1.3fr) 110px}
.prow .pact{display:flex;justify-content:flex-end}
@media (max-width:860px){
  .prow{grid-template-columns:36px minmax(0,1fr) auto}
  .map{position:relative}
  .map table{min-width:640px}
  .map td:first-child,.map th:first-child{max-width:42vw;width:42vw}
  .map .pc{max-width:100%}
  .map .pc > span:last-of-type{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
  .mapwrap{position:relative}
  .mapwrap:after{content:"";position:absolute;top:0;right:0;bottom:0;width:36px;pointer-events:none;background:linear-gradient(90deg,transparent,var(--bg));border-radius:0 14px 14px 0}
  .tabs{gap:0;scrollbar-width:none;-webkit-mask-image:linear-gradient(90deg,#000 88%,transparent)}
  .tabs::-webkit-scrollbar{display:none}
  .tab{padding:10px 10px;font-size:13px}
}

/* checkpoint-2 fixes (Lena, 2026-09-27) */
.notice{display:flex;align-items:center;gap:12px;margin:18px 0 6px;padding:12px 14px;border-radius:12px;background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 40%,transparent);font-size:13.5px;color:var(--text2)}
.notice>svg.i{color:var(--accent);flex:none}
.notice span{flex:1;min-width:0}
.notice b{color:var(--text)}
.notice.warn{background:var(--gold-soft);border-color:color-mix(in srgb,var(--gold-lit) 45%,transparent)}
.notice.warn>svg.i{color:var(--gold-lit)}
.row .m .tags{display:flex;gap:5px}
.row .vchip.meta{display:none}
.prow{grid-template-columns:40px minmax(0,1.3fr) 128px minmax(200px,1.3fr) 190px}
.prow .sum,.prow .sum small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.prow .pact{display:flex;justify-content:flex-end;gap:6px;flex-wrap:nowrap}
.fbconfirm{margin-top:18px;padding:14px;border-radius:12px;border:1px solid color-mix(in srgb,var(--gold-lit) 45%,transparent);background:var(--gold-soft);font-size:13.5px;color:var(--text2)}
.fbconfirm b{color:var(--text)}
@media (max-width:860px){
  .row .m{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .row .m>*{display:inline;vertical-align:middle}
  .row .m .tags{display:none} /* the panel has the collections; the phone row keeps agent + time */
  .row .m .av{display:inline-grid;margin-right:5px}
  .row .m .dotsep{margin:0 5px}
  .row .m .upd{display:none}
  .row .t .vchip{display:none}
  /* the gold "vN waiting" chip comes first on the phone, so the ellipsis never eats it (Lena, final review should-fix 2) */
  .row .vchip.meta{display:inline-block;margin-right:7px;vertical-align:middle}
  .drawer .actions .btn .hide-s{display:none}
  .drawer .actions{grid-template-columns:1fr auto auto auto auto}
  .dr-title .rename-btn{width:32px;height:32px;opacity:1}
  .sec-h .aside{display:none}
  .map .role.pending{font-size:0;width:8px;height:8px;padding:0;border:0;border-radius:50%;background:var(--k-link);display:inline-block;vertical-align:middle;margin-left:4px}
  .prow{grid-template-columns:36px minmax(0,1fr) auto}
  .prow .sum,.prow .sum small{white-space:normal}
  .mtop .co{font-size:11px;color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
}

/* rename in the panel (checkpoint 2 nice-to-have 6) */
.dr-title .rename-btn{width:26px;height:26px;margin-left:6px;vertical-align:middle;opacity:0;transition:opacity .12s}
.dr-head:hover .rename-btn,.rename-btn:focus-visible{opacity:1}
.rename{margin-top:6px}
.dr-title-input{font:inherit;font-size:18px;font-weight:700;width:100%;background:var(--bg);border:1px solid var(--accent);border-radius:8px;padding:6px 10px;color:var(--text);outline:0;box-shadow:0 0 0 3px var(--accent-soft)}
.rename-acts{display:flex;gap:6px;margin-top:8px}
@media (max-width:860px){.dr-title .rename-btn{opacity:1;width:32px;height:32px}} /* a real tap target on the phone (Lena, final nice-to-have 3) */

/* things the prototype styled inline */
.grid-min0{min-width:0}
.flexcol{display:flex;flex-direction:column;min-height:0;min-width:0}
.main.grow{flex:1}
.hidden{display:none!important}
.dr-body .empty{margin-top:12px;padding:20px}
.who-row .sub.pending{color:var(--k-link)}
.colchip.pending,.scope.pending{opacity:.55}
.ktabs+.code{max-height:320px}
.pv .sub{font-size:11px;color:var(--text3);margin-top:2px}
.row .t .tt a{color:inherit;text-decoration:none}
.card:focus-visible,.row:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.tag.more{opacity:.8}
.vact .btn.icon.star-btn{width:40px}
.clientmsg{margin-top:14px;font-size:13px;color:var(--text3)}
.pop button:disabled{opacity:.45;cursor:default}
.pop button:disabled:hover{background:none;color:var(--text2)}
@media (max-width:860px){
  .searchrow{flex-direction:column}
  .upbtn{height:46px}
  .drawer{width:100vw}
  .vpage.pdf{width:100%}
}
@media (min-width:1200px){
  .shell.pushed .page{max-width:900px}
}
