/* hub.css — hub-specific composition layered over instrument-core.css */
.ins .applist{display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:16px;}
.ins .apptile{display:flex; flex-direction:column; gap:8px; text-decoration:none; color:var(--ink); transition:border-color .15s;}
.ins .apptile:hover{border-color:var(--green);}
.ins .apptile h3{display:flex; align-items:center; gap:10px; font-size:18px;}
.ins .apptile .glyph{color:var(--green); flex-shrink:0;}
.ins .apptile p{color:var(--soft); font-size:14px;}
.ins .apptile.is-locked{opacity:0.62;}
.ins .apptile.is-locked:hover{border-color:var(--line2);}
.ins button.apptile{width:100%; text-align:left; cursor:pointer; font-family:inherit;}
.ins form.tileform{margin:0;}
.ins .subnav{display:flex; flex-wrap:wrap; gap:16px; align-items:center; font-size:14px;}
.ins ul.plain{list-style:none; display:flex; flex-direction:column; gap:8px;}
.ins ul.plain li{display:flex; align-items:center; gap:10px;}
.ins .authwrap{min-height:78vh;}
/* centred narrow form pages (request access, etc.) */
.ins .formcard{max-width:560px; margin:0 auto;}
.ins .formcard.is-centered{text-align:center;}
.ins .formcard.is-centered .notice{justify-content:center;}
.ins .formstack{display:flex; flex-direction:column; gap:14px; margin-top:4px;}
.ins .notice-err{background:color-mix(in oklab, oklch(0.5 0.13 25) 10%, var(--panel)); border-color:color-mix(in oklab, oklch(0.5 0.13 25) 45%, var(--line2));}
.ins .hp{position:absolute; left:-9999px;}
/* long-form legal documents (licence, etc.) */
.ins .legal-doc{max-width:760px; margin:0 auto;}
.ins .legal-doc > p{font-size:15px; line-height:1.65; color:var(--ink); max-width:74ch; margin-bottom:14px;}
.ins .legal-meta{font-size:13px; color:var(--faint); margin-bottom:18px;}
/* confirm-modal — reusable confirmation dialog (see /js/confirm-modal.js) */
.ins .confirm-backdrop{position:fixed; inset:0; z-index:1000; display:flex; align-items:center; justify-content:center; padding:20px; background:color-mix(in oklab, var(--ink) 55%, transparent);}
.ins .confirm-backdrop[hidden]{display:none;}
.ins .confirm-dialog{background:var(--panel); border:1px solid var(--line2); border-radius:10px; box-shadow:0 12px 40px color-mix(in oklab, var(--ink) 28%, transparent); max-width:420px; width:100%; padding:22px 24px;}
.ins .confirm-title{margin:0 0 8px;}
.ins .confirm-msg{color:var(--soft); font-size:14px; line-height:1.5; margin:0 0 18px;}
.ins .confirm-actions{display:flex; justify-content:flex-end; gap:10px;}
@media (prefers-reduced-motion:no-preference){.ins .confirm-backdrop.is-open .confirm-dialog{animation:confirmpop .14s ease-out;}}
@keyframes confirmpop{from{opacity:0; transform:translateY(6px);} to{opacity:1; transform:none;}}
