/* One Production · Hub pages (sign in, account, members). Dark only. Loaded after board.css and built on its tokens.
   Every rule is scoped by a hub-only class so nothing here can touch the board or the meeting room. */

body.hub{display:block;height:auto;min-height:100vh;min-height:100dvh;padding:0;overflow-x:hidden;overflow-y:auto;--dlg-pad:20px}
body.hub .top{padding:10px max(16px,env(safe-area-inset-right)) 10px max(16px,env(safe-area-inset-left));padding-top:max(10px,env(safe-area-inset-top))}
body.hub .btn{min-height:44px}
body.hub a.btn,body.hub a.icon-btn{text-decoration:none}
body.hub .toasts{bottom:calc(16px + env(safe-area-inset-bottom))}
.brand .icon-btn{margin-inline-start:-8px}
.hub-main{display:flex;flex-direction:column;gap:16px;width:100%;max-width:640px;margin:0 auto;padding:20px max(16px,env(safe-area-inset-right)) calc(32px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}
.hub-main.wide{max-width:760px}
.hub-main:focus{outline:none}
.note{margin:0;font-size:var(--fs-sm);color:var(--text-secondary);text-wrap:pretty}
.note.tight{margin-top:4px;font-size:var(--fs-xs);color:var(--text-tertiary)}
.loading{min-height:56px;display:flex;align-items:center;color:var(--text-tertiary)}

/* controls this slice adds */
.btn.danger{border-color:var(--danger-border);background:var(--danger-bg);color:var(--danger)}
.btn.big{min-height:48px;padding:10px 20px;font-size:var(--fs-lg);font-weight:600}
@media (hover:hover){.btn.danger:not(:disabled):hover{background:#44201f;border-color:var(--danger)}}
.mono{font-family:ui-monospace,"Cascadia Mono",Consolas,"Liberation Mono",monospace;font-size:var(--fs-lg);letter-spacing:.12em;text-transform:uppercase}
.mono::placeholder{text-transform:none;letter-spacing:.06em}
.av.lg{width:48px;height:48px;font-size:17px}
.mark.lg{width:34px;height:34px}

/* cards */
.card{padding:16px;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-surface)}
.card>h2{margin:0 0 12px;font-size:var(--fs-xs);font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary)}
.card>h2:focus{outline:none}
.who{display:flex;align-items:center;gap:14px;min-width:0}
.who-text{display:flex;flex-direction:column;gap:2px;min-width:0}
.who-name{font-size:var(--fs-xl);font-weight:650;line-height:1.25;overflow-wrap:anywhere}
.who-line{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;color:var(--text-secondary);overflow-wrap:anywhere}
.tags{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0 0;padding:0;list-style:none}
.tag{display:inline-flex;align-items:center;min-height:24px;padding:2px 10px;border-radius:99px;border:1px solid var(--border-strong);background:var(--bg-raised);color:var(--text-secondary);font-size:var(--fs-xs);line-height:1.3;overflow-wrap:anywhere}
.stack{display:flex;flex-wrap:wrap;gap:12px}
.stack .btn{flex:1 1 180px}

/* device list */
.devices{margin:0;padding:0;list-style:none}
.dev{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--border)}
.dev:first-child{border-top:0;padding-top:0}
.dev:last-child{padding-bottom:0}
.dev-ic{display:grid;place-items:center;flex:none;width:40px;height:40px;border-radius:var(--radius-sm);background:var(--bg-raised);color:var(--text-secondary)}
.dev-ic .i{width:20px;height:20px}
.dev-main{flex:1;min-width:0}
.dev-name{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;font-weight:600;overflow-wrap:anywhere}
.dev-sub{margin-top:2px;font-size:var(--fs-xs);color:var(--text-tertiary);overflow-wrap:anywhere}
.dev .btn{flex:none}

/* sign-in */
body.signin{background:radial-gradient(120% 55% at 50% 0%,var(--accent-bg) 0,transparent 62%),var(--bg-page)}
.auth-wrap{display:grid;place-items:center;min-height:100vh;min-height:100dvh;padding:24px max(16px,env(safe-area-inset-right)) calc(24px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}
.auth-wrap:focus{outline:none}
.auth-card{width:100%;max-width:400px;padding:28px 24px;border-radius:16px;border:1px solid var(--border-strong);background:var(--bg-surface);box-shadow:0 24px 64px rgb(0 0 0 / .45)}
.auth-brand{display:flex;align-items:center;gap:12px;margin-bottom:20px}
.auth-brand h1{font-size:20px;font-weight:650;letter-spacing:-.01em;line-height:1.2}
.auth-brand p{margin:2px 0 0;font-size:var(--fs-sm);color:var(--text-tertiary)}
.auth-card .btn.big{width:100%}
.auth-card .btn .i{width:20px;height:20px;fill:currentColor;stroke:none}
.auth-card .note{margin-top:12px;text-align:center}
.auth-card .disclose{margin-top:20px}
.auth-card .disclose .note{margin-top:0;text-align:start}
.notice,.form-error,.form-info{display:flex;align-items:flex-start;gap:10px;margin:0 0 16px;padding:10px 12px;border-radius:var(--radius-sm);border:1px solid var(--danger-border);background:var(--danger-bg);color:var(--text);overflow-wrap:anywhere}
.notice .i,.form-error .i{margin-top:2px;color:var(--danger)}
.notice.info,.form-info{border-color:var(--border-strong);background:var(--bg-raised)}
.notice.info .i,.form-info .i{color:var(--ok)}
.form-error,.form-info{margin:12px 0 0}
.form-info .i{margin-top:2px}

/* members */
.members{display:grid;gap:8px;margin:0;padding:0;list-style:none}
.member{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;width:100%;min-height:64px;padding:12px;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-surface);color:var(--text);text-align:start;transition:background-color 120ms ease,border-color 120ms ease}
.member>.i:last-child{color:var(--text-tertiary)}
@media (hover:hover){.member:hover{background:var(--bg-raised);border-color:var(--gray-8)}}
.m-body{display:flex;flex-direction:column;gap:4px;min-width:0}
.m-line{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;min-width:0}
.m-name{font-weight:600;overflow-wrap:anywhere}
.m-email{font-size:var(--fs-sm);color:var(--text-secondary);overflow-wrap:anywhere}
.m-warn{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-sm);color:var(--warn)}
.m-warn .i{width:14px;height:14px}
.m-foot{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;font-size:var(--fs-xs);color:var(--text-tertiary)}
.m-foot .tag{min-height:22px}
.m-devs{margin-inline-start:2px}
.gap-top{margin-top:12px}
.hub-actions{display:flex;align-items:center;gap:8px}
.note.err{color:var(--danger)}

/* member dialog */
#member-dialog{width:min(520px,calc(100vw - 32px))}
.fieldset{min-width:0;margin:14px 0 0;padding:0;border:0}
.fieldset legend{padding:0;margin-bottom:2px;font-size:var(--fs-sm);color:var(--text-secondary)}
.checks{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:0 12px}
dialog label.check,dialog label.switch-row{display:flex;align-items:center;gap:10px;min-height:44px;margin:0;color:var(--text);font-size:var(--fs-md);cursor:pointer}
dialog label.switch-row{justify-content:space-between;gap:16px;margin-top:10px;padding:8px 0}
.switch-text{display:flex;flex-direction:column;gap:1px;min-width:0}
.switch-text small{font-size:var(--fs-xs);color:var(--text-tertiary)}
input[type=checkbox].switch{appearance:none;-webkit-appearance:none;position:relative;flex:none;width:44px;height:26px;padding:0;border-radius:99px;border:1px solid var(--border-control);background:var(--gray-7);cursor:pointer;transition:background-color 150ms ease,border-color 150ms ease}
input[type=checkbox].switch::before{content:"";position:absolute;top:2px;inset-inline-start:2px;width:20px;height:20px;border-radius:50%;background:var(--text)}
input[type=checkbox].switch:checked{background:var(--ok);border-color:var(--ok)}
input[type=checkbox].switch:checked::before{translate:18px 0;background:var(--on-ok)}
input[type=checkbox].switch:focus-visible{outline-offset:3px}
#member-dialog .row.sticky{position:sticky;bottom:0;margin:14px -4px calc(-1 * var(--dlg-pad));padding:12px 4px var(--dlg-pad);background:var(--bg-surface);border-top:1px solid var(--border)}
#md-signout{margin-top:14px;width:100%}
dialog.confirm{width:min(400px,calc(100vw - 32px))}
dialog.confirm h2{font-size:var(--fs-xl);font-weight:650;line-height:1.25;text-wrap:balance}
.cf-text{margin:8px 0 0;color:var(--text-secondary);text-wrap:pretty}

@media (max-width:720px){
  body.hub{--dlg-pad:16px}
  .hub-main{padding-top:16px}
  .auth-card{padding:24px 20px}
}
@media (prefers-reduced-motion:no-preference){
  input[type=checkbox].switch::before{transition:translate 160ms var(--ease-out),background-color 150ms ease}
}
@media (forced-colors:active){
  input[type=checkbox].switch{forced-color-adjust:none;background:Canvas;border-color:CanvasText}
  input[type=checkbox].switch::before{background:CanvasText}
  input[type=checkbox].switch:checked{background:Highlight;border-color:Highlight}
  input[type=checkbox].switch:checked::before{background:HighlightText}
}

/* Google Drive card on the members page */
.row.start{justify-content:flex-start;flex-wrap:wrap}
#drive-name-wrap label{display:block;margin-bottom:6px;font-size:var(--fs-sm);color:var(--text-secondary)}
#drive-name{width:100%;max-width:24rem}
#drive-warn{margin-top:8px}
a.btn{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}

/* Video storage meter on the members page */
.storage-text{margin:0;font-weight:600}
.storage-sub{margin:8px 0 0;font-size:var(--fs-sm);color:var(--text-tertiary);overflow-wrap:anywhere}
.meter{height:8px;margin-top:10px;border-radius:99px;background:var(--track);overflow:hidden}
.meter>span{display:block;height:100%;width:0;border-radius:inherit;background:var(--accent)}
.meter>span.over{background:var(--warn)}
#storage-warn{margin-top:8px}
