/* LuaDock 1.9.20 · Project Explorer Public Design Bridge
 * Mirrors LuaControl's canonical public design system used by landing + account.
 * The live /assets/site/theme.php values remain authoritative when available.
 * Scope is intentionally limited to the Project Hub page.
 */
body[data-luadock-page="hub"]{
  --hub-navy:var(--ld-navy,#00172f);
  --hub-navy-2:var(--ld-navy-2,#0b2948);
  --hub-blue:var(--ld-blue,#2269d9);
  --hub-blue-hover:var(--ld-blue-hover,#1756bb);
  --hub-bg:var(--ld-bg,#f4f7fb);
  --hub-bg-2:var(--ld-bg-2,#f8fafc);
  --hub-surface:var(--ld-surface,#fff);
  --hub-surface-soft:var(--ld-surface-soft,#f8fafc);
  --hub-section-alt:var(--ld-section-alt,#eef3f9);
  --hub-text:var(--ld-text,#102033);
  --hub-heading:var(--ld-heading,#00172f);
  --hub-muted:var(--ld-muted,#65758b);
  --hub-line:var(--ld-line,#dce5f0);
  --hub-line-strong:var(--ld-line-strong,#bfccdc);
  --hub-header-bg:var(--ld-header-bg,#fff);
  --hub-header-text:var(--ld-header-text,#334a64);
  --hub-footer-bg:var(--ld-footer-bg,#fff);
  --hub-input-bg:var(--ld-input-bg,#fff);
  --hub-ghost-bg:var(--ld-ghost-bg,#fff);
  --hub-ghost-text:var(--ld-ghost-text,#00172f);
  --hub-chip-bg:var(--ld-chip-bg,#e9f1fd);
  --hub-chip-text:var(--ld-chip-text,#2269d9);
  --hub-success:var(--ld-success,#167a4b);
  --hub-warning:var(--ld-warning,#9a5c00);
  --hub-danger:var(--ld-danger,#b42318);
  --hub-radius:var(--ld-radius,18px);
  --hub-radius-sm:var(--ld-radius-sm,11px);
  --hub-shadow:var(--ld-shadow,0 16px 40px rgba(0,23,47,.12));
  --hub-shadow-soft:var(--ld-shadow-soft,0 6px 20px rgba(0,23,47,.08));
  --hub-shell:var(--ld-shell,1120px);
  margin:0!important;
  min-height:100vh;
  background:linear-gradient(180deg,var(--hub-bg-2) 0,var(--hub-bg) 340px,var(--hub-bg) 100%)!important;
  color:var(--hub-text)!important;
  font:calc(15px * var(--ld-font-scale,1))/1.58 Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;
  -webkit-font-smoothing:antialiased;
}
body[data-luadock-page="hub"] *,body[data-luadock-page="hub"] *::before,body[data-luadock-page="hub"] *::after{box-sizing:border-box}
body[data-luadock-page="hub"] .hubShell{min-height:100vh;color:var(--hub-text)}

/* Public header language: same height, surface, line and restrained navigation controls as account. */
body[data-luadock-page="hub"] .hubHeader{
  height:auto;min-height:72px;padding:0 max(16px,calc((100vw - var(--hub-shell))/2));
  border:0;border-bottom:1px solid var(--hub-line);background:color-mix(in srgb,var(--hub-header-bg) 97%,transparent)!important;
  color:var(--hub-header-text);backdrop-filter:blur(14px);box-shadow:none;gap:24px;
}
body[data-luadock-page="hub"] .hubBrand{gap:12px;min-width:0}
body[data-luadock-page="hub"] .hubLogo{height:36px;max-width:184px}
body[data-luadock-page="hub"] .hubWordmark{font-size:25px;font-weight:800;letter-spacing:-.035em;color:var(--hub-navy);white-space:nowrap}
body[data-luadock-page="hub"] .hubWordmark span{color:var(--hub-navy)}
body[data-luadock-page="hub"] .hubWordmark b{color:var(--hub-blue)}
body[data-luadock-page="hub"] .hubVersion,
body[data-luadock-page="hub"] .hubBadge{
  display:inline-flex;align-items:center;justify-content:center;min-height:28px;padding:4px 9px;border:1px solid var(--hub-line);
  border-radius:999px;background:var(--hub-chip-bg);color:var(--hub-chip-text);font-size:11px;font-weight:800;box-shadow:none;
}
body[data-luadock-page="hub"] .hubBadge.dev{background:#fff4df;color:var(--hub-warning);border-color:#efd5a0}
body[data-luadock-page="hub"] .hubHeaderActions{gap:9px;flex-wrap:wrap;justify-content:flex-end}

/* Shared public button grammar. */
body[data-luadock-page="hub"] .hubHeader button,
body[data-luadock-page="hub"] .hubToolbar button,
body[data-luadock-page="hub"] .hubSimButtons button,
body[data-luadock-page="hub"] .hubModal button,
body[data-luadock-page="hub"] .hubProjectActions button,
body[data-luadock-page="hub"] .hubTrashButton{
  min-height:42px;border:1px solid var(--hub-line-strong)!important;border-radius:var(--hub-radius-sm)!important;
  background:var(--hub-ghost-bg)!important;color:var(--hub-ghost-text)!important;padding:9px 14px!important;
  font:inherit;font-weight:750;line-height:1.2;box-shadow:none!important;transition:background .15s ease,border-color .15s ease,color .15s ease,transform .15s ease;
}
body[data-luadock-page="hub"] .hubHeader button:hover,
body[data-luadock-page="hub"] .hubToolbar button:hover,
body[data-luadock-page="hub"] .hubSimButtons button:hover,
body[data-luadock-page="hub"] .hubModal button:hover,
body[data-luadock-page="hub"] .hubProjectActions button:hover,
body[data-luadock-page="hub"] .hubTrashButton:hover{
  background:var(--hub-surface-soft)!important;border-color:var(--hub-blue)!important;color:var(--hub-navy)!important;
}
body[data-luadock-page="hub"] .hubPrimary,
body[data-luadock-page="hub"] .hubProjectActions .open,
body[data-luadock-page="hub"] .hubVersionRestore{
  background:var(--hub-blue)!important;border-color:var(--hub-blue)!important;color:#fff!important;font-weight:800!important;
}
body[data-luadock-page="hub"] .hubPrimary:hover,
body[data-luadock-page="hub"] .hubProjectActions .open:hover,
body[data-luadock-page="hub"] .hubVersionRestore:hover{background:var(--hub-blue-hover)!important;border-color:var(--hub-blue-hover)!important;color:#fff!important}
body[data-luadock-page="hub"] button:focus-visible,
body[data-luadock-page="hub"] input:focus-visible,
body[data-luadock-page="hub"] select:focus-visible{outline:3px solid color-mix(in srgb,var(--hub-blue) 16%,transparent)!important;outline-offset:2px;border-color:var(--hub-blue)!important}

/* Main composition matches public shell width and vertical rhythm. */
body[data-luadock-page="hub"] .hubMain{width:min(var(--hub-shell),calc(100% - 32px));margin:0 auto;padding:42px 0 72px}
body[data-luadock-page="hub"] .hubHero{align-items:center;gap:24px;margin-bottom:22px}
body[data-luadock-page="hub"] .hubEyebrow{margin:0 0 8px;color:var(--hub-blue)!important;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.14em}
body[data-luadock-page="hub"] .hubHero h1{margin:0 0 12px;color:var(--hub-heading)!important;font-size:clamp(31px,5vw,48px);line-height:1.08;letter-spacing:-.04em;font-weight:800}
body[data-luadock-page="hub"] .hubLead{margin:0;color:var(--hub-muted)!important;font-size:17px}
body[data-luadock-page="hub"] .hubHeroActions{gap:10px}

/* Account-like status cards. */
body[data-luadock-page="hub"] .hubStatusGrid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:22px 0}
body[data-luadock-page="hub"] .hubStatusCard{
  padding:19px 20px;border:1px solid var(--hub-line)!important;border-radius:var(--hub-radius)!important;
  background:var(--hub-surface)!important;color:var(--hub-text)!important;box-shadow:var(--hub-shadow-soft)!important;
}
body[data-luadock-page="hub"] .hubStatusCard span{color:var(--hub-muted)!important;font-size:12px;font-weight:650}
body[data-luadock-page="hub"] .hubStatusCard strong{margin-top:5px;color:var(--hub-heading)!important;font-size:21px;font-weight:800}

/* DEV simulator is intentionally a clear warning card while still using the public system. */
body[data-luadock-page="hub"] .hubDevSimulator{
  margin:0 0 18px;padding:14px 16px;border:1px solid #efd5a0!important;border-radius:var(--hub-radius-sm)!important;
  background:#fff8ea!important;color:var(--hub-warning)!important;box-shadow:none;
}
body[data-luadock-page="hub"] .hubDevSimulator span{color:var(--hub-warning)!important}
body[data-luadock-page="hub"] .hubSimButtons button.active{background:var(--hub-blue)!important;border-color:var(--hub-blue)!important;color:#fff!important}

/* Search/filter surface uses the same form tokens as account. */
body[data-luadock-page="hub"] .hubToolbar{
  grid-template-columns:minmax(280px,1fr) 170px 190px auto auto;gap:10px;align-items:stretch;margin:18px 0 20px;
  padding:14px;border:1px solid var(--hub-line);border-radius:var(--hub-radius);background:var(--hub-surface);box-shadow:var(--hub-shadow-soft);
}
body[data-luadock-page="hub"] .hubToolbar input,
body[data-luadock-page="hub"] .hubToolbar select,
body[data-luadock-page="hub"] .hubModalCard input{
  width:100%;min-height:42px;padding:10px 13px;border:1px solid var(--hub-line-strong)!important;border-radius:var(--hub-radius-sm)!important;
  background:var(--hub-input-bg)!important;color:var(--hub-text)!important;font:inherit;box-shadow:none!important;
}
body[data-luadock-page="hub"] .hubToolbar input::placeholder{color:var(--hub-muted)}
body[data-luadock-page="hub"] .hubResultCount{color:var(--hub-muted)!important;font-size:11px}
body[data-luadock-page="hub"] .hubViewSwitch{gap:3px;padding:3px;border:1px solid var(--hub-line)!important;border-radius:var(--hub-radius-sm)!important;background:var(--hub-surface-soft)!important}
body[data-luadock-page="hub"] .hubViewSwitch button{width:34px;min-width:34px;min-height:34px!important;padding:4px!important;border:0!important;background:transparent!important;color:var(--hub-muted)!important}
body[data-luadock-page="hub"] .hubViewSwitch button.active{background:var(--hub-blue)!important;color:#fff!important;border-radius:calc(var(--hub-radius-sm) - 3px)!important}

/* Project cards use the same white/surface card language as pricing/account. */
body[data-luadock-page="hub"] .hubProjectGrid{grid-template-columns:repeat(auto-fill,minmax(315px,1fr));gap:18px}
body[data-luadock-page="hub"] .hubProjectCard{
  border:1px solid var(--hub-line)!important;border-radius:var(--hub-radius)!important;background:var(--hub-surface)!important;
  color:var(--hub-text)!important;box-shadow:var(--hub-shadow-soft)!important;overflow:hidden;transform:none;
}
body[data-luadock-page="hub"] .hubProjectCard:hover{border-color:color-mix(in srgb,var(--hub-blue) 50%,var(--hub-line))!important;transform:translateY(-2px);box-shadow:var(--hub-shadow)!important}
body[data-luadock-page="hub"] .hubThumb{height:170px;background:var(--hub-surface-soft)!important;border-bottom:1px solid var(--hub-line)!important}
body[data-luadock-page="hub"] .hubThumbFallback{color:color-mix(in srgb,var(--hub-blue) 45%,var(--hub-muted));font-size:42px;font-weight:800}
body[data-luadock-page="hub"] .hubProjectBody{padding:17px}
body[data-luadock-page="hub"] .hubProjectTitle{color:var(--hub-heading)!important;font-size:18px;font-weight:800}
body[data-luadock-page="hub"] .hubProjectSubtitle{color:var(--hub-muted)!important}
body[data-luadock-page="hub"] .hubFavorite{min-height:31px!important;color:var(--hub-muted)!important;border:0!important;background:transparent!important;padding:0!important}
body[data-luadock-page="hub"] .hubFavorite:hover,body[data-luadock-page="hub"] .hubFavorite.active{color:#b47a00!important;background:#fff8ea!important}
body[data-luadock-page="hub"] .hubCompatibility{font-weight:800;border:1px solid transparent}
body[data-luadock-page="hub"] .hubCompatibility.ok{color:var(--hub-success)!important;background:#e9f8ef!important;border-color:#b8e1c9}
body[data-luadock-page="hub"] .hubCompatibility.locked{color:var(--hub-warning)!important;background:#fff4df!important;border-color:#efd5a0}
body[data-luadock-page="hub"] .hubMeta{color:var(--hub-muted)!important}
body[data-luadock-page="hub"] .hubMetaItem{padding:8px;border:1px solid var(--hub-line)!important;border-radius:var(--hub-radius-sm)!important;background:var(--hub-surface-soft)!important}
body[data-luadock-page="hub"] .hubMetaItem small{color:var(--hub-muted)!important}
body[data-luadock-page="hub"] .hubMetaItem b{color:var(--hub-heading)!important}
body[data-luadock-page="hub"] .hubProjectActions{margin-top:14px}
body[data-luadock-page="hub"] .hubSecondaryActions .hubProjectDelete,
body[data-luadock-page="hub"] .hubProjectActions .danger{background:#fff2f0!important;border-color:#f4bbb5!important;color:var(--hub-danger)!important}
body[data-luadock-page="hub"] .hubSecondaryActions .hubProjectDelete:hover,
body[data-luadock-page="hub"] .hubProjectActions .danger:hover{background:#ffe9e6!important;border-color:var(--hub-danger)!important;color:var(--hub-danger)!important}

/* List mode keeps cards/panels identical to grid mode. */
body[data-luadock-page="hub"] .hubProjectGrid.list{gap:10px}
body[data-luadock-page="hub"] .hubProjectGrid.list .hubProjectCard{border-radius:var(--hub-radius)!important}
body[data-luadock-page="hub"] .hubProjectGrid.list .hubThumb{border-right:1px solid var(--hub-line)!important;border-bottom:0!important}

/* Notices, empty states and login prompt mirror public alerts/cards. */
body[data-luadock-page="hub"] .hubNotice,
body[data-luadock-page="hub"] .hubNotice.technical{
  margin:0 0 18px;padding:13px 15px;border:1px solid #efd5a0!important;border-radius:12px!important;background:#fff8ea!important;color:var(--hub-warning)!important;box-shadow:none;
}
body[data-luadock-page="hub"] .hubNotice.success{border-color:#b8e1c9!important;background:#effaf4!important;color:var(--hub-success)!important}
body[data-luadock-page="hub"] .hubNotice.auth{
  max-width:none;margin:18px 0 22px;padding:20px;border:1px solid var(--hub-line)!important;border-radius:var(--hub-radius)!important;
  background:var(--hub-surface)!important;color:var(--hub-text)!important;box-shadow:var(--hub-shadow-soft)!important;
}
body[data-luadock-page="hub"] .hubNoticeTitle{color:var(--hub-heading)!important}
body[data-luadock-page="hub"] .hubNoticeText,body[data-luadock-page="hub"] .hubNotice.technical .hubNoticeText{color:var(--hub-muted)!important}
body[data-luadock-page="hub"] .hubNoticeAction{background:var(--hub-blue)!important;border-color:var(--hub-blue)!important;color:#fff!important}
body[data-luadock-page="hub"] .hubEmpty,
body[data-luadock-page="hub"] .hubNoResults{padding:56px 20px;border:1px dashed var(--hub-line-strong)!important;border-radius:var(--hub-radius)!important;background:var(--hub-surface)!important;color:var(--hub-muted)!important;box-shadow:var(--hub-shadow-soft)}
body[data-luadock-page="hub"] .hubEmpty h2,body[data-luadock-page="hub"] .hubNoResults strong{color:var(--hub-heading)!important}

/* Modal = public card on soft scrim. */
body[data-luadock-page="hub"] .hubModal{background:rgba(0,23,47,.48);backdrop-filter:blur(6px)}
body[data-luadock-page="hub"] .hubModalCard{
  border:1px solid var(--hub-line)!important;border-radius:var(--hub-radius)!important;background:var(--hub-surface)!important;
  color:var(--hub-text)!important;box-shadow:var(--hub-shadow)!important;padding:24px;
}
body[data-luadock-page="hub"] .hubModalCard h2,body[data-luadock-page="hub"] .hubVersionsHeader h2{color:var(--hub-heading)!important}
body[data-luadock-page="hub"] .hubModalCard label{color:var(--hub-text)!important;font-weight:650}
body[data-luadock-page="hub"] .hubModalHint{color:var(--hub-muted)!important}
body[data-luadock-page="hub"] .hubVersionsCard{padding:0!important;overflow:hidden}
body[data-luadock-page="hub"] .hubVersionsHeader{padding:20px 22px 16px;border-bottom:1px solid var(--hub-line)!important;background:var(--hub-surface)!important}
body[data-luadock-page="hub"] .hubVersionsSummary{padding:10px 22px;border-bottom:1px solid var(--hub-line)!important;background:var(--hub-surface-soft)!important;color:var(--hub-muted)!important}
body[data-luadock-page="hub"] .hubVersionsList{background:var(--hub-bg-2)!important;scrollbar-color:var(--hub-line-strong) var(--hub-surface-soft)}
body[data-luadock-page="hub"] .hubVersionRow{border:1px solid var(--hub-line)!important;border-radius:var(--hub-radius-sm)!important;background:var(--hub-surface)!important;color:var(--hub-text)!important}
body[data-luadock-page="hub"] .hubVersionRow.current{border-color:color-mix(in srgb,var(--hub-blue) 55%,var(--hub-line))!important;background:color-mix(in srgb,var(--hub-blue) 6%,var(--hub-surface))!important}
body[data-luadock-page="hub"] .hubVersionRev strong,body[data-luadock-page="hub"] .hubVersionMeta b{color:var(--hub-heading)!important}
body[data-luadock-page="hub"] .hubVersionMeta{color:var(--hub-muted)!important}
body[data-luadock-page="hub"] .hubVersionCurrent{background:var(--hub-blue)!important;color:#fff!important}
body[data-luadock-page="hub"] .hubVersionKind{border-color:var(--hub-line-strong)!important;color:var(--hub-muted)!important;background:var(--hub-surface-soft)}
body[data-luadock-page="hub"] .hubVersionsFooter{padding:13px 20px;border-top:1px solid var(--hub-line)!important;background:var(--hub-surface)!important}
body[data-luadock-page="hub"] .hubVersionsFooter span,body[data-luadock-page="hub"] .hubVersionsLoading{color:var(--hub-muted)!important}
body[data-luadock-page="hub"] .hubVersionsError{color:var(--hub-danger)!important}

body[data-luadock-page="hub"] .hubTrashButton.active{border-color:var(--hub-blue)!important;background:color-mix(in srgb,var(--hub-blue) 8%,var(--hub-surface))!important;color:var(--hub-blue)!important}
body[data-luadock-page="hub"] .hubTrashCount{background:var(--hub-chip-bg)!important;color:var(--hub-chip-text)!important}
body[data-luadock-page="hub"] .hubTrashButton.active .hubTrashCount{background:var(--hub-blue)!important;color:#fff!important}
body[data-luadock-page="hub"] .hubFooter{margin-top:auto;padding:22px 16px;border-top:1px solid var(--hub-line)!important;background:var(--hub-footer-bg)!important;color:var(--hub-muted)!important;text-align:center}

@media(max-width:1100px){
  body[data-luadock-page="hub"] .hubHeader{padding-inline:16px}
  body[data-luadock-page="hub"] .hubToolbar{grid-template-columns:minmax(240px,1fr) 150px 180px auto}
  body[data-luadock-page="hub"] .hubToolbar>#hubRefreshBtn{grid-column:1/-1}
}
@media(max-width:850px){
  body[data-luadock-page="hub"] .hubHeader{align-items:flex-start;flex-direction:column;padding-block:14px;gap:12px}
  body[data-luadock-page="hub"] .hubHeaderActions{margin-left:0;width:100%;justify-content:flex-start}
  body[data-luadock-page="hub"] .hubHero{align-items:flex-start;flex-direction:column}
  body[data-luadock-page="hub"] .hubHeroActions{width:100%}
  body[data-luadock-page="hub"] .hubStatusGrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  body[data-luadock-page="hub"] .hubToolbar{grid-template-columns:1fr 1fr}
  body[data-luadock-page="hub"] .hubSearchWrap{grid-column:1/-1}
  body[data-luadock-page="hub"] .hubToolbar>#hubRefreshBtn{grid-column:auto}
}
@media(max-width:620px){
  body[data-luadock-page="hub"] .hubMain{width:min(100% - 22px,var(--hub-shell));padding-top:28px}
  body[data-luadock-page="hub"] .hubHeaderActions button{flex:1 1 140px}
  body[data-luadock-page="hub"] .hubStatusGrid{grid-template-columns:1fr}
  body[data-luadock-page="hub"] .hubToolbar{grid-template-columns:1fr;padding:11px}
  body[data-luadock-page="hub"] .hubSearchWrap{grid-column:auto}
  body[data-luadock-page="hub"] .hubProjectGrid{grid-template-columns:1fr}
  body[data-luadock-page="hub"] .hubProjectGrid.list .hubThumb{border-right:0!important;border-bottom:1px solid var(--hub-line)!important}
  body[data-luadock-page="hub"] .hubSecondaryActions{grid-template-columns:1fr}
}

/* LuaDock 1.10.14 · canonical Global Assets brand */
body[data-luadock-page="hub"] .hubLogo{display:block;width:auto;height:36px;max-width:184px;object-fit:contain}
