/* The account portal (web/lib/portal/shell.js). The site's type and colours:
   Archivo, the site's ink and accent, and the app's Pro badge. No monospace. */
@font-face{font-family:Archivo;src:url(/fonts/archivo-var.woff2) format('woff2-variations');
  font-weight:100 900;font-style:normal;font-display:swap}
:root{color-scheme:light;
  --ink:#0b1220;--ink-2:#31404f;--body:#4a5766;--muted:#5a6675;--accent:#1263b8;--accent-hover:#0f5399;
  --tint:#f1f7fd;--tint-border:#d8e7f8;--surface:#fff;--bg:#f5f7fa;--line:#e4e9ef;--line-soft:#eef2f7;
  --ok:#17703f;--ok-bg:#e6f4ea;--warn:#8a5a00;--warn-bg:#fff5de;--bad:#b3261e;--bad-bg:#fdeceb;
  --action:#1263b8;--action-hover:#0f5399;--control-line:#d5dce4;--danger-line:#efc6c2;
  --avatar-bg:#dbe8f7;--avatar-ink:#124f8f;--quiet-bg:#f0f2f5;--quiet-ink:#5d6875;
  --ok-line:#bfe0c6;--bad-line:#f0c8c5;--warn-line:#f0dca8;--row-hover:#fafbfd;--row-head:#fbfcfd;
  --text:var(--ink);--border:var(--line);--blue:var(--accent);--hover:var(--line-soft);
  --radius:12px;--side:248px;--shadow:0 1px 2px rgba(11,18,32,.04),0 1px 3px rgba(11,18,32,.06)}

/* Dark colours live in portal-dark.css, enabled by the system or appearance control. */

*{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);
  font:15px/1.55 Archivo,system-ui,-apple-system,'Segoe UI',Roboto,sans-serif}
a{color:var(--accent)}a:hover{color:var(--accent-hover)}
h1,h2,h3{letter-spacing:-.01em;line-height:1.25}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
img,svg{max-width:100%}
.ico{flex:none;display:inline-block;vertical-align:middle}
.pt-skip{position:absolute;left:-999px;top:8px;background:#fff;padding:8px 12px;border-radius:8px;z-index:50}
.pt-skip:focus{left:8px}

/* frame */
.pt-app{display:flex;min-height:100vh;background:linear-gradient(to right,var(--surface) var(--side),transparent var(--side))}
.pt-side{position:sticky;top:0;height:100vh;width:var(--side);flex:none;background:var(--surface);
  border-right:1px solid var(--line);display:flex;flex-direction:column;padding:18px 14px;overflow:visible;z-index:30}
.pt-side-head{flex:none;display:flex;align-items:center;justify-content:space-between;padding:0 8px 18px}
.pt-brand{display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none;font-size:18px;font-weight:700;letter-spacing:-.01em}
.pt-brand:hover{color:var(--ink)}
.pt-mark{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--action);color:#fff;font-size:19px;line-height:1}
.pt-nav{display:flex;flex-direction:column;flex:1;min-height:0;overflow-y:auto}
.pt-nav ul{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.pt-nav-foot{margin-top:auto!important;padding-top:14px!important;border-top:1px solid var(--line-soft)!important}
.pt-nav a{display:flex;align-items:center;gap:12px;padding:9px 10px;border-radius:9px;color:var(--ink-2);
  text-decoration:none;font-weight:550;font-size:14.5px}
.pt-nav a:hover{background:var(--bg);color:var(--ink)}
.pt-nav a[aria-current=page]{background:var(--tint);color:var(--accent)}
.pt-main{flex:1;min-width:0;display:flex;flex-direction:column}
.pt-top{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:12px;height:60px;padding:0 28px;
  background:var(--bg,#f5f7fa);border-bottom:1px solid var(--line)}
.pt-top-grow{flex:1}
.pt-brand-top,.pt-open,.pt-close{display:none}
.pt-icon-btn{background:none;border:0;padding:8px;border-radius:8px;color:var(--ink-2);cursor:pointer;line-height:0}
.pt-icon-btn:hover{background:var(--line-soft)}
.pt-menu-wrap{position:relative}
.pt-menu-wrap>summary{list-style:none;cursor:pointer}
.pt-menu-wrap>summary::-webkit-details-marker{display:none}
.pt-user>summary{display:flex;align-items:center;gap:9px;padding:4px 8px 4px 4px;border-radius:999px;border:1px solid transparent}
.pt-user>summary:hover,.pt-user[open]>summary{background:var(--surface);border-color:var(--line)}
.pt-avatar{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--avatar-bg);color:var(--avatar-ink);
  font-weight:700;font-size:12.5px;letter-spacing:.02em}
.pt-email{font-size:14px;font-weight:550;color:var(--ink-2);max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pt-menu{position:absolute;right:0;top:calc(100% + 6px);min-width:230px;background:var(--surface);border:1px solid var(--line);
  border-radius:12px;box-shadow:0 12px 32px rgba(11,18,32,.14);padding:6px;z-index:30}
.pt-menu a,.pt-menu button{display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;border-radius:8px;
  color:var(--ink);text-decoration:none;font:inherit;font-size:14px;font-weight:500;background:none;border:0;cursor:pointer;text-align:left}
.pt-menu a:hover,.pt-menu button:hover{background:var(--bg);color:var(--ink)}
.pt-menu-who{margin:4px 10px 8px;font-size:12.5px;color:var(--muted);overflow-wrap:anywhere}
.pt-menu form{margin:0;border-top:1px solid var(--line-soft);padding-top:4px;margin-top:4px}
.pt-content{width:100%;max-width:1180px;margin:0 auto;padding:24px 28px 56px;flex:1}
.pt-content.wide{max-width:1440px}
.pt-content:focus{outline:none}
.pt-scrim{display:none}

/* headings and crumbs */
.pt-crumbs ol{list-style:none;margin:0 0 10px;padding:0;display:flex;flex-wrap:wrap;gap:6px;font-size:13px;color:var(--muted)}
.pt-crumbs li+li::before{content:'\203A';margin-right:6px;color:#9aa5b1}
.pt-crumbs a{color:var(--muted);text-decoration:none}.pt-crumbs a:hover{color:var(--accent)}
.pt-head{display:flex;gap:16px;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;margin:0 0 22px}
.pt-head h1{font-size:28px;font-weight:700;margin:0;letter-spacing:-.02em}
.pt-lede{margin:6px 0 0;color:var(--body)}
.pt-head-actions{display:flex;gap:8px;flex-wrap:wrap}
.pt-said{background:var(--ok-bg);border:1px solid var(--ok-line);border-radius:10px;padding:11px 14px;font-size:14px;margin:0 0 18px}
.pt-said.bad{background:var(--bad-bg);border-color:var(--bad-line)}
.pt-said.warn{background:var(--warn-bg);border-color:var(--warn-line)}
.pt-said a.pt-plan-cta{font-weight:600;margin-left:6px;white-space:nowrap}

/* cards and grids */
.pt-grid{display:grid;gap:18px;grid-template-columns:repeat(12,minmax(0,1fr))}
.span-12{grid-column:span 12}.span-8{grid-column:span 8}.span-7{grid-column:span 7}.span-5{grid-column:span 5}.span-6{grid-column:span 6}.span-4{grid-column:span 4}.span-3{grid-column:span 3}
.pt-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px 22px;box-shadow:var(--shadow);min-width:0}
.pt-card+.pt-card{margin-top:0}
.pt-stack{display:grid;gap:18px;align-content:start}
.pt-align-start{align-self:start}
.pt-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 14px}
.pt-card-head h2{display:flex;align-items:center;gap:9px;font-size:16px;font-weight:650;margin:0}
.pt-card-head h2 .ico{color:var(--muted)}
.pt-card-head a{font-size:14px;font-weight:550;text-decoration:none}
.pt-card h3{font-size:15px;margin:18px 0 6px}
.pt-card p{margin:0 0 10px}
.pt-card>p:last-child{margin-bottom:0}
.muted{color:var(--muted);font-size:13.5px}
.small{font-size:13px}
.stat{font-size:28px;font-weight:700;letter-spacing:-.02em;margin:2px 0 4px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.stat-label{font-size:13px;font-weight:600;color:var(--muted);margin:0;display:flex;align-items:center;gap:8px}
.meter{height:8px;border-radius:99px;background:var(--line-soft);overflow:hidden;margin:10px 0 8px}
.meter>span{display:block;height:100%;background:var(--accent);border-radius:99px}
.meter.over>span{background:var(--bad)}.meter.near>span{background:#d18a00}

/* the Pro badge: .set-badge in the desktop app, value for value */
.pro-badge{display:inline-block;flex:none;font-size:10px;font-weight:650;letter-spacing:.04em;text-transform:uppercase;
  color:#0e6db3;border:1px solid #0e6db3;border-radius:999px;padding:2px 8px;line-height:1.4;background:transparent;vertical-align:2px}
/* ENTERPRISE is the same pill with a longer word (#1182); in the menu it sits at the row's end */
.pt-nav a .enterprise-badge{margin-left:auto;font-size:9px;padding:1px 6px}
.pt-nav a.pt-nav-out>.ico:last-child{margin-left:auto;opacity:.55}
.pt-mapnav a .enterprise-badge{margin-left:auto;font-size:8.5px;padding:0 5px}

/* pills and status */
.pill{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:2px 9px;font-size:12px;font-weight:600;
  background:var(--line-soft);color:var(--ink-2);white-space:nowrap;line-height:1.6}
.pill::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.7}
.pill.plain::before{display:none}
.pill.s-approved,.pill.s-viewed,.pill.ok{background:var(--ok-bg);color:var(--ok)}
.pill.s-awaiting,.pill.warn,.pill.s-expiring{background:var(--warn-bg);color:var(--warn)}
.pill.s-changes,.pill.bad{background:var(--bad-bg);color:var(--bad)}
.pill.s-expired,.pill.s-withdrawn,.pill.s-private{background:var(--quiet-bg);color:var(--quiet-ink)}
.pill.s-unopened,.pill.s-shared{background:var(--tint);color:var(--avatar-ink)}

/* lists */
.pt-list{list-style:none;margin:0;padding:0}
.pt-list>li{display:flex;align-items:center;gap:12px;padding:11px 0;border-top:1px solid var(--line-soft)}
.pt-list>li:first-child{border-top:0;padding-top:2px}
.pt-list .grow{flex:1;min-width:0}
.pt-list .title{font-weight:600;color:var(--ink);text-decoration:none;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pt-list a.title:hover{color:var(--accent)}
.pt-list .meta{font-size:13px;color:var(--muted)}
.attn>li .ico{color:var(--warn)}
.attn>li.bad .ico{color:var(--bad)}
.attn a{font-weight:600;text-decoration:none}
.thumb{flex:none;width:40px;height:40px;border-radius:9px;display:grid;place-items:center;color:var(--accent);
  background:var(--tint);border:1px solid var(--line-soft);overflow:hidden}
.thumb img{width:100%;height:100%;object-fit:cover}

/* quick actions */
.quick{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}
.quick a{display:flex;gap:12px;align-items:center;padding:12px 14px;border:1px solid var(--line);border-radius:10px;
  text-decoration:none;color:var(--ink);font-weight:600;background:var(--surface)}
.quick a:hover{border-color:var(--tint-border);background:var(--tint);color:var(--ink)}
.quick a .ico{color:var(--accent)}
.quick small{display:block;font-weight:400;color:var(--muted);font-size:12.5px}

/* empty states and skeletons */
.pt-empty{text-align:center;padding:28px 16px;color:var(--body)}
.pt-empty .ico{color:var(--accent);background:var(--tint);border-radius:50%;padding:10px;width:48px;height:48px}
.pt-empty h3{margin:10px 0 4px;font-size:16px;color:var(--ink)}
.pt-empty p{margin:0 auto 14px;max-width:44ch;font-size:14px}
.skel{display:block;border-radius:6px;background:linear-gradient(90deg,#eef2f6 0,#f6f8fa 50%,#eef2f6 100%);background-size:200% 100%;
  animation:skel 1.2s ease-in-out infinite;height:14px}
@keyframes skel{0%{background-position:100% 0}100%{background-position:-100% 0}}

/* tabs */
.pt-tabs{margin:-6px 0 20px;border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none}
.pt-tabs ul{list-style:none;display:flex;gap:4px;margin:0;padding:0}
.pt-tabs a{display:block;padding:10px 14px;color:var(--muted);text-decoration:none;font-weight:600;font-size:14.5px;
  border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}
.pt-tabs a:hover{color:var(--ink)}
.pt-tabs a[aria-current=page]{color:var(--accent);border-bottom-color:var(--accent)}
/* More tabs off to one side: that edge fades out (portal.js). */
.pt-tabs.more-right{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 48px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 48px),transparent)}
.pt-tabs.more-left{-webkit-mask-image:linear-gradient(to left,#000 calc(100% - 48px),transparent);mask-image:linear-gradient(to left,#000 calc(100% - 48px),transparent)}
.pt-tabs.more-left.more-right{-webkit-mask-image:linear-gradient(to right,transparent,#000 48px,#000 calc(100% - 48px),transparent);mask-image:linear-gradient(to right,transparent,#000 48px,#000 calc(100% - 48px),transparent)}
.pt-tabs.fitted{overflow:visible}
.pt-tabs-more{margin-left:auto}
.pt-tabs-more>details>summary{display:flex;align-items:center;gap:4px;padding:10px 14px;color:var(--muted);font-weight:600;font-size:14.5px;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}
.pt-tabs-more>details>summary:hover,.pt-tabs-more>details[open]>summary{color:var(--ink)}
.pt-tabs-more>details>summary.here{color:var(--accent);border-bottom-color:var(--accent)}
.pt-tabs .pt-menu{display:block;list-style:none;margin:0;padding:6px}
.pt-tabs .pt-menu a{display:flex;border:0;margin:0;padding:9px 10px;color:var(--ink);font-weight:500;font-size:14px;white-space:nowrap}
.pt-tabs .pt-menu a[aria-current=page]{color:var(--accent);background:var(--tint)}

/* controls */
.btn,button{font:inherit;font-weight:600;font-size:14px;padding:8px 14px;border:1px solid transparent;border-radius:9px;
  background:var(--action);color:#fff;cursor:pointer;display:inline-flex;align-items:center;gap:8px;text-decoration:none;line-height:1.3}
.btn:hover,button:hover{background:var(--action-hover);color:#fff}
.btn.quiet,button.quiet{background:var(--surface);color:var(--ink);border-color:var(--control-line)}
.btn.quiet:hover,button.quiet:hover{background:var(--bg);color:var(--ink)}
.btn.danger,button.danger{background:var(--surface);color:var(--bad);border-color:var(--danger-line)}
.btn.danger:hover,button.danger:hover{background:var(--bad-bg);color:var(--bad)}
.btn.danger-solid,button.danger-solid{background:var(--bad);color:#fff}
.btn.small,button.small{padding:5px 10px;font-size:13px}
button:disabled{opacity:.55;cursor:default}
.text-link{background:none;border:0;padding:0;color:var(--accent);font-weight:600;cursor:pointer}
.text-link:hover{background:none;color:var(--accent-hover);text-decoration:underline}
input,select,textarea{font:inherit;font-size:14.5px;padding:8px 11px;border:1px solid var(--control-line);border-radius:9px;background:var(--surface);
  color:var(--ink);max-width:100%;min-width:0}
input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:transparent}
input[type=checkbox],input[type=radio]{width:auto;accent-color:var(--accent)}
input[type=color]{padding:2px;width:44px;height:36px}
label{font-weight:550}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:12px}
.invite-form input[type=email]{flex:1 1 220px;min-width:0}
form{margin:0}
.field{display:grid;gap:5px;margin:0 0 14px}
.field>span{font-size:14px;font-weight:600}
.field small{color:var(--muted);font-weight:400}
.check{display:flex;gap:9px;align-items:center;font-weight:500}
.key{display:inline-block;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:8px 12px;
  letter-spacing:.06em;word-break:break-all;font-weight:600;font-variant-numeric:tabular-nums}
.facts{display:grid;grid-template-columns:auto 1fr;gap:8px 20px;margin:0;font-size:14px}
.facts dt{color:var(--muted)}.facts dd{margin:0;font-weight:600}
.kv{display:grid;grid-template-columns:1fr auto;gap:10px;margin:0 0 12px}.kv dt{color:var(--muted)}.kv dd{margin:0;font-weight:600;text-align:right}
table{border-collapse:collapse;width:100%;font-size:14px}
th,td{text-align:left;padding:10px 10px 10px 0;border-bottom:1px solid var(--line-soft);vertical-align:middle}
th{color:var(--muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.05em}
tr:last-child td{border-bottom:0}
td.act{text-align:right;padding-right:0}
.warn{background:var(--warn-bg);border:1px solid var(--warn-line);border-radius:9px;padding:11px 13px;font-size:13.5px;margin:12px 0 0}
details>summary{cursor:pointer;font-weight:600;padding:10px 0}
details.pt-more+details.pt-more{border-top:1px solid var(--line-soft)}
.pt-discuss>summary{display:flex;align-items:center;gap:10px;list-style:none;padding:4px 0}
.pt-discuss>summary::-webkit-details-marker{display:none}
.pt-discuss>summary::before{content:"";flex:none;border-left:6px solid var(--muted);border-top:5px solid transparent;border-bottom:5px solid transparent;transition:transform .15s}
.pt-discuss[open]>summary::before{transform:rotate(90deg)}
.pt-discuss .pt-note{padding:12px 0 0;border-top:1px solid var(--line-soft);margin-top:12px}
.pt-discuss .pt-note p{margin:0 0 6px}
.badge{display:inline-block;border-radius:20px;padding:2px 9px;background:var(--tint);color:#155b8b;font-size:12px;font-weight:600;vertical-align:middle}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px 22px;box-shadow:var(--shadow);margin:0 0 16px;min-width:0}
.card h2{font-size:16px;margin:0 0 12px}
code{font-family:inherit;background:var(--bg);border:1px solid var(--line-soft);padding:1px 6px;border-radius:5px;font-size:.92em;word-break:break-all}
.pt-sub h2{font-size:15px;margin:16px 0 6px}
.inline{display:inline}
hr{border:0;border-top:1px solid var(--line-soft);margin:18px 0}

/* dialog */
.pt-dialog{border:0;border-radius:14px;padding:22px 24px;max-width:440px;width:calc(100% - 32px);box-shadow:0 20px 60px rgba(11,18,32,.25)}
.pt-dialog::backdrop{background:rgba(11,18,32,.38)}
.pt-dialog h2{margin:0 0 8px;font-size:18px;overflow-wrap:anywhere}
.pt-dialog p{margin:0 0 16px;color:var(--body)}
.pt-dialog-btns{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-top:16px}

/* phone and tablet */
@media (max-width:960px){
  .span-8,.span-7,.span-6,.span-5,.span-4{grid-column:span 12}
  .span-3{grid-column:span 6}
}
@media (max-width:900px){
  .pt-side{position:fixed;left:0;top:0;bottom:0;z-index:40;transform:translateX(-100%);transition:transform .2s ease;
    width:min(84vw,300px);visibility:hidden}
  html.nav-open .pt-side{transform:none;visibility:visible;box-shadow:0 0 40px rgba(11,18,32,.2)}
  html.nav-open .pt-scrim{display:block;position:fixed;inset:0;background:rgba(11,18,32,.35);z-index:35}
  .pt-open,.pt-close{display:inline-flex}
  .pt-brand-top{display:flex;font-size:16px}
  .pt-brand-top .pt-mark{width:26px;height:26px;font-size:16px}
  .pt-top{padding:0 12px;gap:8px}
  .pt-email{display:none}
  .pt-content{padding:18px 16px 44px}
  .pt-head h1{font-size:23px}
  .pt-app{background:none}
  html.no-js .pt-side{position:static;transform:none;visibility:visible;width:100%;height:auto;box-shadow:none}
  html.no-js .pt-app{flex-direction:column}
}
@media (max-width:520px){
  .span-3{grid-column:span 12}
  .pt-card{padding:16px}
  .facts{grid-template-columns:1fr;gap:2px 0}.facts dd{margin-bottom:8px}
  th.hide,td.hide{display:none}
  .pt-head-actions{width:100%}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
.pill.warn{border:0;margin:0;padding:2px 9px;font-size:12px;border-radius:999px}
/* the Devices list (lib/account-view.js machinesTable, #1115) */
.devices td{vertical-align:top}.devices td.dev{width:55%}
.dev-rename input{width:15rem}
.dev-name{font-weight:650;font-size:15px;overflow-wrap:anywhere}
.dev-detail{color:var(--muted);font-size:13px;margin-top:2px}
.dev-rename summary{display:inline-block;padding:2px 0 0;font-size:13px;color:var(--accent);font-weight:600}
.dev-rename[open] summary{color:var(--muted)}
.dev-rename .row{margin-top:6px}.dev-rename .muted{margin-top:6px}

/* the Shared maps hub (site/portal/maps-hub.js) */
.hub-tools{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:0 0 14px}
.hub-search{flex:1 1 260px;display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--control-line);border-radius:9px;padding:0 10px;color:var(--muted);font-weight:400}
.hub-search input{border:0;flex:1;padding:8px 0;min-width:0;outline:none}
.hub-search:focus-within{outline:2px solid var(--accent);outline-offset:-1px;border-color:transparent}
.hub-tools select{flex:0 1 auto}
.hub-view{display:flex;border:1px solid var(--control-line);border-radius:9px;background:var(--surface);overflow:hidden}
.hub-view .pt-icon-btn{border-radius:0;padding:7px 9px}
.hub-view [aria-pressed=true]{background:var(--tint);color:var(--accent)}
.hub-folder,.hub-bulk{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:0 0 12px;padding:9px 12px;border-radius:10px;background:var(--surface);border:1px solid var(--line)}
.hub-folder>span{font-weight:600;margin-right:auto}
.hub-bulk{position:sticky;top:68px;z-index:5;background:#e9f2fc;border-color:var(--tint-border)}
.hub-bulk strong{margin-right:auto}
.hub-upload{margin:0 0 12px;padding:12px 14px;border-radius:10px;background:var(--surface);border:1px solid var(--line)}
.hub-upload.bad{border-color:#e7b4ae;background:#fdf3f2}
.hub-upload.bad [data-upload-stage]{color:#a4281c}
.hub-upload-text{font-size:14px;overflow-wrap:anywhere}
.hub-upload-bar{margin-top:9px;height:6px;border-radius:3px;background:var(--line);overflow:hidden}
.hub-upload-bar[hidden]{display:none}
.hub-upload-bar span{display:block;height:100%;width:0;background:var(--accent,#2563eb);border-radius:3px;transition:width .2s}
.hub-upload .row{margin-top:10px;display:flex;gap:12px;align-items:center}
.hub-drop{position:fixed;inset:0;z-index:50;display:grid;place-items:center;background:rgba(233,242,252,.92);border:3px dashed #7aa7dd;text-align:center;pointer-events:none}
.hub-drop[hidden]{display:none}
.hub-drop p{margin:6px 0 0}
.hub-bulk .btn.is-busy{display:inline-flex;align-items:center;gap:7px;opacity:1}
.hub-spin{width:12px;height:12px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:hub-spin .7s linear infinite;flex:none}
@keyframes hub-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.hub-spin{animation-duration:2s}}
.hub-row.is-working,.hub-card.is-working{opacity:.45;pointer-events:none}
.hub-count{margin:0 0 8px}
.hub-results.list{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
/* Not overflow:hidden, so a row's menu is never cut off at the list's edge; the corners are the rows' own. */
.hub-results.list>.hub-row:first-child{border-radius:var(--radius) var(--radius) 0 0}
.hub-results.list>.hub-row:last-child{border-radius:0 0 var(--radius) var(--radius)}
.hub-row{display:grid;grid-template-columns:28px minmax(220px,2.4fr) minmax(150px,1.4fr) 150px 56px 110px 120px 40px;gap:12px;align-items:center;
  padding:10px 14px;border-top:1px solid var(--line-soft);cursor:pointer}
.hub-row:first-child{border-top:0}
.hub-row:hover{background:var(--row-hover)}
.hub-head{cursor:default;font-size:11.5px;font-weight:650;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);background:var(--row-head)}
.hub-head:hover{background:var(--row-head)}
.hub-row.gone .c-name,.hub-card.gone{opacity:.6}
.c-name{display:flex;align-items:center;gap:12px;min-width:0}
.c-name .grow{min-width:0;display:flex;flex-direction:column}
.hub-title{background:none;border:0;padding:0;color:var(--ink);font-weight:650;font-size:14.5px;text-align:left;cursor:pointer;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;display:block}
.hub-title:hover{background:none;color:var(--accent)}
.meta{font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.c-people{display:flex;align-items:center;gap:8px;min-width:0}
.c-people .who{color:var(--body);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.avs{display:flex;flex:none}
.av{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--avatar-bg);color:var(--avatar-ink);font-size:10.5px;font-weight:700;
  border:2px solid #fff;margin-left:-6px;flex:none}
.avs .av:first-child{margin-left:0}
.av.more{background:#eef2f6;color:var(--ink-2)}
.c-views,.c-date,.c-exp{font-size:13.5px;color:var(--body);white-space:nowrap}
.c-views{text-align:right;font-variant-numeric:tabular-nums}
.c-act{justify-self:end}
.hub-menu .pt-menu{min-width:210px;max-width:calc(100vw - 24px);overflow-y:auto;overscroll-behavior:contain}
.pt-menu .danger-item{color:var(--bad)}
.hub-nocheck{display:inline-block;width:13px}
.skel-row{display:flex;gap:14px;align-items:center;cursor:default}
.skel-row .grow{flex:1;display:flex;flex-direction:column}
.hub-results.grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}
.hub-results.grid>.pt-empty,.hub-results.grid>.skel-row{grid-column:1/-1}
.hub-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px;cursor:pointer;
  display:flex;flex-direction:column;gap:6px;min-width:0}
.hub-card:hover{border-color:var(--tint-border)}
.hub-card-top{position:relative}
.hub-card-top .c-check{position:absolute;left:8px;top:8px}
.hub-card-top .c-act{position:absolute;right:4px;top:4px}
.hub-card-top .c-act .pt-icon-btn{background:rgba(255,255,255,.9)}
.thumb.big{width:100%;height:110px;border-radius:10px;font-size:26px}
.hub-panel-head .thumb.big{width:56px;height:56px;font-size:18px}
.hub-card-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:auto}
.hub-card .meta{margin:0}
.hub-more{display:flex;justify-content:center;margin:16px 0}
.hub-panel{position:fixed;top:0;right:0;bottom:0;width:min(460px,100vw);background:var(--surface);border-left:1px solid var(--line);
  box-shadow:-12px 0 40px rgba(11,18,32,.12);z-index:45;overflow-y:auto}
.hub-panel:focus{outline:none}
.hub-scrim{position:fixed;inset:0;background:rgba(11,18,32,.25);z-index:44}
.hub-panel-body{padding:22px 22px 40px;position:relative;display:flex;flex-direction:column}
.hub-panel-close{position:absolute;right:12px;top:12px}
.hub-panel-head{display:flex;gap:14px;align-items:center;padding-right:36px}
.hub-panel-head h2{margin:0 0 6px;font-size:19px;overflow-wrap:anywhere}
.hub-panel h3{font-size:14px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:22px 0 8px}
.hub-facts{margin-top:16px}
.hub-people-list,.hub-activity{list-style:none;margin:0;padding:0}
.hub-people-list li{display:flex;gap:10px;align-items:center;padding:9px 0;border-top:1px solid var(--line-soft)}
.hub-people-list li:first-child{border-top:0}
.hub-people-list li.dead{opacity:.55}
.hub-people-list .av{margin:0}
.hub-people-list .grow{flex:1;min-width:0;display:flex;flex-direction:column}
.hub-people-list strong{font-size:14px;overflow-wrap:anywhere;font-weight:600}
.hub-people-list select{padding:4px 8px;font-size:13px}
.hub-panel-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:6px;padding:12px;background:var(--bg);border-radius:10px}
.hub-panel-actions label{display:flex;gap:6px;align-items:center;font-weight:550}
.hub-panel-actions select{padding:4px 8px;font-size:13px}
.hub-activity li{display:flex;gap:10px;padding:8px 0;border-top:1px solid var(--line-soft);font-size:14px}
.hub-activity li:first-child{border-top:0}
.hub-activity .ico{margin-top:3px;color:var(--muted)}
.hub-activity .a-approved .ico{color:var(--ok)}.hub-activity .a-changes .ico{color:var(--bad)}
.hub-activity .grow{display:flex;flex-direction:column;min-width:0}
.hub-activity q{display:block;color:var(--body);font-size:13.5px;margin-top:2px;overflow-wrap:anywhere}
.hub-toast{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);background:#0b1220;color:#fff;padding:11px 16px;border-radius:10px;
  font-size:14px;box-shadow:0 10px 30px rgba(11,18,32,.25);z-index:60;max-width:calc(100vw - 32px)}
.hub-toast.bad{background:var(--bad)}
@media (max-width:1180px){
  .hub-row{grid-template-columns:28px minmax(0,2.4fr) minmax(0,1.3fr) 150px 110px 40px}
  .hub-row .c-views,.hub-row .c-exp{display:none}
}
@media (max-width:760px){
  .hub-row{grid-template-columns:24px minmax(0,1fr) auto 36px;gap:8px 10px;padding:10px}
  .hub-row .c-people,.hub-row .c-date{display:none}
  .hub-head{display:none}
  .hub-tools select{flex:1 1 44%}
  .hub-panel{width:100vw;border-left:0}
  .hub-results.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .thumb.big{height:84px}
  .hub-card .c-people{display:none}
}
.hub-people-list .meta,.hub-activity .meta{white-space:normal}
@media (max-width:760px){
  .hub-row{grid-template-columns:24px minmax(0,1fr) 36px;row-gap:4px}
  .hub-row .c-check{grid-row:1 / span 2}
  .hub-row .c-act{grid-column:3;grid-row:1 / span 2}
  .hub-row .c-status{grid-column:2;grid-row:2;padding-left:52px}
}

/* the Branding tab (lib/portal/branding.js) */
.brand-form h3{margin:20px 0 10px;font-size:14px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.brand-form .field input:not([type=checkbox]):not([type=radio]):not([type=file]),.brand-form select{width:100%}
.brand-form fieldset{border:0;padding:0;margin:0 0 14px}
.proposal-form textarea{width:100%;resize:vertical}.proposal-form fieldset .check{padding:3px 0}.proposal-form code{font-size:12px}.proposal-list .meta{white-space:normal;overflow:visible;text-overflow:clip}
.brand-form legend{font-size:14px;font-weight:600;margin-bottom:6px}
.brand-form .logo-note{display:block;margin-top:6px}
.brand-form .logo-note:empty{display:none}
.brand-form .logo-note.bad{color:var(--bad)}
.colour-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.colour-field{display:flex;gap:10px;align-items:center;padding:8px;border:1px solid var(--line);border-radius:10px;font-weight:400}
.colour-field strong{display:block;font-size:14px}
.colour-field small{display:block;color:var(--muted);font-size:12px}
.lock{margin:16px 0 0;padding:12px;background:var(--bg);border-radius:10px}
.brand-side{position:sticky;top:76px;align-self:start}
.brand-preview{border-radius:12px;overflow:hidden;border:1px solid var(--line);background:var(--t-bg)}
.bp-head{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--t-header);color:var(--t-header-ink);min-height:48px}
.bp-head img{height:28px;width:auto;max-width:120px;object-fit:contain}
.bp-head strong{font-size:15px}
.bp-map{position:relative;aspect-ratio:4/3;background:#e8e9e4;overflow:hidden}
.bp-map .bp-basemap,.bp-map svg{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.bp-route-point{fill:var(--t-accent);stroke:var(--t-halo);stroke-width:2}
.bp-route-label{font:700 19px system-ui,sans-serif;fill:var(--t-label);stroke:var(--t-halo);stroke-width:3;paint-order:stroke;stroke-linejoin:round}
.bp-attribution{font-size:11px;padding:6px 10px;margin:0;background:#f5f7fa;color:#536176}
.bp-attribution a{color:#115da8}
.brand-preview[data-palette=map] .bp-route-point{fill:#e8743b}
.brand-preview[data-palette=map] .bp-route-label{fill:#192a39;stroke:#fff}
.bp-route{fill:none;stroke:var(--t-line);stroke-width:4;stroke-linecap:round}
.bp-route.thin{stroke-width:2.5;opacity:.85}
.bp-pin{position:absolute;width:14px;height:14px;border-radius:50%;background:var(--t-accent);border:2px solid #fff;transform:translate(-50%,-50%);box-shadow:0 1px 4px rgba(0,0,0,.35)}
.bp-label{position:absolute;font-weight:700;font-size:13px;color:var(--t-label);text-shadow:-1px -1px 0 var(--t-halo),1px -1px 0 var(--t-halo),-1px 1px 0 var(--t-halo),1px 1px 0 var(--t-halo)}
/* "Keep the colours from the map": the preview's invented map in colours of its own, as a real map keeps its */
.brand-preview[data-palette=map] .bp-route{stroke:#e8743b}
.brand-preview[data-palette=map] .bp-route.thin{stroke:#8e6fd8}
.brand-preview[data-palette=map] .bp-pin{background:#3fa7d6}
.brand-preview[data-palette=map] .bp-label{color:#fff3c4}
.brand-form .palette-hint{display:block;margin-top:4px;color:var(--muted);font-size:12.5px}
.brand-form .palette-hint[hidden]{display:none}
.bp-contact{margin:0;padding:8px 14px;font-size:13px;background:var(--t-header);color:var(--t-header-ink)}
@media (max-width:960px){.brand-side{position:static}}
@media (max-width:520px){.colour-grid{grid-template-columns:1fr}}
/* The watermark settings and preview (lib/portal/watermark.js, #1162) */
.wm-form .field input:not([type=checkbox]):not([type=range]),.wm-form select{width:100%}
.wm-form input[type=range]{width:100%}
.wm-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 12px}
.wm-help{margin:-6px 0 14px;font-size:13px}
.wm-help p{margin:0;font-weight:600}
.wm-help li{display:flex;align-items:baseline;gap:8px}
.wm-warning{color:var(--warn);font-size:13px;margin:0 0 12px}
.wm-grid select{min-width:0;width:100%;box-sizing:border-box}
.wm-help ul{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:4px;color:var(--muted)}
.wm-chip{flex-shrink:0;white-space:nowrap;color:var(--ink-2);padding:4px 8px;border:1px solid var(--line);border-radius:6px;background:var(--surface);cursor:pointer}
.wm-chip:hover,.wm-chip:focus-visible{background:#e8f1ff;color:#114e8a}
.wm-chip code{font-size:12px;color:inherit;background:none;padding:0;border:0;box-shadow:none}
.wm-preview{margin:0}
.wm-preview canvas{display:block;width:100%;height:auto;border-radius:10px;border:1px solid var(--line)}
.wm-preview figcaption{margin-top:6px;overflow-wrap:anywhere}
.wm-honest{margin-top:12px}
@media (max-width:520px){.wm-grid{grid-template-columns:1fr}}
.check input{flex:none}

/* Settings (functions/account/settings.js) */
.pt-subnav{display:flex;gap:6px;flex-wrap:wrap;margin:-6px 0 18px}
.pt-subnav a{padding:6px 12px;border-radius:999px;background:var(--surface);border:1px solid var(--line);color:var(--ink-2);text-decoration:none;font-size:13.5px;font-weight:600}
.pt-subnav a:hover{border-color:var(--tint-border);color:var(--accent)}
.radio-card{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line);border-radius:10px;margin:0 0 8px;font-weight:400;cursor:pointer}
.radio-card input{margin-top:4px;flex:none}
.radio-card strong{display:block;font-size:14px}
.radio-card small{display:block;color:var(--muted);font-size:13px}
.radio-card:has(input:checked){border-color:var(--accent);background:var(--tint)}
.pt-card h3{font-size:14px}
[id]{scroll-margin-top:76px}
.pt-list .grow>.meta{display:block}

/* menus: a quiet line between groups (the hub's row menu) */
.pt-menu-sep{border:0;border-top:1px solid var(--line-soft);margin:6px 4px}
.pt-menu button .ico{color:var(--muted)}
.pt-menu .danger-item .ico{color:var(--bad)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.pt-title-row{display:flex;align-items:center;gap:6px;min-width:0}
.pt-title-row h1{overflow-wrap:anywhere}
.hub-bulk-sep{width:1px;align-self:stretch;background:var(--tint-border);margin:0 6px}

/* one map's parts, shared by the hub's panel and the map's page (site/portal/map-parts.js) */
.mp-people{list-style:none;margin:0;padding:0}
.mp-row{display:grid;grid-template-columns:32px minmax(0,1fr) auto;gap:4px 12px;align-items:center;padding:10px 0;border-top:1px solid var(--line-soft)}
.mp-row:first-child{border-top:0}
.mp-row.dead .grow,.mp-row.dead .av{opacity:.55}
.mp-row .av{margin:0;width:32px;height:32px;font-size:11.5px;border:0}
.mp-row .grow{min-width:0;display:flex;flex-direction:column}
.mp-row strong{font-size:14px;font-weight:600;overflow-wrap:anywhere}
.mp-row .meta{white-space:normal}
.mp-saved{font-size:12.5px;font-weight:600;min-height:0}
.mp-saved:empty{display:none}
.mp-saved.ok{color:var(--ok)}.mp-saved.bad{color:var(--bad)}
.mp-ctl{display:flex;align-items:center;gap:4px;justify-self:end}
.mp-ctl .pill{margin-right:4px}
.mp-role{width:auto;max-width:170px;padding:5px 28px 5px 10px;font-size:13px;font-weight:600;border-radius:8px;background-color:var(--surface);cursor:pointer}
.mp-role-static{background:var(--line-soft)}
.mp-opts .pt-menu{width:280px;padding:12px}
.mp-opts-h{margin:0 0 8px;font-size:13px;color:var(--muted)}.mp-opts-h b{color:var(--ink)}
.mp-chips{display:flex;gap:6px;margin-bottom:8px}
.mp-date{display:flex;gap:6px;align-items:center;font-size:13px}
.mp-date input{flex:1;padding:5px 8px;font-size:13px}
.mp-hint{margin:6px 0 0;font-size:12px;color:var(--muted)}
.mp-opts hr{margin:10px 0}
.mp-opts .check{font-size:13.5px;padding:5px 0;font-weight:500}
.mp-opts .check input:disabled+*,.mp-opts .check:has(input:disabled){color:var(--muted)}
.pt-menu .mp-menu-btn{padding:7px 4px}
.mp-remove{color:var(--muted)}
.mp-remove:hover{color:var(--bad);background:var(--bad-bg)}
.mp-life{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.mp-life-sep{width:1px;height:26px;background:var(--line);margin:0 10px}
.mp-withdrawn{background:var(--warn-bg);border:1px solid var(--warn-line);border-radius:9px;padding:9px 12px;font-size:13.5px;margin:12px 0 0}
.mp-dialog{max-width:480px}
.mp-dialog p{margin:0 0 10px}
.mp-count-h{font-size:12px;font-weight:650;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)!important;margin:14px 0 6px!important}
.mp-count{list-style:none;margin:0 0 14px;padding:10px 12px;background:var(--bad-bg);border-radius:10px;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:4px 12px;font-size:13.5px}
.mp-count b{font-variant-numeric:tabular-nums}
.mp-type{margin:0 0 8px}.mp-type input{width:100%}
.mp-ack{margin:8px 0 0;font-size:14px}
.mp-choice{border:0;padding:0;margin:8px 0 0}
.mp-skel{display:flex;gap:12px;align-items:center;padding:10px 0}
.mp-skel .grow{flex:1;display:flex;flex-direction:column}

/* one map's page (functions/account/maps.js mapPage) */
.mp-page{display:grid;gap:18px;max-width:920px}
.mp-facts{display:inline-flex;flex-wrap:wrap;align-items:center;gap:4px 8px;font-size:14px}
.mp-dot{color:#b3bcc7}
.mp-banner{display:flex;gap:10px;align-items:flex-start;background:var(--warn-bg);border:1px solid var(--warn-line);border-radius:12px;padding:12px 14px}
.mp-banner p{margin:0;font-size:14px}.mp-banner .ico{color:var(--warn);margin-top:2px}
.mp-sub{font-size:12px;font-weight:650;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0 0 4px!important}
.mp-access-note{margin:10px 0 0!important}
.mp-add{position:relative}
.mp-add>summary{list-style:none;padding:5px 10px}
.mp-add>summary::-webkit-details-marker{display:none}
.mp-add[open]>summary{background:var(--tint);border-color:var(--tint-border);color:var(--accent)}
.pt-card-head:has(.mp-add[open]){flex-wrap:wrap}
.pt-card-head .mp-add[open]{flex-basis:100%;order:3}
.mp-add .share-form{margin-top:12px;padding:14px;background:var(--bg);border-radius:10px}
.mp-more{border-top:0}
.mp-more>summary{padding:4px 0}
.mp-danger{border-color:var(--bad-line)}
.mp-danger .pt-card-head h2 .ico{color:var(--bad)}
.mp-brand{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:18px;align-items:start}
.mp-brand-side{position:sticky;top:76px}
.mp-inline-form{margin-top:10px}
.mp-nojs-delete{margin-top:14px;display:grid;gap:8px;max-width:420px}
.share-form{display:grid;gap:10px;max-width:560px}
/* Buttons are buttons (#1837): in the form's grid they keep their own width. */
.share-form>button,.share-form>.btn{justify-self:start}
/* A label wrapping its field, set out like .field: the words above the box. */
.share-form>label:not(.check):not(.field){display:grid;gap:6px;font-weight:600;font-size:14px}
.share-form>label:not(.check):not(.field) input{font-weight:400}
.share-form .field{margin:0}
.share-form textarea,.share-form select,.share-form input[type=password],.share-form input[type=text]{width:100%}
.share-form .check{font-weight:400;font-size:14px}
.access-row{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:flex-end}
.access-row .field{flex:0 1 220px}
.people-chips{display:flex;flex-wrap:wrap;gap:6px}
.people-chips .chip{display:inline-flex;gap:6px;align-items:center;border:1px solid #d7dde3;border-radius:20px;padding:3px 4px 3px 11px;font-size:13px;background:var(--surface)}
.people-chips .chip button{padding:3px 9px;font-size:12px;border-radius:14px;background:var(--line-soft);color:var(--ink-2);border:0}
.people-chips .chip button[aria-pressed=true]{background:var(--ink);color:#fff}
.fresh{background:var(--ok-bg);border:1px solid var(--ok-line);border-radius:12px;padding:14px 16px}
.fresh p{margin:0 0 6px}.fresh .row{margin-top:6px;flex-wrap:nowrap}.fresh input{flex:1;min-width:0}
.fn-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}.fn-list li{border-top:1px solid var(--line-soft);padding-top:10px}
.fn-list li:first-child{border-top:0;padding-top:0}
.fn-list p{margin:0 0 3px;font-size:14px}
.badge.fn-cat{background:var(--line-soft);color:var(--ink-2);margin-right:6px}.fn-issue .badge.fn-cat{background:var(--bad-bg);color:var(--bad)}.fn-asbuilt .badge.fn-cat{background:var(--ok-bg);color:var(--ok)}
.fn-photos{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.fn-photos img{width:88px;height:66px;object-fit:cover;border-radius:6px;border:1px solid var(--line);display:block}
.pt-dialog input[type=text]{width:100%}
.pt-dialog .picks{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 0}
.pt-dialog .picks button{background:var(--line-soft);color:var(--ink);border:0;border-radius:20px;padding:5px 11px;font-size:13px;font-weight:500}
@media (max-width:760px){
  .mp-brand{grid-template-columns:1fr}
  .mp-brand-side{position:static;order:-1}
}
@media (max-width:520px){
  .mp-row{grid-template-columns:32px minmax(0,1fr)}
  .mp-ctl{grid-column:2;justify-self:start;flex-wrap:wrap}
  .mp-opts .pt-menu{position:fixed;left:16px;right:16px;top:auto;bottom:16px;width:auto;z-index:60}
  .mp-life-sep{display:none}
  .mp-life{gap:8px}
  .mp-life .btn.danger{margin-left:auto}
  .pt-head-actions form,.pt-head-actions .btn,.pt-head-actions button{flex:1 1 auto;justify-content:center}
  .pt-head-actions form button{width:100%;justify-content:center}
}
/* In the side panel the controls sit under the name, so a long address keeps its width. */
.hub-panel .mp-row{grid-template-columns:32px minmax(0,1fr)}
.hub-panel .mp-ctl{grid-column:2;justify-self:start;flex-wrap:wrap}
/* The row menu holds controls, not only menu items: keep them their own size. */
.mp-opts .pt-menu .mp-chips button,.mp-opts .pt-menu .mp-date button{width:auto;display:inline-flex;justify-content:center;padding:5px 10px;border:1px solid var(--control-line);background:var(--surface);font-weight:600;font-size:13px}
.mp-opts .pt-menu .mp-chips button:hover,.mp-opts .pt-menu .mp-date button:hover{background:var(--bg)}
.mp-opts .pt-menu .mp-date input{flex:1 1 auto;width:auto;min-width:0}
.mp-opts .pt-menu label.check{display:flex;width:100%}

/* Shared maps' sections (2026-09-28): the sub-menu with counts, stars, drafts. */
.pt-nav .pt-count{margin-left:auto;font-size:12px;font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums}
.pt-nav a[aria-current=page] .pt-count{color:var(--accent)}
.pt-mapnav{margin:2px 0 6px!important;padding-left:30px!important;gap:1px!important}
.pt-mapnav a{padding:6px 10px;font-size:13.5px;font-weight:500;gap:8px}
.pt-mapnav .pt-sub2 a{padding-left:24px}
.pt-mapnav .pt-sub2 a::before{content:'';width:8px;height:8px;border-left:1.5px solid var(--line);border-bottom:1.5px solid var(--line);margin:-6px 0 0 -14px;flex:none}
.pt-dotbadge{width:8px;height:8px;border-radius:50%;background:var(--warn);flex:none}
.pill.s-draft{background:#f3effc;color:#5b3fa8}
.hub-row{grid-template-columns:28px minmax(220px,2.4fr) minmax(150px,1.4fr) 150px 56px 110px 120px 76px}
.c-act{display:flex;align-items:center;gap:2px}
.hub-star[aria-pressed=true]{color:#c98a00}
.hub-star[aria-pressed=true] svg{fill:currentColor}
.hub-star[aria-pressed=false]{color:var(--muted)}
.hub-shared-row .hub-title:is(span){cursor:default}
.mp-star[aria-pressed=true]{color:#c98a00}.mp-star[aria-pressed=true] svg{fill:currentColor}
.pt-title-row .mp-inline-form{display:inline-flex}
.mp-banner.mp-draft{background:#f7f4fe;border-color:#e2d9f7;align-items:center}
.mp-banner.mp-draft .ico{color:#5b3fa8}
.mp-banner.mp-draft p{flex:1}
.mp-place{display:grid;gap:10px}
.mp-place-opt{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line);border-radius:10px;cursor:pointer}
.mp-place-opt:has(input:checked){border-color:var(--tint-border);background:var(--tint)}
.mp-place-opt input{margin-top:3px}
.mp-place-opt>span{display:grid;gap:2px}
@media (max-width:1180px){
  .hub-row{grid-template-columns:28px minmax(0,2.4fr) minmax(0,1.3fr) 150px 110px 76px}
}
@media (max-width:760px){
  .hub-row{grid-template-columns:24px minmax(0,1fr) 72px}
  .c-act{gap:0}
  .mp-banner.mp-draft{flex-wrap:wrap}
}

/* The notification bell (#1163). */
.pt-bell > summary{position:relative;display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:8px;cursor:pointer;list-style:none;color:var(--ink,#0b1220)}
.pt-bell > summary::-webkit-details-marker{display:none}
.pt-bell > summary:hover{background:var(--hover,rgba(11,18,32,.06))}
.pt-bell-count{position:absolute;top:3px;right:2px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:#b3261e;color:#fff;font:700 10px/16px system-ui,sans-serif;text-align:center;box-sizing:border-box}
.pt-bell-menu{width:min(360px,calc(100vw - 32px));right:0;left:auto;padding:0}
.pt-bell-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line,#dfe5ec)}
.pt-bell-list{list-style:none;margin:0;padding:0;max-height:min(420px,60vh);overflow:auto}
.pt-bell-list li{border-bottom:1px solid var(--line,#dfe5ec)}
.pt-menu a.pt-bell-item{display:grid;grid-template-columns:1fr;align-items:start;gap:2px;padding:10px 12px 10px 24px;border-radius:0;color:inherit;text-decoration:none;position:relative}
.pt-menu a.pt-bell-item:hover{background:var(--hover,rgba(11,18,32,.04))}
.pt-menu a.pt-bell-item.unread::before{content:"";position:absolute;left:10px;top:16px;width:7px;height:7px;border-radius:50%;background:#1263b8}
.pt-bell-line{font-size:13.5px;line-height:1.4;overflow-wrap:anywhere}
.pt-bell-excerpt{font-size:13px;color:var(--muted,#475467);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.pt-bell-when{font-size:12px;color:var(--muted,#475467)}
.pt-bell-empty{padding:14px 12px;font-size:13px;color:var(--muted,#475467)}
.pt-menu a.pt-bell-foot{display:block;padding:10px 12px;border-radius:0;font-size:13px}
.pt-bell-head .btn{width:auto}

/* The admin console (#1182): the filter row and the bulk bar on Organisation >
   Shared maps and Audit log, one wrapping row each. */
[data-share-filters],[data-audit-filters],[data-shares-bulk]{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:12px 0}
[data-shares-bulk]{position:static;padding:10px 12px;border:1px solid var(--line-soft);border-radius:10px;background:var(--line-soft)}
[data-shares-bulk] label{display:inline-flex;align-items:center;gap:6px;font-weight:600}
[data-shares-bulk] label.check{font-weight:400}
td.nowrap{white-space:nowrap;font-variant-numeric:tabular-nums}

/* When a map's links expire (#1185): a date and time, or N after an event. */
.mp-expiry{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.mp-exp-words{margin:2px 0 8px;font-weight:600}
.mp-exp-form{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.mp-exp-form select,.mp-exp-form input{font:inherit;padding:5px 8px;border-radius:7px;border:1px solid var(--line);background:transparent;color:inherit}
.mp-exp-form input[type=number]{width:5.5em}
.mp-exp-at,.mp-exp-event{display:inline-flex;flex-wrap:wrap;align-items:center;gap:8px}
.mp-exp-at[hidden],.mp-exp-event[hidden]{display:none}
/* A titled section below a tab's cards (#1254: Custom domain on Organisation → Settings). */
.pt-section{margin-top:28px}
.pt-section-title{font-size:18px;margin:0 0 4px}
.pt-section>.muted{margin:0 0 14px}
/* Add user on Settings → Licence and seats (#1257): a button that opens the invitation. */
.add-user{margin:0 0 14px}
.add-user>summary{display:inline-flex;list-style:none;padding:6px 12px}
.add-user>summary::-webkit-details-marker{display:none}
.add-user[open]>summary{margin-bottom:6px}
/* Shared maps' sections, open on every page, folded by the chevron (#1264). */
.pt-nav-row{display:flex;align-items:center;gap:2px}
.pt-nav-row>a{flex:1;min-width:0}
.pt-fold{flex:none;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:0;border-radius:7px;background:transparent;color:var(--muted);cursor:pointer}
.pt-fold:hover{background:var(--bg);color:var(--ink)}
.pt-fold .ico{transition:transform .15s ease}
.pt-maps-group.folded .pt-fold .ico{transform:rotate(-90deg)}
.pt-maps-group.folded .pt-mapnav{display:none!important}
html.no-js .pt-fold{display:none}
@media (prefers-reduced-motion:reduce){.pt-fold .ico{transition:none}}
/* A wide table scrolls inside its card, never the page (#1254, 375px). Relative,
   so a visually hidden header inside it cannot widen the page (#1851). */
.pt-scroll,.st-table-wrap{overflow-x:auto;max-width:100%;position:relative}
/* Phones (#1851): the audit log's rows become stacked cards, and the shared
   maps table scrolls inside its card. */
@media (max-width:760px){
  table[data-audit] thead{display:none}
  table[data-audit],table[data-audit] tbody,table[data-audit] tr,table[data-audit] td{display:block;width:100%}
  table[data-audit] tr{padding:12px 0;border-bottom:1px solid var(--line-soft)}
  table[data-audit] td{padding:2px 0;border:0;overflow-wrap:anywhere}
  table[data-audit] td:empty{display:none}
  table[data-audit] td[data-label]{font-size:12.5px;color:var(--muted)}
  table[data-shares]{display:block;overflow-x:auto;position:relative;max-width:100%}
}
/* The organisation, in the person menu (#1263). */
.pt-menu-orgs{margin:0 0 6px;padding:0 0 6px;border-bottom:1px solid var(--line-soft)}
.pt-menu-label{margin:6px 10px 2px;font-size:11px;font-weight:650;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.pt-menu-org{display:flex;align-items:center;gap:10px;padding:7px 10px;font-size:14px;font-weight:600;color:var(--ink);overflow-wrap:anywhere}
.pt-menu-org .ico{flex:none;color:var(--accent)}

/* Projects: readable forms and tables on phones as well as desktop. */
.project-workspace {max-width:1100px}
.project-workspace .pt-card {margin-bottom:20px}
.project-form {display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:14px 20px;margin:16px 0}
.project-form label {display:flex;flex-direction:column;gap:6px;font-weight:500;min-width:0}
.project-form input,.project-form select,.project-form textarea {width:100%;box-sizing:border-box}
.project-form textarea,.project-form details,.project-form>p {grid-column:1/-1}
.project-workspace details {padding:14px 0;border-bottom:1px solid var(--border,#e6ebf1)}
/* The discussion card keeps its card padding; the generic rule above must not flatten it to the edge. */
.project-workspace details.pt-discuss {padding:20px 22px;border-bottom:0}
.project-workspace summary {cursor:pointer;padding:6px 0}
.project-workspace .pt-list .project-form {display:block;margin:0 0 0 12px}
.project-workspace .pt-list .project-form p {margin:0}
.project-workspace dt {font-weight:600;margin-top:12px}
.project-workspace dd {margin:4px 0 0}
.project-workspace article {border-bottom:1px solid #e6ebf1;padding:12px 0}
/* A project opens on its contents, like a Drive folder (#1567). */
.project-workspace details.pt-menu-wrap{padding:0;border:0}
.project-workspace details.pt-menu-wrap>summary{padding:0}
.pj-contents{position:relative}
.pj-contents .pt-card-head{flex-wrap:wrap;gap:10px}
.pj-tools{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.pj-tools .btn{display:inline-flex;align-items:center;gap:7px;cursor:pointer}
.pj-tools label.btn:focus-within{outline:2px solid var(--accent);outline-offset:2px}
.pj-attach .pt-menu{width:320px;max-width:calc(100vw - 48px);padding:12px}
.pj-attach .project-form{display:block;margin:0}.pj-attach .project-form label{margin-bottom:10px}
.pj-row{gap:12px}
.pj-open-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.pj-row .title{white-space:normal;overflow-wrap:anywhere}
.pj-ico{flex:none;display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:var(--line-soft);color:var(--muted)}
.pj-ico.pj-map{background:var(--tint);color:var(--accent)}
.pj-row .pt-menu a,.pj-row .pt-menu button{white-space:nowrap}
.pj-row .pt-menu form{margin:0}
.pj-row .pt-menu button{background:none;border:0;font-weight:500;text-align:left}
.pj-row .pt-menu button.danger-item{color:var(--bad)}
.pj-empty{text-align:center;padding:26px 12px;border:1.5px dashed var(--line);border-radius:12px;color:var(--muted)}
.pj-empty p{margin:4px 0}.pj-empty .ico{color:var(--muted)}
.pj-drop-hint{margin:10px 0 0}
.pj-contents.is-drop{outline:2px dashed var(--accent);outline-offset:-6px;background:var(--tint)}
.pj-contents [data-upload-status]:empty{display:none}
.project-workspace .pj-more{border-bottom:0;padding:10px 0 0;font-size:14px}
.pj-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:4px 20px;margin:0}
.pj-facts dd{white-space:pre-wrap;overflow-wrap:anywhere}
.pj-dialog{max-width:640px}
.pj-dialog-head{display:flex;justify-content:space-between;align-items:center;gap:12px}
.pj-dialog-head h2{margin:0}
.pj-dialog .project-form{margin:12px 0}
.pj-archive{border-top:1px solid var(--line-soft);padding-top:10px}
.pj-inline{margin:6px 0 0}
.project-workspace .pj-attach>summary{padding:8px 14px;display:inline-flex;align-items:center;gap:7px}
@media (hover:none){.pj-drop-hint{display:none}}
.pt-head-actions .btn .ico{margin-right:6px;vertical-align:-3px}

/* Assistant setup: one provider and one step at a time. */
.as-guide{max-width:880px;margin-top:24px}.as-steps{display:flex;gap:8px;list-style:none;padding:0;margin:0 0 22px;flex-wrap:wrap}.as-steps li{flex:1;min-width:140px}.as-steps a{display:flex;gap:9px;align-items:center;padding:12px;border-radius:10px;text-decoration:none;color:inherit;background:#eef2f6;font-size:14px}.as-steps a[aria-current]{background:#e3f0ff;color:#075cb2;font-weight:650;box-shadow:inset 0 0 0 1px #1263b8}.as-steps a span{font-weight:700}.as-body{padding:28px}.as-body h2{font-size:24px;margin:0 0 18px}.as-body p{max-width:65ch}.as-kicker{font-size:12px;font-weight:700;letter-spacing:.08em;color:#526176}.as-copy{display:flex;gap:8px;align-items:center}.as-copy input{min-width:0;flex:1;font-family:ui-monospace,monospace;font-size:14px}.as-actions{padding-left:24px}.as-actions li{padding:8px 0}.as-shot{margin:24px 0}.as-shot img{display:block;width:auto;max-width:100%;max-height:420px;border-radius:12px;border:1px solid #dce3ed}.as-shot figcaption{font-size:12px;color:#526176;max-width:62ch;margin-top:8px}.as-next{display:flex;justify-content:space-between;gap:12px;border-top:1px solid #e0e6ef;margin-top:28px;padding-top:20px}.as-body details{margin-top:20px}.as-body .field{margin:18px 0}@media(max-width:600px){.as-body{padding:18px}.as-steps li{min-width:40%}.as-next a{font-size:13px}.as-copy{flex-wrap:wrap}.as-copy input{width:100%}}

@media(min-width:1100px){.as-guide{max-width:1100px}.as-split{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:28px;align-items:start}.as-split .as-shot{margin:0}.as-split .as-shot img{max-height:560px}.as-split .as-copy{flex-wrap:wrap}}

/* Keep icon management usable in narrow portal panels. */
.icon-library-item {align-items:flex-start!important}
.icon-library-item>img {object-fit:contain;flex-shrink:0}
.icon-library-item strong {overflow-wrap:anywhere}
.icon-library-item details {margin-top:8px}
.icon-library-item form {display:flex;align-items:flex-end;flex-wrap:wrap;gap:10px;margin-top:12px}
.icon-library-item label {flex:1 1 180px;min-width:0}
.icon-library-item input[name=name] {display:block;width:100%;box-sizing:border-box}

.project-create-sharing { grid-column: 1 / -1; min-width: 0; margin: 4px 0; padding: 20px; border: 1px solid var(--border, #dce3ec); border-radius: 12px; }
.project-create-sharing legend { font-weight: 700; padding: 0 6px; }
.project-create-sharing p { line-height: 1.5; }
.project-share-people { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 16px; }
.project-share-people label { overflow-wrap: anywhere; min-width: 0; }
.wm-switch{display:inline-flex;align-items:center;gap:10px;font-weight:600;cursor:pointer;margin:2px 0 6px}
.wm-switch input{position:absolute;opacity:0;width:1px;height:1px}
.wm-switch-track{flex:none;width:38px;height:22px;border-radius:11px;background:var(--line);position:relative;transition:background .15s}
.wm-switch-track::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.25);transition:transform .15s}
.wm-switch input:checked+.wm-switch-track{background:var(--accent)}
.wm-switch input:checked+.wm-switch-track::after{transform:translateX(16px)}
.wm-switch input:focus-visible+.wm-switch-track{outline:2px solid var(--accent);outline-offset:2px}
.wm-form+[data-wm-settings]{margin-top:16px}

/* The open log on a shared map's page (#1341). */
.ol-note{margin:6px 0 12px}
.ol-filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 8px}
.ol-filters select,.ol-filters input{min-width:0;max-width:100%}
.ol-filters input[name=who]{flex:1 1 180px}
.ol-filters input[name=country]{width:8em}
.ol-date{display:flex;gap:6px;align-items:center;font-size:13px;color:var(--muted)}
.ol-table{font-size:13.5px}
.ol-table td:first-child,.ol-table td.ol-ip{white-space:nowrap}
.ol-table td.ol-ip{font-variant-numeric:tabular-nums}
.ol-table td .small{display:block}
.mp-brand-sum{display:flex;flex-wrap:wrap;gap:8px 28px;margin:0 0 12px}
.mp-brand-sum div{display:flex;flex-direction:column;gap:2px}
.mp-brand-sum dt{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.mp-brand-sum dd{margin:0;font-weight:600}
.mp-brand-edit>summary{list-style:none;display:inline-flex;cursor:pointer}
.mp-brand-edit>summary::-webkit-details-marker{display:none}
.mp-brand-edit[open]>summary{margin-bottom:14px}
.mp-brand-choices{border:0;margin:0 0 14px;padding:0;display:grid;gap:8px}
.mp-brand-choices legend{font-weight:600;margin-bottom:6px;padding:0}
.mp-brand-opt{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line);border-radius:10px;cursor:pointer}
.mp-brand-opt:has(input:checked){border-color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,transparent)}
.mp-brand-opt input{margin-top:3px;flex:none}
.mp-brand-opt span{display:flex;flex-direction:column;gap:2px}
.brand-templates{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.brand-templates li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 0;border-top:1px solid var(--line)}
.brand-templates li:first-child{border-top:0}
/* The Move picker (#1390). */
.mv-picker{width:min(560px,calc(100vw - 32px));max-height:min(640px,calc(100vh - 32px))}
.mv-form{display:flex;flex-direction:column;gap:10px;min-height:0}
.mv-form h2{margin:0;overflow-wrap:anywhere}
.mv-search input{width:100%}
.mv-crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:4px;font-size:14px}
.mv-crumb{background:none;border:0;padding:2px 4px;border-radius:6px;color:var(--accent);font:inherit;cursor:pointer}
.mv-crumb[aria-current]{color:var(--ink);font-weight:600;cursor:default}
.mv-sep{color:var(--muted)}
.mv-list{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:10px;overflow:auto;min-height:180px;max-height:320px}
.mv-list li+li{border-top:1px solid var(--line)}
.mv-item{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;background:none;border:0;text-align:left;font:inherit;color:inherit;cursor:pointer;min-height:44px}
.mv-item::before{content:"";flex:none;width:18px;height:14px;border-radius:3px;background:var(--line)}
.mv-item[data-ico=place]::before{background:var(--accent);opacity:.55}
.mv-item[data-ico=project]::before{border-radius:50%;width:14px;background:#7c3aed;opacity:.6}
.mv-item:hover,.mv-item:focus-visible{background:color-mix(in srgb,var(--accent) 8%,transparent);outline:none}
.mv-item.here .mv-name::after{content:" · here now";color:var(--muted);font-weight:400}
.mv-name{font-weight:600;overflow-wrap:anywhere}
.mv-sub{margin-left:auto;white-space:nowrap}
.mv-empty{padding:14px 12px}
.mv-new{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.mv-new label{flex:1;min-width:160px}.mv-new input{width:100%}
.mv-where,.mv-error{margin:0}
.mv-spacer{flex:1}
@media (max-width:520px){.mv-picker{width:calc(100vw - 16px);max-height:calc(100vh - 16px)}.mv-list{max-height:none;flex:1}}

/* Organisation → Settings → Managed settings (lib/portal/managed-settings.js, #1411) */
.ms-row{display:grid;grid-template-columns:minmax(0,1.1fr) auto minmax(0,1.4fr);gap:8px 16px;align-items:start;padding:12px 0;border-top:1px solid var(--line-soft)}
.ms-row:first-of-type{border-top:0}
.ms-label strong{display:block;font-size:14px;font-weight:600}
.ms-label small{display:block;margin-top:2px;font-size:12.5px}
.ms-mode{display:flex;flex-direction:column;gap:4px;font-size:13.5px;white-space:nowrap}
.ms-mode label,.ms-choice label{display:flex;gap:6px;align-items:center;font-weight:400;margin:0;cursor:pointer}
.ms-choice{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:13.5px}
.ms-list{flex-direction:column}
.ms-value select,.ms-value input[type=text]{max-width:220px}
.ms-row:has(.ms-mode input[value=choose]:checked) .ms-value{opacity:.45}
.ms-row:has(.ms-mode input[value=set]:checked) .ms-label strong::after{content:"Set for everyone";margin-left:8px;padding:1px 7px;border-radius:999px;background:var(--tint);color:var(--accent);font-size:11.5px;font-weight:600;vertical-align:1px;display:inline-block;white-space:nowrap}
.ms-save{justify-content:flex-end;margin-top:4px}
.ms-keys td,.ms-keys th{padding:6px 8px 6px 0;text-align:left;vertical-align:middle}
.ms-keys{font-size:13px}
.ms-keys code{font-size:12.5px;white-space:nowrap}
.ms-keyform{display:grid;gap:8px;margin-top:12px}
.ms-keyform label{display:grid;gap:4px;font-size:13px}
@media (max-width:720px){.ms-row{grid-template-columns:1fr}.ms-mode{flex-direction:row;flex-wrap:wrap;gap:4px 14px}}

/* The Share dialog (#1567): one field for people, groups and emails, then who has access. */
.sh-dialog{max-width:560px;padding:20px 22px}
.sh-dialog.is-busy{cursor:progress}.sh-dialog.is-busy button,.sh-dialog.is-busy select{pointer-events:none;opacity:.6}
.sh-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 12px}
.sh-head h2{margin:0;font-size:19px;overflow-wrap:anywhere}
.sh-field{position:relative;display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:6px 8px;border:1.5px solid var(--accent);border-radius:10px;background:var(--surface)}
.sh-chips{display:contents}
.sh-field .sh-input{flex:1 1 180px;min-width:120px;width:auto;border:0;outline:0;box-shadow:none;padding:6px 4px;font:inherit;font-size:15px;background:transparent;color:var(--ink)}
.sh-field:focus-within{box-shadow:0 0 0 3px var(--tint-border)}
.sh-chip{display:inline-flex;align-items:center;gap:4px;max-width:100%;padding:3px 4px 3px 10px;border-radius:16px;background:var(--line-soft);font-size:13.5px;font-weight:600;color:var(--ink)}
.sh-chip.outside{background:#fff4e0}
.sh-chip-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}
.sh-chip select.sh-role{width:auto;padding:2px 22px 2px 6px;font-size:12.5px;border-radius:7px;background-color:transparent;border-color:transparent;box-shadow:none}
.sh-chip-x{background:none;border:0;padding:0 6px;font-size:17px;line-height:1;color:var(--muted);cursor:pointer}
.sh-chip-x:hover{background:none;color:var(--bad)}
.sh-options{position:absolute;left:-1.5px;right:-1.5px;top:calc(100% + 4px);z-index:5;list-style:none;margin:0;padding:6px;max-height:280px;overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 32px rgba(11,18,32,.16)}
.sh-option{display:flex;align-items:center;gap:10px;padding:8px;border-radius:8px;cursor:pointer}
.sh-option[aria-selected=true]{background:var(--tint)}
.sh-option.empty{cursor:default;color:var(--muted);font-size:13.5px}
.sh-av{flex:none;display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:#e3ecf7;color:var(--accent);font-size:11.5px;font-weight:700}
.sh-av.group{background:var(--line-soft);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235a6675' stroke-width='1.8' stroke-linecap='round'%3E%3Ccircle cx='9' cy='8' r='3.5'/%3E%3Cpath d='M2.5 20a6.5 6.5 0 0 1 13 0M16 4.5a3.5 3.5 0 0 1 0 7M21.5 20a6.5 6.5 0 0 0-4-6'/%3E%3C/svg%3E");background-size:18px;background-repeat:no-repeat;background-position:center}
.sh-av.outside{background:#fff4e0;color:#8a5a00}
.sh-opt-text{flex:1;min-width:0;display:flex;flex-direction:column}
.sh-opt-name{font-weight:600;font-size:14px;color:var(--ink);overflow-wrap:anywhere}
.sh-opt-sub{font-size:12.5px;color:var(--muted)}
.sh-note{margin:8px 0 0}
.sh-message{display:flex;flex-direction:column;gap:4px;margin:10px 0 0}
.sh-message textarea{width:100%;box-sizing:border-box}
.sh-error{margin:10px 0 0;color:var(--bad);font-size:13.5px;font-weight:600}
.sh-send{display:flex;justify-content:flex-end;gap:8px;margin:12px 0 0}
.sh-link{margin:12px 0 0;padding:10px 12px;border-radius:10px;background:var(--tint)}
.sh-link p{margin:0 0 8px}
.sh-link-row{display:flex;gap:8px}.sh-link-row input{flex:1;min-width:0}
.sh-sub{margin:18px 0 4px;font-size:14px;color:var(--ink)}
.sh-access{list-style:none;margin:0;padding:0;max-height:min(46vh,360px);overflow:auto}
.sh-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--line-soft)}
.sh-row:first-child{border-top:0}
.sh-row select.sh-role{flex:none;width:auto;max-width:170px;padding:5px 26px 5px 8px;font-size:13px;font-weight:600;border-radius:8px}
.sh-fixed{flex:none;font-size:13px;color:var(--muted);padding-right:8px}
.sh-foot{margin:10px 0 0}
.sh-done{margin-top:10px}
@media (max-width:520px){
  .sh-dialog{padding:16px 14px;width:calc(100% - 16px)}
  .sh-row .sh-role{max-width:46%}
  .sh-chip-name{max-width:130px}
}
.pj-sub{margin:18px 0 4px;font-size:15px}
.pj-access .pj-inline-form{display:flex;gap:6px;align-items:center;margin:0}
.pj-access .pj-inline-form select{width:auto;padding:5px 26px 5px 8px;font-size:13px}
.pj-access>li{flex-wrap:wrap}
.pj-fixed{font-size:13px;color:var(--muted)}

/* Home cards flow independently of the taller quick-actions column. */
.pt-home-main{align-content:start}
.pt-home-clear{padding:8px 0;text-align:left;display:grid;grid-template-columns:40px minmax(0,1fr);column-gap:12px;align-items:start}
.pt-home-clear .ico{grid-row:span 2;width:36px;height:36px;padding:7px}
.pt-home-clear h3{margin:0 0 4px}
.pt-home-clear p{grid-column:2;margin:0;max-width:none}

/* Project header: separate labels, controls and actions at every width. */
.pj-filters{display:grid;grid-template-columns:minmax(220px,2fr) minmax(150px,1fr) minmax(170px,1fr) auto;gap:20px;align-items:end;margin:8px 0 24px;padding:20px;background:var(--surface,#fff);border:1px solid var(--line);border-radius:12px}
.pj-filters>label{display:flex;flex-direction:column;gap:8px;min-width:0;font-size:13px;font-weight:600;color:var(--body)}
.pj-filters input,.pj-filters select{width:100%;min-width:0;min-height:42px;margin:0;font-size:14px;font-weight:400}
.pj-filter-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.pj-filter-actions button,.pj-filter-actions .btn{min-height:42px;display:inline-flex;align-items:center;justify-content:center}
@media(max-width:1180px){.pj-filters{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.pj-filters{grid-template-columns:minmax(0,1fr);gap:16px;padding:16px}.pj-filter-actions>*{flex:1}}

/* Keep creation out of the project list until explicitly opened. */
.pj-create-page{max-width:760px}
.pj-create-page .project-form{grid-template-columns:repeat(2,minmax(0,1fr))}
.pj-create-page .project-form>label:first-of-type,.pj-create-page .project-form>label:has(textarea){grid-column:1/-1}
@media(max-width:640px){.pj-create-page .project-form{grid-template-columns:1fr}}

.pt-support-banner{position:sticky;top:60px;z-index:19;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 28px;background:#fff3cd;color:#503a00;border-bottom:2px solid #d5a729}
.pt-support-banner strong{display:block;font-size:15px;overflow-wrap:anywhere}
.pt-support-banner span{display:block;font-size:12px;margin-top:5px;overflow-wrap:anywhere}
.pt-support-banner form{margin:0;flex:none}
.pt-support-banner .btn{background:#503a00;color:#fff;border-color:#503a00;white-space:nowrap}
@media(max-width:600px){.pt-support-banner{padding:12px 16px;flex-wrap:wrap;gap:10px}.pt-support-banner form,.pt-support-banner .btn{width:100%}}

.hub-upload-target{display:flex;align-items:center;justify-content:center;gap:16px;width:100%;padding:22px;margin:16px 0;border:2px dashed #8eadd2;border-radius:12px;background:#f5f9ff;color:#155fac;cursor:pointer;text-align:left;font:inherit}
.hub-upload-target svg{flex:none}
.hub-upload-target strong,.hub-upload-target small{display:block}
.hub-upload-target small{margin-top:5px;color:#52657b;line-height:1.5}
.hub-upload-target:hover{background:#eaf3ff;border-color:#1567bc}
.hub-upload-target:focus-visible{outline:3px solid #1567bc;outline-offset:3px}

.pt-app-shortcuts{display:flex;align-items:center;gap:8px;flex:none}
.pt-app-shortcuts a{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
@media(max-width:700px){.pt-app-shortcuts a span{display:none}.pt-app-shortcuts a{padding:8px}.pt-app-shortcuts{gap:4px}}

/* Consistent workspace navigation and file-like project rows. */
.pt-create{margin:0 0 20px;flex:none}
.pt-create>summary{display:flex;align-items:center;gap:12px;width:fit-content;padding:13px 20px;border-radius:14px;background:#e5effb;color:var(--avatar-ink);font-weight:650;box-shadow:0 1px 3px #18355320}
.pt-create>summary:hover{background:#d8e8fb}
.pt-create .pt-menu{left:0;right:auto;width:320px;min-width:0;max-width:calc(100vw - 32px);max-height:calc(100dvh - 140px);overflow-y:auto}
.pt-create .pt-menu a>span{min-width:0;white-space:normal;overflow-wrap:anywhere}
.pt-create .pt-menu .ico{flex:none}
.pt-create small{display:block;margin-top:3px;font-size:12px;color:var(--muted);font-weight:400}
.pj-list-head,.pj-project-row{display:grid;grid-template-columns:minmax(180px,2fr) minmax(110px,1fr) minmax(90px,.7fr) minmax(90px,.7fr);align-items:center;gap:18px;padding:14px 8px}
.pj-list-head{color:var(--muted);font-size:12px;border-bottom:1px solid var(--line);font-weight:600}
.pj-project-list{list-style:none;padding:0;margin:0}
.pj-project-list li+li{border-top:1px solid var(--line-soft)}
.pj-project-row{color:var(--ink);text-decoration:none;border-radius:8px;font-size:14px}
.pj-project-row:hover{background:var(--tint);color:var(--ink)}
.pj-project-name{display:flex;align-items:center;gap:14px;min-width:0}
.pj-project-name>.ico{color:var(--accent);flex:none}
.pj-project-name>span{min-width:0}
.pj-project-name strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pj-project-name small{display:block;font-size:12px;color:var(--muted);margin-top:3px}
.pj-project-customer{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pj-project-due{font-size:13px;color:var(--body)}
.hub-upload-target{scroll-margin-top:90px}
@media(max-width:700px){.pj-list-head{display:none}.pj-project-row{grid-template-columns:minmax(0,1fr) auto;gap:10px}.pj-project-customer,.pj-project-due{display:none}.pt-top .pt-email{display:none}.pt-top .pt-brand-top{display:none}.pt-create .pt-menu{position:relative;margin-top:8px;min-width:0;width:100%}}

/* Organisation automation forms: readable labels, bounded width, no horizontal scroll. */
.workflow-layout{display:grid;gap:20px;max-width:1000px}
.workflow-layout .project-form{display:grid;gap:18px}
.workflow-layout label,.workflow-fields label{display:grid;gap:8px}
.workflow-layout input:not([type=checkbox]),.workflow-layout select,.workflow-layout textarea,.workflow-fields input,.workflow-fields select{width:100%;box-sizing:border-box}
.workflow-layout [data-workflow-kind]{display:grid;gap:16px}
.workflow-layout [hidden]{display:none}
.workflow-list{list-style:none;margin:0;padding:0}
.workflow-list>li{padding:16px 0;border-bottom:1px solid var(--line,#dce3ec);overflow-wrap:anywhere}
.workflow-row{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.workflow-row>div{flex:1;min-width:200px}.workflow-row p{margin:6px 0}
.workflow-fields{grid-column:1/-1;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:18px;border:1px solid var(--line,#dce3ec);border-radius:10px;padding:18px;margin:16px 0}
.workflow-fields legend{font-weight:600;padding:0 6px}
.workflow-layout .project-form{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
.workflow-layout label{align-content:start}
.workflow-layout .project-form>p,.workflow-layout [data-workflow-kind]{grid-column:1/-1}
.workflow-layout [data-workflow-kind]{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
.workflow-layout [data-workflow-kind]>p,.workflow-layout [data-workflow-kind]>label:has(textarea){grid-column:1/-1}
.workflow-layout label:has(input[type=checkbox]){display:flex;align-items:center}
.workflow-layout .workflow-row .project-form{display:block}
@media(max-width:680px){.workflow-layout .project-form,.workflow-layout [data-workflow-kind]{grid-template-columns:1fr}}
.workflow-layout label:has(input[type=checkbox]){flex-direction:row;justify-content:flex-start;align-self:center}

/* File review: the original beside its anchored conversation. */
.file-review-layout{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(300px,1fr);gap:24px;align-items:start}
.file-review-image{position:relative;line-height:0;margin-bottom:24px;cursor:crosshair}
.file-review-image img{display:block;width:100%;height:auto;border-radius:10px}
.file-review-pin{position:absolute;transform:translate(-50%,-50%);display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#c62828;color:white;border:2px solid white;box-shadow:0 1px 5px #0006;font:700 13px/1 sans-serif;text-decoration:none}
.file-review-pin[hidden]{display:none}
.file-review-layout article:target{outline:3px solid #1266c6;outline-offset:2px}
@media(max-width:800px){.file-review-layout{grid-template-columns:1fr}}

/* Group directory and focused management workspace. */
.gm-workspace{margin:0}.gm-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;margin:22px 0}.gm-heading h2{font-size:26px;margin:0 0 8px}.gm-heading h3{margin:0}.gm-heading p{margin:0}.gm-stats{display:flex;gap:32px;margin:24px 0;color:var(--muted,#617086)}.gm-stats strong{color:var(--text,#152238);font-size:22px;margin-right:6px}.gm-panel{background:var(--surface,#fff);border:1px solid var(--border,#dce3ed);border-radius:14px;overflow:hidden}.gm-detail{padding:28px}.gm-search{margin:14px 0}.gm-search input{display:block;width:100%;max-width:420px}.gm-table-wrap{overflow-x:auto}.gm-table{width:100%;border-collapse:collapse;text-align:left}.gm-table th{font-size:12px;color:#58677e;background:#f8fafc;padding:14px 20px;white-space:nowrap}.gm-table td{padding:20px;border-top:1px solid #e6ebf2}.gm-table tbody tr:hover{background:#f6f9ff}.gm-table a{text-decoration:none}.gm-empty{padding:36px 20px;text-align:center;color:#617086}.gm-empty h3{color:#17243a}.gm-tabs{display:flex;gap:8px;margin:20px 0}.gm-tabs a{padding:12px 18px;border-radius:8px;text-decoration:none;color:#506078;font-weight:600}.gm-tabs a[aria-current]{background:#e8f1ff;color:#075cba}.gm-members{list-style:none;padding:0;margin:20px 0 0}.gm-members li{display:flex;align-items:center;gap:14px;padding:18px 0;border-bottom:1px solid #e6ebf2}.gm-members small{display:block;color:#637188;margin-top:4px}.gm-members .grow{flex:1;min-width:0;overflow-wrap:anywhere}.gm-avatar{display:grid;place-items:center;flex-shrink:0;width:38px;height:38px;border-radius:50%;background:#e8f1ff;color:#145db3;font-weight:600}.gm-members form p,.gm-candidates form p{margin:0}.gm-members button{background:transparent;color:#56657a;border:1px solid #dce3ed}.gm-create-menu{width:320px;padding:14px}.gm-create-menu form{margin:0}.gm-add{padding:16px 0}.gm-add>input{margin:16px 0;width:100%}.gm-candidates{max-height:320px;overflow:auto}.gm-candidates>div{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:12px 0;border-bottom:1px solid #edf0f5}.gm-candidates>div[hidden]{display:none}.gm-detail .project-form{max-width:520px}.gm-detail hr{border:0;border-top:1px solid #e6ebf2;margin:28px 0}.gm-danger{margin-top:32px;padding-top:20px;border-top:1px solid #e6ebf2}.gm-danger summary{color:#b42318;cursor:pointer}.gm-back{font-size:14px}.gm-detail input,.gm-detail select{max-width:100%}@media(max-width:650px){.gm-heading{flex-direction:column}.gm-stats{gap:14px;flex-wrap:wrap}.gm-detail{padding:18px}.gm-table th,.gm-table td{padding:14px}.gm-members li{flex-wrap:wrap}.gm-create-menu{width:min(320px,calc(100vw - 48px))}}
.gm-members .project-form,.gm-candidates .project-form{width:auto;flex:none;margin:0}.gm-detail .gm-heading{margin:0 0 20px}.gm-add summary{cursor:pointer}

.guest-remove{margin-top:20px;border-top:1px solid var(--line);padding-top:18px}.guest-remove>summary{color:var(--bad);font-weight:600;cursor:pointer}.guest-remove .guest-confirm{display:flex;flex-direction:row;align-items:flex-start;gap:10px;cursor:pointer;font-weight:400;max-width:640px}.guest-remove .guest-confirm input[type=checkbox]{width:18px;height:18px;min-width:18px;flex:0 0 18px;margin:3px 0 0;padding:0;align-self:flex-start}.guest-remove .guest-confirm span{flex:1}.guest-remove button{background:var(--bad);border-color:var(--bad);color:#fff}
/* File review: the document remains visible beside its anchored conversations. */
.review-toolbar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin:0 0 16px}.review-toolbar label{display:flex;align-items:center;gap:8px}.review-toolbar [aria-pressed=true]{background:#914600}
.review-live-banner{flex:1 0 100%;display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;background:var(--tint);border:1px solid var(--line);font-weight:600}
.review-canvas{position:sticky;top:76px;min-width:0}#review-map{height:calc(100vh - 245px);min-height:420px;border:1px solid var(--line);border-radius:12px;overflow:hidden}.review-placing canvas,.review-placing img{cursor:crosshair!important}
.file-review-layout{grid-template-columns:minmax(0,1fr) 370px;gap:18px}.file-review-layout aside{min-width:0}.file-review-layout aside>.pt-card{margin-bottom:16px}.review-thread{margin:0 0 12px!important}.review-thread h3{font-size:15px}.review-thread[hidden]{display:none}.review-selected{outline:2px solid var(--accent)}.review-thread .project-form{display:block;margin:10px 0}.review-thread textarea{min-height:64px}.review-thread button{margin-top:8px}.review-thread:not(.review-selected){cursor:pointer}.review-map-pin{display:grid;place-items:center;box-sizing:border-box;padding:0;border-radius:50%;width:30px;height:30px;border:2px solid white;background:#1266c6;color:#fff;font-weight:700;font-size:13px;line-height:1;font-variant-numeric:tabular-nums;box-shadow:0 2px 8px #0005;cursor:pointer}.review-map-pin-active{background:#0b4ea2;box-shadow:0 0 0 4px rgba(18,102,198,.35),0 2px 8px #0005}.review-map-pin[hidden]{display:none!important}
@media(max-width:950px){.file-review-layout{grid-template-columns:1fr}.review-canvas{position:relative;top:auto}#review-map{height:55vh;min-height:320px}}

/* Project folders: browse and move without changing file identity or sharing. */
.pj-folder-nav,.pj-folder-tools{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:18px 0}
.pj-folder-nav [aria-current=page]{font-weight:700;color:var(--accent)}
.pj-folder-tools details{max-width:100%;min-width:140px}
.pj-folder-tools details[open]{flex-basis:100%;padding:16px;border:1px solid var(--border);border-radius:10px}
.pj-folder-tools summary{cursor:pointer;list-style:none}
.pj-file-check{width:18px!important;height:18px;flex:0 0 18px;accent-color:var(--accent)}
.pj-folders{margin-bottom:12px}

/* Files use everyday metadata; sharing analytics remain in Details. */
.hub-file-row{grid-template-columns:28px minmax(240px,1fr) 130px 90px 80px}
.hub-open-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.hub-file-row .c-act{display:flex;align-items:center;gap:2px}
/* A file has no star (#1835): the space it would take, so every menu lines up. */
.hub-star-slot{display:inline-block;width:34px;flex:none}
.hub-card .hub-star-slot{display:none}
.hub-toast .hub-undo{color:inherit;font-weight:700;margin-left:10px;text-decoration:underline}
/* One toolbar row (#1855): search, the filters that apply, sort, then the layout at the end. */
.hub-filter-set{display:contents}
.hub-filters-toggle{display:none}
.hub-tools .hub-search{flex:1 1 200px}
.hub-tools .hub-view{margin-left:auto;flex:none}
@media (max-width:760px){
  .hub-tools .hub-search{flex:1 1 100%;order:-1}
  .hub-filters-toggle{display:inline-flex;flex:1 1 auto;justify-content:center}
  .hub-filter-set{display:none}
  .hub-tools.filters-open .hub-filter-set{display:flex;flex-wrap:wrap;gap:8px;flex:1 1 100%;order:2}
  .hub-tools.filters-open .hub-filter-set select{flex:1 1 44%;min-width:0}
  .hub-tools.filters-open .hub-filters-toggle{background:var(--tint);color:var(--accent)}
}
/* Drag and drop is for a mouse and a big screen; elsewhere Upload a map does it. */
@media (max-width:760px),(hover:none){.hub-upload-target{display:none}}
@media(max-width:700px){.hub-file-row{grid-template-columns:24px minmax(0,1fr) 70px}.hub-file-row .c-size,.hub-file-row .c-date{display:none}}
.pj-map-picker{max-width:780px;width:calc(100vw - 32px);max-height:85vh;overflow:auto}
.pj-picker-filters{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,2fr);gap:12px;margin:20px 0}
.pj-picker-results{max-height:40vh;overflow:auto;border-block:1px solid var(--line)}
.pj-picker-row{display:flex;align-items:center;gap:12px;padding:14px 8px;border-bottom:1px solid var(--line);cursor:pointer}
.pj-picker-row input{width:auto;flex:none;margin:0}.pj-picker-row span{display:grid;gap:4px}.pj-picker-row small{color:var(--muted)}
@media(max-width:600px){.pj-picker-filters{grid-template-columns:1fr}.pj-map-picker{max-height:90vh}}

.pj-picker-filters label,.pj-picker-filters input,.pj-picker-filters select{min-width:0;width:100%}

.review-reactions,.review-reaction-choices{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:6px 0}
.review-reaction-form{display:inline;margin:0}
.review-reactions .review-reaction,.review-reactions summary{display:inline-block;border:1px solid #d2dce7;border-radius:16px;background:#f5f8fb;color:#263445;padding:3px 9px;min-height:28px;font:inherit;cursor:pointer}
.review-reactions .review-reaction[aria-pressed="true"]{background:#e7f2ff;border-color:#1670c5;color:#07579d}
.review-reactions summary{list-style:none;width:max-content}
.review-reactions summary::-webkit-details-marker{display:none}

/* Organisation share presets: grouped settings and their lock control. */
[data-share-preset-form] fieldset.field { min-width: 0; padding: 16px; border: 1px solid var(--line, #d4dce8); border-radius: 10px; }
[data-share-preset-form] fieldset.field legend { padding: 0 6px; font-weight: 600; }
[data-share-preset-form] fieldset.field > .check { margin-top: 16px; }

/* Private folders in My maps: a folder rail you can click or drag files onto. */
.hub-folder-tools{display:flex;align-items:flex-start;gap:12px;margin:12px 0}
.hub-folder-list{display:flex;flex-wrap:wrap;gap:6px}
.hub-folder-list [aria-current="page"],.hub-folder-list .hub-drop-folder{background:#e8f1ff;border-color:#176ac0;color:#125db0}
@media(max-width:600px){.hub-folder-tools{flex-direction:column}}

/* Guided organisation DNS setup: long TXT values stay readable on phones. */
.domain-setup{border-block:1px solid var(--line);padding:16px 0;margin:16px 0;min-width:0}
.domain-setup h3{margin:0;overflow-wrap:anywhere}
.domain-steps{padding-left:24px;margin:16px 0}
.domain-steps>li{padding-left:4px;margin:0 0 20px}
.domain-steps p{margin:8px 0;overflow-wrap:anywhere}
.domain-record{margin:12px 0;display:grid;gap:12px}
.domain-record dt{font-size:12px;color:var(--muted);margin-bottom:4px}
.domain-record dd{display:flex;align-items:center;gap:8px;margin:0;min-width:0}
.domain-record code{flex:1;min-width:0;overflow-wrap:anywhere;white-space:normal;background:var(--bg);padding:10px;border-radius:6px}
.domain-record button{flex:none}

/* First-open project defaults are separate from each person's working view. */
.pj-starting-view{grid-column:1/-1;min-width:0;border:1px solid var(--line);border-radius:10px;padding:16px;margin:12px 0}
.pj-starting-view legend{font-weight:600;padding:0 6px}
.project-form .pj-view-choice{display:flex;flex-direction:row;align-items:center;gap:10px;margin:10px 0}
.project-form .pj-view-choice input{width:auto;margin:0;flex:none}
/* The library history is a document list, including long notes and filenames. */
.team-library-list{list-style:none;padding:0;margin:16px 0 0}
.team-library-list>li{display:block;min-width:0;overflow-wrap:anywhere;padding:16px 0;border-bottom:1px solid var(--line,#dce3eb)}
.team-library-list>li:last-child{border-bottom:0;padding-bottom:0}
.team-library-list .btn{margin:4px 4px 0 0;white-space:normal}
.team-library-form{display:grid;gap:12px;min-width:0}
.team-library-form label{display:grid;gap:6px;min-width:0}
.team-library-form input,.team-library-form textarea,.team-library-form select{box-sizing:border-box;width:100%;min-width:0;max-width:100%}
.team-library-form>button{justify-self:start}
.team-library-form p{margin:0}
.team-library-form [hidden]{display:none}
/* Project sharing (#1567): revoke is a small red X; the Share launcher is the one way to add people. */
.pt-icon-btn.pj-remove,.pt-icon-btn.sh-remove{color:var(--bad);padding:6px}
.pj-contents>.pj-tools{margin:2px 0 14px}
.pj-share-hint{display:none}
.has-share-dialog .pj-share-add{display:none}
.has-share-dialog .pj-share-hint{display:block}

.st-summary{list-style:none;padding:0;display:grid;gap:8px;max-width:650px}
.st-summary li{display:grid;grid-template-columns:1fr auto 65px;gap:16px;align-items:center}
.st-summary li>span:last-child{text-align:right}
.st-filters{display:flex;gap:8px;align-items:center;margin:16px 0;max-width:700px}
.st-filters input{flex:1;min-width:120px}
.st-table-wrap{overflow-x:auto}.st-table{width:100%;border-collapse:collapse;font-size:13px}
.st-table th{font-size:11px;text-transform:uppercase;color:var(--muted);text-align:left}
.st-table td,.st-table th{padding:10px 12px;border-bottom:1px solid var(--line-soft);vertical-align:middle}
.st-table td:first-child{min-width:200px;overflow-wrap:anywhere}.st-table small{display:block;margin-top:4px;color:var(--muted)}
.st-table .st-number{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.st-table td:last-child{white-space:nowrap}.st-table td:last-child [role=status]{white-space:normal}
.st-pages{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}
@media(max-width:600px){.st-filters{flex-wrap:wrap}.st-summary li{gap:8px}}

.hub-date-filters{flex-basis:100%;display:flex;gap:12px;align-items:end;flex-wrap:wrap}.hub-date-filters[hidden],.hub-date-filters [hidden]{display:none}.hub-date-filters label{display:flex;gap:6px;align-items:center;font-size:13px}

.hub-sort{background:none;border:0;color:inherit;font:inherit;text-align:left;padding:0;cursor:pointer}.hub-sort:hover{color:var(--blue,#1261b8)}
/* File review and version history (QA 2026-10-14, #1845-#1848). */
.review-thread-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 6px}
.review-num{display:inline-grid;place-items:center;min-width:24px;height:24px;padding:0 6px;border-radius:12px;background:#1266c6;color:#fff;font-weight:700;font-size:12px;font-variant-numeric:tabular-nums}
.review-thread[data-resolved=true] .review-num{background:var(--muted)}
.review-by{margin:4px 0 2px}
.review-body{white-space:pre-wrap;margin:0 0 4px;overflow-wrap:anywhere}
.review-mention{color:var(--accent);font-weight:600}
.review-reply{border-left:2px solid var(--line);padding-left:12px;margin:10px 0 0}
.review-thread-actions{display:flex;gap:8px;align-items:flex-start;flex-wrap:wrap;margin-top:10px}
.review-thread .review-thread-actions button{margin-top:0}
.review-reply-box{flex:1 1 auto;border:0;padding:0}
.review-reply-box>summary{list-style:none;display:inline-flex}
.review-reply-box>summary::-webkit-details-marker{display:none}
.review-reply-box[open]{flex-basis:100%}
.review-reply-box[open]>summary{display:none}
.review-resolve{margin:0}
.review-reply-box[open]~.review-resolve{display:none}
.file-review-pdf{display:block;width:100%;height:calc(100vh - 245px);min-height:480px;border:1px solid var(--line);border-radius:12px;background:#fff}
.review-empty-canvas{display:grid;justify-items:center;gap:6px;text-align:center;padding:48px 20px;border:1.5px dashed var(--line);border-radius:12px;color:var(--body)}
.review-empty-canvas p{margin:0;max-width:44ch}
.review-empty-canvas .btn{margin-top:8px}
@media(max-width:950px){.file-review-pdf{height:60vh;min-height:360px}}
.pv-row{align-items:flex-start;gap:12px}
.pv-note{margin:6px 0 2px}
.pv-actions{display:flex;gap:8px;align-items:center;flex:none}
.pv-actions form{margin:0}
.pv-upload{display:grid;gap:14px;max-width:640px}
.pv-upload label{display:flex;flex-direction:column;gap:6px;font-weight:600}
.pv-upload .pv-pick{flex-direction:row;align-items:center;gap:12px;font-weight:400;cursor:pointer}
.pv-upload .pv-pick:focus-within .btn{outline:2px solid var(--accent);outline-offset:2px}
.pv-submit{margin:0}
@media(max-width:600px){.pv-row{flex-wrap:wrap}.pv-actions{width:100%}}

/* Project page (QA 2026-10-14, #1839-#1842): one primary action and a ⋯ menu,
   tidy folder tools, rows that wrap instead of truncating, the Bin and archive said at the top. */
.pj-head-menu>summary.pj-more{list-style:none;display:inline-flex;align-items:center;justify-content:center;padding-inline:10px;cursor:pointer}
.pj-head-menu>summary.pj-more::-webkit-details-marker{display:none}
.pj-head-menu .pt-menu form{margin:0}
.pj-head-menu .pt-menu button{background:none;border:0;font:inherit;font-weight:500;text-align:left;width:100%}
.pt-head-actions .pj-head-menu .pt-menu .ico{margin-right:0}
.pj-nowrap{white-space:nowrap}
.pj-row .pj-meta{white-space:normal;overflow:visible;text-overflow:clip}
.pj-ico.pj-image{background:var(--line-soft);color:var(--body)}
.pj-folder-tools details{min-width:0;border:0;padding:0;margin:0}
.pj-folder-tools details[hidden]{display:none}
.pj-folders a,.pj-folders a:hover{text-decoration:none}
.pj-folders a .title{color:var(--ink)}
.pj-folders a:hover .title{color:var(--accent)}
.pj-state-banner{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 16px;padding:10px 14px;border:1px solid var(--line);border-radius:10px;background:var(--tint)}
.pj-state-banner p{margin:0;flex:1 1 220px}
.pj-state-banner .pj-inline{margin:0}
@media(max-width:760px){
  .pj-desktop-only{display:none!important}
  .pt-head-actions:has(.pj-head-menu){width:auto;flex-wrap:nowrap}
  .pt-head-actions:has(.pj-head-menu)>.btn{flex:0 0 auto}
}
.pj-search{margin:4px 0 16px}
.pj-no-match{padding:14px 8px;margin:0}
.pj-project-list>li[hidden]{display:none}
.pt-head-actions .pj-head-menu .pt-menu form{border-top:0;padding-top:0;margin-top:0;flex:none}
.pt-head-actions .pj-head-menu .pt-menu button,.pt-head-actions .pj-head-menu .pt-menu a{justify-content:flex-start;padding:9px 10px;color:var(--ink);font-size:14px;font-weight:500;flex:none}
.pt-head-actions .pj-head-menu .pt-menu .ico{color:var(--muted)}
.project-workspace{max-width:none}
/* Organisation > Shared maps (#1838): the bar only once a map is chosen, and no sideways scroll on a phone. */
html:not(.no-js) [data-shares-bulk]:not(.chosen){display:none}
[data-shares-bulk]{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 12px;padding:9px 12px;border-radius:10px;background:#e9f2fc;border:1px solid var(--tint-border)}
[data-shares-bulk] [data-shares-count]{margin-right:auto}
[data-shares-bulk] [hidden]{display:none}
.org-shares{width:100%}
.org-shares td{overflow-wrap:anywhere}
@media (max-width:760px){.org-shares th.hide,.org-shares td.hide{display:none}}

/* Settings > General (#1853): the name fields side by side with their labels
   above, and the How often choices only while emails are on. */
.profile-name-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.profile-name-row input{width:100%}
.profile-names .muted{margin:0 0 12px}
.pt-rule{border:0;border-top:1px solid var(--line-soft);margin:18px 0}
@media(max-width:520px){.profile-name-row{grid-template-columns:1fr;gap:0}}
.notify-form:has(input[name=email][value=off]:checked) .notify-digest{display:none}
/* Team library (#1849): actions in one row; a file picker that looks like a button. */
.team-library-actions{display:flex;flex-wrap:wrap;gap:6px}
.team-library-access{display:flex;gap:6px;align-items:center}
input[type=file]{font:inherit;font-size:14px;color:var(--muted)}
input[type=file]::file-selector-button{font:inherit;font-size:13.5px;font-weight:600;margin-right:10px;padding:7px 12px;border-radius:8px;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer}
input[type=file]::file-selector-button:hover{border-color:var(--tint-border);color:var(--accent)}
.pt-grid+.pt-card{margin-top:18px}
.help-legal{margin:28px 0 0;padding-top:16px;border-top:1px solid var(--line-soft);font-size:13.5px;text-align:center}
.help-legal a{color:var(--muted)}.help-legal a:hover{color:var(--ink)}
/* Sharing permissions (#1857): one form, one Save. */
.org-sharing-form .pt-card label{max-width:520px}
.org-sharing-add{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:12px;margin-top:12px;max-width:640px}
.org-sharing-form label{display:flex;flex-direction:column;gap:6px;margin:0 0 14px;max-width:520px;font-weight:600}
.org-sharing-form label input,.org-sharing-form label select{width:100%;box-sizing:border-box;min-width:0;font-weight:400}
.org-sharing-form .org-sharing-add label{margin:0}
.org-sharing-form .pt-list li{align-items:center}

.proposal-brand-preview{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:8px;margin:16px 0;background:#fff}
.proposal-preview-contact,.proposal-preview-footer{margin:0;font-size:10px;line-height:12px;overflow-wrap:anywhere;color:#4a5766}
.proposal-preview-contact[data-ink="#ffffff"]{color:#fff}
.proposal-preview-contact[data-ink="#0b1220"]{color:#0b1220}
/* People and access stays one section, with readable wrapping sub-navigation. */
.org-people-sections{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0 24px}
.org-people-sections a{display:block;padding:8px 12px;border:1px solid var(--line);border-radius:8px;color:var(--muted);text-decoration:none;font-weight:600}
.org-people-sections a:hover,.org-people-sections a[aria-current="page"]{color:var(--accent);background:var(--tint);border-color:var(--accent)}
.org-people-sections a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
/* Organisation tabs with sections (People and access, Branding): one wrapping row of pills. */
.org-sections{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0 24px}
.org-sections a{display:block;padding:8px 12px;border:1px solid var(--line);border-radius:8px;color:var(--muted);text-decoration:none;font-weight:600}
.org-sections a:hover,.org-sections a[aria-current="page"]{color:var(--accent);background:var(--tint);border-color:var(--accent)}
.org-sections a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}

/* Organisation, Branding: the icon upload form and its drop zone (#1892). */
.icon-upload-form{display:grid;gap:16px;max-width:480px}
.icon-upload-form .field{margin:0;display:grid;gap:6px}
.icon-upload-form>button{justify-self:start}
.icon-dropzone{position:relative;display:flex;flex-direction:column;align-items:center;gap:10px;padding:24px;border:1.5px dashed color-mix(in srgb,var(--accent) 45%,var(--tint-border));border-radius:10px;background:var(--tint);text-align:center;color:var(--ink-2)}
.icon-dropzone input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}
.icon-dropzone:focus-within,.icon-dropzone.is-dragging{outline:2px solid var(--accent);outline-offset:2px}
.icon-dropzone img{object-fit:contain;max-width:64px}
.icon-upload-form [data-icon-status]{margin:0}

/* Organisation project administration. */
.org-projects{table-layout:fixed;width:100%}
.org-projects td{overflow-wrap:anywhere;vertical-align:top}
.org-projects th:first-child{width:18%}
.org-projects th:nth-child(5){width:6%}
.org-project-filters{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}
.org-project-filters input{flex:1;min-width:180px}
.org-project-filters select{min-width:0}
.org-project-filters button{flex:none}
.org-projects details>div{margin:8px 0}
.org-project-action{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
.org-project-action select{min-width:0;width:100%}
@media(max-width:1100px){
  .org-projects thead{display:none}
  .org-projects tr{display:block;border-bottom:1px solid var(--line);padding:12px 0}
  .org-projects td,.org-projects td:first-child{display:grid;grid-template-columns:100px minmax(0,1fr);gap:8px;width:100%;border:0;padding:6px 0}
  .org-projects td::before{content:attr(data-label);font-weight:600}
  .org-projects td>div{grid-column:2;min-width:0}
  .org-projects td::before{grid-column:1;grid-row:1}
}
/* Finer rules (#1894): short label, field, its help right under it; same width for every field. */
.sharing-rules{display:grid;gap:20px;max-width:520px}
.org-sharing-form .sharing-rule{margin:0;min-width:0}
.sharing-rule small{font-weight:400;font-size:13px;color:var(--muted);line-height:1.5}
.org-sharing-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:16px}
.org-sharing-footer p{margin:0}
.org-sharing-save{margin-left:auto}

.guest-directory-group{padding:18px 0;border-bottom:1px solid var(--line)}
.guest-directory-group h2{margin:0 0 12px;font-size:18px;overflow-wrap:anywhere}
.guest-directory-group h2 .meta{display:block;font-size:13px;font-weight:400;color:var(--muted)}
.guest-directory-own{padding-top:0}
.guest-directory .pt-list{margin:0}
.guest-directory .pt-list li{gap:12px;align-items:center}
.guest-directory .pt-list .grow{min-width:0;overflow-wrap:anywhere}
.guest-directory .guest-remove{margin-top:12px}



/* Appearance stays next to the brand on desktop and the menu button on phones. */
.pt-theme-top{display:none}
.pt-theme{flex:none}
.pt-theme:hover,.pt-theme:focus-visible{color:var(--ink-2);background:var(--line-soft)}
.pt-theme .theme-sun{display:none}
html[data-portal-theme=dark] .pt-theme .theme-sun{display:block}
html[data-portal-theme=dark] .pt-theme .theme-moon{display:none}
@media(max-width:900px){.pt-theme-top{display:inline-flex}.pt-theme-side{display:none}}
