:root{color-scheme:dark;--bg:#0b1118;--panel:#111a24;--panel2:#162230;--line:#26384a;--text:#eef5fb;--muted:#9fb0bf;--accent:#2269d9;--navy:#00172f;--good:#65d79c;--warn:#ffca6a;--bad:#ff7777}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 50% -20%,#17324e 0,#0b1118 42%);color:var(--text);font:14px/1.45 system-ui,-apple-system,Segoe UI,sans-serif;min-height:100vh}
button,input,select{font:inherit}.hubShell{min-height:100vh;display:flex;flex-direction:column}.hubHeader{height:64px;display:flex;align-items:center;padding:0 26px;border-bottom:1px solid var(--line);background:#091019e8;backdrop-filter:blur(14px);position:sticky;top:0;z-index:10}.hubBrand,.hubHeaderActions{display:flex;align-items:center;gap:10px}.hubHeaderActions{margin-left:auto}.hubLogo{height:34px;max-width:180px}.hubWordmark{font-size:23px;font-weight:700;letter-spacing:-.6px}.hubWordmark span{color:#fff}.hubWordmark b{color:#4b92ff}.hubVersion{font-size:12px;color:var(--muted);padding:3px 7px;border:1px solid var(--line);border-radius:999px}.hubBadge{font-size:12px;padding:5px 9px;border-radius:999px;background:#152231;border:1px solid #2c4358;color:#b9c9d7}.hubBadge.dev{background:#4a2d00;border-color:#d58a18;color:#ffd58c}.hubHeader button,.hubToolbar button,.hubToolbar select,.hubToolbar input,.hubSimButtons button,.hubModal button{border:1px solid #31485d;border-radius:7px;background:#152231;color:#edf6ff;padding:9px 12px}.hubHeader button:hover,.hubToolbar button:hover,.hubSimButtons button:hover,.hubModal button:hover{border-color:#5686b5;background:#1b2d3f}.hubMain{width:min(1400px,calc(100% - 40px));margin:0 auto;padding:34px 0 48px}.hubHero{display:flex;align-items:flex-end;justify-content:space-between;gap:20px}.hubEyebrow{margin:0;color:#6da8ff;text-transform:uppercase;letter-spacing:.12em;font-size:11px;font-weight:700}.hubHero h1{font-size:36px;margin:3px 0 4px;letter-spacing:-1.2px}.hubLead{margin:0;color:var(--muted);font-size:16px}.hubPrimary{background:#1d64d5!important;border-color:#357be7!important;color:#fff!important;font-weight:700}.hubStatusGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:26px 0}.hubStatusCard{padding:15px 17px;border:1px solid var(--line);border-radius:10px;background:linear-gradient(180deg,#14202c,#101923)}.hubStatusCard span{display:block;color:var(--muted);font-size:12px}.hubStatusCard strong{display:block;font-size:19px;margin-top:3px}.hubDevSimulator{display:flex;justify-content:space-between;align-items:center;gap:18px;border:1px solid #7a5718;background:#33250d;padding:12px 14px;border-radius:10px;margin-bottom:18px}.hubDevSimulator span{display:block;color:#e2c98f;font-size:12px}.hubSimButtons{display:flex;gap:6px}.hubSimButtons button.active{background:#9b6710;border-color:#d59935}.hubToolbar{display:grid;grid-template-columns:minmax(220px,1fr) 210px auto;gap:10px;margin:18px 0}.hubToolbar input{width:100%}.hubProjectGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:16px}.hubProjectCard{border:1px solid var(--line);border-radius:12px;background:linear-gradient(180deg,#14202c,#0f1821);overflow:hidden;min-width:0;box-shadow:0 10px 30px #0003}.hubThumb{height:150px;background:#08111b;display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--line);overflow:hidden}.hubThumb img{width:100%;height:100%;object-fit:cover}.hubThumbFallback{font-size:42px;font-weight:800;color:#31516e}.hubProjectBody{padding:14px}.hubProjectTitleRow{display:flex;gap:8px;align-items:start}.hubProjectTitle{font-size:18px;font-weight:750;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hubCompatibility{margin-left:auto;border-radius:999px;padding:3px 7px;font-size:11px;white-space:nowrap}.hubCompatibility.ok{color:#93e9b9;background:#123424}.hubCompatibility.locked{color:#ffd586;background:#47320e}.hubMeta{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:12px;color:var(--muted);font-size:12px}.hubProjectActions{display:flex;gap:8px;margin-top:14px}.hubProjectActions button{flex:1;border:1px solid #31485d;border-radius:7px;padding:8px 9px;background:#162536;color:#fff}.hubProjectActions .open{background:#1d64d5;border-color:#357be7;font-weight:700}.hubProjectActions .danger{flex:0 0 auto;color:#ffb1b1}.hubNotice{border:1px solid #5a4119;background:#2d210e;color:#ffd78e;border-radius:9px;padding:11px 13px;margin-bottom:15px}.hubEmpty{text-align:center;padding:64px 20px;border:1px dashed #31485d;border-radius:14px;color:var(--muted)}.hubEmpty h2{color:#fff}.hubFooter{margin-top:auto;padding:20px;text-align:center;color:#728596;border-top:1px solid #182635}.hubModal{position:fixed;inset:0;background:#000a;display:flex;align-items:center;justify-content:center;z-index:100}.hubModal[hidden]{display:none}.hubModalCard{width:min(460px,calc(100% - 30px));background:#111d29;border:1px solid #34506a;border-radius:12px;padding:20px;box-shadow:0 20px 70px #000b}.hubModalCard h2{margin-top:0}.hubModalCard label{display:block;margin-top:12px;color:#b6c5d3}.hubModalCard input{display:block;width:100%;margin-top:5px;border:1px solid #31485d;border-radius:7px;background:#0c151f;color:#fff;padding:10px}.hubModalActions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}
@media(max-width:850px){.hubStatusGrid{grid-template-columns:repeat(2,1fr)}.hubHero{align-items:flex-start;flex-direction:column}.hubToolbar{grid-template-columns:1fr}.hubDevSimulator{align-items:flex-start;flex-direction:column}}@media(max-width:520px){.hubMain{width:min(100% - 22px,1400px)}.hubHeader{padding:0 12px}.hubStatusGrid{grid-template-columns:1fr 1fr}.hubProjectGrid{grid-template-columns:1fr}.hubHeaderActions .hubBadge:first-child{display:none}}


/* ===== LuaDock 1.2.1 · Project Hub 2.0 ===== */
.hubMain{width:min(1560px,calc(100% - 40px))}
.hubToolbar{
  grid-template-columns:minmax(300px,1fr) 170px 190px auto auto;
  align-items:stretch
}
.hubSearchWrap{position:relative;min-width:0}
.hubSearchWrap input{height:100%;padding-right:94px}
.hubResultCount{
  position:absolute;right:9px;top:50%;transform:translateY(-50%);
  color:#8297a9;font-size:11px;pointer-events:none
}
.hubViewSwitch{display:flex;gap:4px;padding:3px;border:1px solid #2c4358;border-radius:8px;background:#0e1822}
.hubViewSwitch button{
  width:34px;min-width:34px;padding:4px!important;border:0!important;background:transparent!important;
  color:#8297a9;font-size:18px;line-height:1
}
.hubViewSwitch button.active{background:#1d64d5!important;color:#fff!important;border-radius:5px}
.hubProjectGrid{grid-template-columns:repeat(auto-fill,minmax(315px,1fr));gap:18px}
.hubProjectCard{position:relative;transition:border-color .15s ease,transform .15s ease,box-shadow .15s ease}
.hubProjectCard:hover{border-color:#3c6486;transform:translateY(-1px);box-shadow:0 14px 36px #0005}
.hubThumb{height:170px}
.hubProjectTitleRow{align-items:center}
.hubProjectTitle{font-size:17px}
.hubProjectSubtitle{
  margin-top:4px;color:#7890a4;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis
}
.hubFavorite{
  flex:0 0 auto!important;width:31px;height:31px;padding:0!important;border:0!important;
  background:transparent!important;color:#6f8497!important;font-size:22px;line-height:1
}
.hubFavorite:hover,.hubFavorite.active{color:#ffd36f!important;background:#312611!important}
.hubMeta{
  grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-top:12px
}
.hubMetaItem{
  display:flex!important;flex-direction:column;min-width:0;padding:7px 8px;border:1px solid #22384a;border-radius:7px;
  background:#0d1721
}
.hubMetaItem small{color:#6f8598;font-size:9px;text-transform:uppercase;letter-spacing:.04em}
.hubMetaItem b{
  margin-top:2px;color:#d7e6f1;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap
}
.hubProjectActions{display:grid;grid-template-columns:minmax(130px,1fr) auto;align-items:stretch}
.hubSecondaryActions{display:flex;gap:5px}
.hubSecondaryActions button{flex:0 0 auto!important;font-size:10px;padding:7px 8px!important}
.hubNoResults{
  grid-column:1/-1;text-align:center;padding:48px 20px;border:1px dashed #31485d;border-radius:12px;color:#8196a8
}
.hubNoResults strong{display:block;color:#e7f1f8;font-size:16px;margin-bottom:3px}
.hubNoResults span{font-size:12px}
.hubModalHint{margin:-4px 0 10px;color:#8195a7;font-size:12px}

/* List view keeps the same data/actions without duplicating markup. */
.hubProjectGrid.list{display:flex;flex-direction:column;gap:7px}
.hubProjectGrid.list .hubProjectCard{
  display:grid;grid-template-columns:122px minmax(0,1fr);min-height:112px
}
.hubProjectGrid.list .hubThumb{height:auto;min-height:112px;border-bottom:0;border-right:1px solid var(--line)}
.hubProjectGrid.list .hubProjectBody{
  display:grid;grid-template-columns:minmax(190px,.9fr) minmax(450px,2fr) auto;
  grid-template-rows:auto auto;column-gap:14px;align-items:center;padding:10px 12px
}
.hubProjectGrid.list .hubProjectTitleRow{grid-column:1;grid-row:1}
.hubProjectGrid.list .hubProjectSubtitle{grid-column:1;grid-row:2;margin:0}
.hubProjectGrid.list .hubMeta{
  grid-column:2;grid-row:1/3;grid-template-columns:repeat(4,minmax(90px,1fr));margin:0
}
.hubProjectGrid.list .hubProjectActions{
  grid-column:3;grid-row:1/3;display:flex;flex-direction:column;min-width:128px;margin:0
}
.hubProjectGrid.list .hubSecondaryActions{display:grid;grid-template-columns:1fr 1fr}
.hubProjectGrid.list .hubSecondaryActions .danger{grid-column:1/-1}
.hubProjectGrid.list .hubCompatibility{font-size:10px}

@media(max-width:1100px){
 .hubToolbar{grid-template-columns:minmax(240px,1fr) 150px 180px auto}
 .hubToolbar>#hubRefreshBtn{grid-column:1/-1}
 .hubProjectGrid.list .hubProjectBody{grid-template-columns:minmax(180px,.8fr) minmax(360px,1.8fr)}
 .hubProjectGrid.list .hubProjectActions{grid-column:1/-1;grid-row:3;flex-direction:row}
}
@media(max-width:850px){
 .hubToolbar{grid-template-columns:1fr 1fr}
 .hubSearchWrap{grid-column:1/-1}
 .hubToolbar>#hubRefreshBtn{grid-column:auto}
 .hubProjectGrid.list .hubProjectCard{grid-template-columns:90px minmax(0,1fr)}
 .hubProjectGrid.list .hubProjectBody{display:block}
 .hubProjectGrid.list .hubMeta{margin-top:8px}
 .hubProjectGrid.list .hubProjectActions{margin-top:8px}
}
@media(max-width:620px){
 .hubToolbar{grid-template-columns:1fr}
 .hubSearchWrap{grid-column:auto}
 .hubProjectGrid{grid-template-columns:1fr}
 .hubProjectGrid.list .hubProjectCard{display:block}
 .hubProjectGrid.list .hubThumb{height:130px;border-right:0;border-bottom:1px solid var(--line)}
 .hubMeta{grid-template-columns:repeat(2,minmax(0,1fr))}
 .hubProjectActions{grid-template-columns:1fr}
 .hubSecondaryActions{display:grid;grid-template-columns:1fr 1fr}
 .hubSecondaryActions .danger{grid-column:1/-1}
}


/* ===== LuaDock 1.5.1 · Project Hub session/UI hotfix ===== */
.hubShell [hidden],.hubModal[hidden]{display:none!important}
.hubNotice.auth{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap
}
.hubNotice.auth>span{flex:1 1 520px}
.hubNoticeAction{
  flex:0 0 auto;padding:7px 11px!important;border-color:#76561a!important;
  background:#271d0b!important;color:#ffd36a!important;font-weight:700
}
.hubNoticeAction:hover{background:#3a290d!important;border-color:#a7781d!important}


/* ===== LuaDock 1.5.1 · Versionshistorie ===== */
.hubVersionsModal{padding:28px}
.hubVersionsCard{
  width:min(920px,calc(100vw - 48px));max-height:min(820px,calc(100vh - 56px));
  padding:0;overflow:hidden;display:flex;flex-direction:column
}
.hubVersionsHeader{
  display:flex;align-items:flex-start;gap:18px;padding:18px 20px 14px;
  border-bottom:1px solid #294156;background:linear-gradient(180deg,#142536,#101c28)
}
.hubVersionsHeader>div{min-width:0;flex:1}
.hubVersionsHeader h2{margin:2px 0 3px}
.hubEyebrow{font-size:9px;letter-spacing:.12em;color:#4d92ee;font-weight:800}
.hubIconClose{
  flex:0 0 auto;width:34px;height:34px;padding:0!important;font-size:22px;line-height:1
}
.hubVersionsSummary{
  padding:9px 20px;border-bottom:1px solid #22394d;background:#0c1721;
  color:#8ba1b3;font-size:11px
}
.hubVersionsList{
  min-height:160px;overflow:auto;padding:10px;display:flex;flex-direction:column;gap:7px;
  scrollbar-color:#36536b #0a131c
}
.hubVersionRow{
  display:grid;grid-template-columns:145px minmax(0,1fr) 135px;gap:12px;align-items:center;
  padding:10px 11px;border:1px solid #263f54;border-radius:8px;background:#101d29
}
.hubVersionRow.current{
  border-color:#2d73c9;background:linear-gradient(90deg,#102944,#101d29)
}
.hubVersionRev{display:flex;align-items:center;gap:7px;min-width:0}
.hubVersionRev strong{color:#edf5fb;font-size:12px;white-space:nowrap}
.hubVersionCurrent{
  padding:2px 5px;border-radius:999px;background:#185bba;color:#fff;font-size:8px;font-weight:800
}
.hubVersionMeta{
  display:grid;grid-template-columns:auto minmax(120px,1fr) auto auto;gap:8px;align-items:center;
  min-width:0;color:#8399ab;font-size:10px
}
.hubVersionMeta b{color:#cfdeea;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hubVersionKind{
  padding:3px 6px;border:1px solid #34536d;border-radius:999px;color:#9eb5c7;font-size:8px;font-weight:800
}
.hubVersionKind.manual{border-color:#3975b0;color:#90c4f2}
.hubVersionKind.autosave{border-color:#3e5c72;color:#90aabc}
.hubVersionKind.restore{border-color:#815db5;color:#d1adff}
.hubVersionKind.export{border-color:#637d3d;color:#b9dd83}
.hubVersionKind.recovery{border-color:#b07534;color:#ffd092}
.hubVersionKind.migration,.hubVersionKind.import{border-color:#2e806a;color:#83e0c6}
.hubVersionActions{display:flex;justify-content:flex-end}
.hubVersionActions button{width:125px;padding:7px 8px!important;font-size:10px}
.hubVersionRestore{background:#195fca!important;border-color:#3481e7!important;color:#fff!important;font-weight:750}
.hubVersionsFooter{
  display:flex;align-items:center;gap:16px;padding:12px 20px;border-top:1px solid #294156;background:#0e1923
}
.hubVersionsFooter span{flex:1;color:#8298aa;font-size:10px}
.hubVersionsLoading,.hubVersionsError{padding:32px;text-align:center;color:#91a5b7}
.hubVersionsError{color:#ffb0a9}
@media(max-width:760px){
 .hubVersionsModal{padding:10px}
 .hubVersionsCard{width:calc(100vw - 20px);max-height:calc(100vh - 20px)}
 .hubVersionRow{grid-template-columns:1fr}
 .hubVersionMeta{grid-template-columns:auto 1fr}
 .hubVersionActions{justify-content:flex-start}
 .hubVersionsFooter{align-items:flex-start;flex-direction:column}
}


/* ===== LuaDock 1.6.0 · Project Hub 3.0 / Trash & Auth UX ===== */
.hubHeroActions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;justify-content:flex-end}
.hubTrashButton{
  border:1px solid #3c5368;border-radius:8px;background:#132230;color:#e8f2fa;
  padding:10px 13px;font-weight:700;display:inline-flex;align-items:center;gap:8px;cursor:pointer
}
.hubTrashButton:hover,.hubTrashButton.active{border-color:#6a8baa;background:#1b3145}
.hubTrashButton.active{box-shadow:inset 0 0 0 1px #4b7dac}
.hubTrashCount{
  min-width:22px;height:20px;padding:0 6px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;
  background:#263b4e;color:#cfe2f2;font-size:11px;font-weight:800
}
.hubTrashButton.active .hubTrashCount{background:#2d67a4;color:#fff}

/* The destructive action is intentionally full-width. In 1.5.x the fourth small action could overflow narrow cards. */
.hubProjectActions{display:grid;grid-template-columns:1fr;gap:7px}
.hubSecondaryActions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;min-width:0}
.hubSecondaryActions button{width:100%;min-width:0!important;white-space:normal;line-height:1.15}
.hubSecondaryActions .hubProjectDelete{grid-column:1/-1!important;background:#2a171a!important;border-color:#6d3037!important;color:#ffc0c4!important;font-weight:750}
.hubSecondaryActions .hubProjectDelete:hover{background:#3a1b20!important;border-color:#9a424c!important;color:#ffe0e2!important}
.hubProjectGrid.list .hubProjectActions{min-width:160px}
.hubProjectGrid.list .hubSecondaryActions{grid-template-columns:1fr 1fr}
.hubProjectGrid.list .hubSecondaryActions .hubProjectDelete{grid-column:1/-1!important}

/* Login is a product-state prompt, not a technical error message. */
.hubNotice.auth{
  max-width:820px;margin:18px auto 22px;padding:18px 19px;display:flex;align-items:center;gap:18px;flex-wrap:wrap;
  border:1px solid #355c7b;background:linear-gradient(180deg,#13283a,#10202e);color:#e8f3fb;
  box-shadow:0 18px 50px #0006;border-radius:12px
}
.hubNoticeCopy{flex:1 1 420px;min-width:0;display:flex;flex-direction:column;gap:3px}
.hubNoticeTitle{font-size:16px;color:#fff}
.hubNoticeText{color:#a9bfd0;font-size:13px}
.hubNoticeActions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.hubNoticeAction{
  flex:0 0 auto;padding:8px 12px!important;border:1px solid #47779b!important;border-radius:7px!important;
  background:#173653!important;color:#e8f5ff!important;font-weight:750;cursor:pointer
}
.hubNoticeAction:hover{background:#1e4a72!important;border-color:#68a0cc!important}
.hubNotice.technical{border:1px solid #76561a;background:#2b220f;color:#ffe0a2;border-radius:10px;padding:14px 16px;margin:0 0 16px;display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.hubNotice.technical .hubNoticeText{color:#e8c989}
.hubNotice.success{border:1px solid #2a7550;background:#102d22;color:#bcf1d5;border-radius:10px;padding:11px 14px;margin:0 0 16px;display:flex;gap:12px;align-items:center}
.hubNotice.success .hubNoticeTitle{font-size:13px;color:#c9f7df}.hubNotice.success .hubNoticeText{color:#9eddbd}

@media(max-width:850px){.hubHeroActions{width:100%;justify-content:flex-start}.hubTrashButton,.hubHeroActions .hubPrimary{flex:1 1 180px}}
@media(max-width:620px){.hubNotice.auth{margin:12px 0 18px}.hubNoticeActions{width:100%}.hubNoticeActions button{flex:1 1 160px}.hubSecondaryActions{grid-template-columns:1fr}}
