/* BUILD_STAMP: 2026-10-21 SGT · session: LAUNCH HUB — Projects landing + project hub styles (launch-hub/hub.js). Local only, not deployed. */
/* POV Launch Hub — scoped to #laHub / #laProjects / .hub-*. pov.sg tokens with
   fallbacks; light only like the rest of pov.sg. */
#laProjects,#laMethod,#laHub{flex:1;min-height:0;overflow:auto;display:none;position:relative}
#laProjects.on,#laMethod.on,#laHub.on{display:block}
/* 24 Oct SPACING: the list panes get the same gutter as LandX (#laMain) and the
   Launch Analytics tab row — clamp(14px,4vw,44px) — with content centred at 1180px
   (advisory.css .adv-host > .wrap). #laHub keeps its own --hub-pad header/body. */
#laProjects,#laMethod{padding:20px clamp(14px,4vw,44px) 60px;overflow-x:hidden}
#laHub{background:var(--bg,#f6f6f3)}
.hub{--hub-pad:clamp(14px,4vw,44px);font-family:var(--font-b,'Inter',system-ui,sans-serif);color:var(--ink,#101214);padding-bottom:60px}
.hub *{box-sizing:border-box}

/* sticky header */
.hub-hd{position:sticky;top:0;z-index:6;background:rgba(255,255,255,.96);backdrop-filter:var(--glass-blur,blur(10px));
  border-bottom:1px solid var(--line,#e6e6e2);padding:10px var(--hub-pad) 8px}
.hub-hd-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.hub-title{flex:1 1 220px;min-width:0}
.hub-title h2{margin:0;font:700 clamp(18px,2.4vw,24px)/1.15 var(--font,'Space Grotesk',system-ui,sans-serif);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hub-meta{font-size:12.5px;color:var(--ink-2,#4d5359);margin-top:2px}
.hub-hd-r{display:flex;align-items:center;gap:8px;margin-left:auto}
.hub-view{display:inline-flex;padding:3px;border-radius:11px;background:rgba(16,20,24,.06)}
.hub-view button{border:0;background:none;padding:6px 12px;border-radius:8px;font:600 12.5px/1.2 var(--font-b,'Inter',system-ui,sans-serif);color:var(--ink-2,#4d5359);cursor:pointer}
.hub-view button.on{background:var(--ink,#101214);color:#fff}
.hub-view button[data-view="client"].on{background:var(--lime,#c8f24b);color:#232a06}
.hub-pn{display:inline-flex;gap:4px}
.hub-nav{width:32px;height:32px;border-radius:50%;border:1px solid var(--line,#e6e6e2);background:#fff;font:700 18px/1 var(--font-b,'Inter',system-ui,sans-serif);cursor:pointer;color:var(--ink,#101214)}
.hub-nav:disabled{opacity:.3;cursor:default}
.hub-unitbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:8px;min-height:32px}
.hub-unit{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:999px;background:var(--ink,#101214);color:#fff;font-size:12.5px;font-variant-numeric:tabular-nums}
.hub-unit.none{background:#fff;color:var(--mut,#8b9095);border:1px dashed var(--line,#d9d9d4)}
.hub-unit.est{background:#fff;color:var(--ink,#101214);border:1px dashed #7d8a64}
.hub-unit b{font-weight:700}

/* stepper */
.hub-steps{display:flex;gap:6px;padding:12px var(--hub-pad) 4px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.hub-steps::-webkit-scrollbar{display:none}
.hub-step{flex:none;display:inline-flex;align-items:center;gap:7px;padding:7px 13px 7px 7px;border-radius:999px;border:1px solid var(--line,#e6e6e2);
  background:#fff;color:var(--ink-2,#4d5359);font:600 13px/1.2 var(--font-b,'Inter',system-ui,sans-serif);cursor:pointer;white-space:nowrap}
.hub-step i{font-style:normal;display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:rgba(16,20,24,.07);font-size:11.5px;font-weight:700}
.hub-step.on{background:var(--ink,#101214);color:#fff;border-color:var(--ink,#101214)}
.hub-step.on i{background:var(--lime,#c8f24b);color:#232a06}
.hub-step:focus-visible,.hub-nav:focus-visible,.hub-view button:focus-visible{outline:2px solid var(--ink,#101214);outline-offset:2px}
.hub-body{padding:6px var(--hub-pad) 0}
.hub-pane{max-width:1180px}
.hub-pane > .adv-sec:first-child,.hub-pane > .hub-legend:first-child{margin-top:10px}

/* associate-only blocks */
.hub-assoc{margin:18px 0 0;padding:4px 12px 12px;border:1.5px dashed #b9c79a;border-radius:var(--r-lg,18px);background:#fbfdf3}
.hub-assoc > .adv-sec{margin-top:10px}
.hub-assoc-hd{display:flex;align-items:center;gap:8px;margin:8px 0 2px}
.hub-flag{display:inline-block;padding:2px 8px;border-radius:999px;background:var(--ink,#101214);color:var(--lime,#c8f24b);font-size:10px;font-weight:800;letter-spacing:.05em;text-transform:uppercase}
.hub-client .hub-assoc{display:none!important}  /* belt and braces: Client view never renders them */

/* units: legend + budget */
.hub-legend{display:flex;flex-wrap:wrap;gap:14px;margin:10px 0 0;font-size:12px;color:var(--ink-2,#4d5359)}
.hub-lg{display:inline-flex;align-items:center;gap:6px}
.hub-lg i{display:inline-block;width:18px;height:14px;border-radius:4px}
.hub-lg.dev i{background:#b9dc5a}
.hub-lg.est i{background:repeating-linear-gradient(135deg,#fbfdf3,#fbfdf3 3px,#e3edc4 3px,#e3edc4 6px);border:1px dashed #7d8a64}
.hub-budget{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:14px 0 6px}
.hub-budget label{font-weight:700;font-size:13px}
.hub-budget input{background:#fff;color:var(--ink,#101214);font:600 15px/1.2 var(--font-b,'Inter',system-ui,sans-serif);padding:8px 12px;border-radius:10px;border:1px solid var(--line,#d9d9d4);width:150px;font-variant-numeric:tabular-nums}
.hub-bout{font-size:13px;min-height:20px;margin:0 0 4px}
.hub-tops{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px}
.adv-cell.hub-outb{opacity:.22}
.adv-cell.hub-inb{box-shadow:inset 0 0 0 2px var(--ink,#101214)}
.adv-cell.hub-topb{position:relative}
.adv-cell.hub-topb::before{content:"★";position:absolute;top:-6px;right:-4px;font-size:12px;color:var(--ink,#101214);text-shadow:0 0 2px #fff}
.hub-leg-inb{box-shadow:inset 0 0 0 2px var(--ink,#101214);background:#fff!important}

/* compare + shortlist */
.hub-cmp{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.hub-ucard{display:flex;flex-direction:column;gap:6px}
.hub-ucard .adv-thumb{max-width:100%;height:auto}
.hub-short{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:6px}
.hub-sitem{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--line,#e6e6e2);border-radius:12px;background:#fff;cursor:grab}
.hub-sitem.drag{opacity:.5}
.hub-sitem.over{border-color:var(--ink,#101214)}
.hub-rank{display:inline-grid;place-items:center;flex:none;width:24px;height:24px;border-radius:50%;background:var(--lime,#c8f24b);color:#232a06;font-weight:800;font-size:12px}
.hub-stext{flex:1;min-width:0;font-size:13px;font-variant-numeric:tabular-nums}
.hub-mini{flex:none;width:30px;height:30px;border-radius:8px;border:1px solid var(--line,#e6e6e2);background:#fff;cursor:pointer;font-size:13px}
.hub-mini:disabled{opacity:.3;cursor:default}
.hub-empty{padding:10px;font-size:13px}
.hub-sform{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 12px;font-size:13px}
.hub-sform input,.hub-sform select{font:500 13px/1.2 var(--font-b,'Inter',system-ui,sans-serif);padding:7px 9px;border-radius:9px;border:1px solid var(--line,#d9d9d4);background:#fff}
.hub-sform input[type=number]{width:64px}
.hub-sform input[type=text]{width:150px}
.hub-or{color:var(--mut,#8b9095);padding:0 4px}
.hub-row{display:flex;gap:8px;flex-wrap:wrap}

/* modules, journey */
.hub-mod{margin-top:12px;min-height:80px}
/* 21 Oct 2026 (fix2): one row — step chips left, deck controls right; the deck
   is a fixed 1280x720 canvas scaled by hub.js fit() so the whole slide shows */
.hub-jrow{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 16px;margin:12px 0 6px}
.hub-jchips{display:flex;flex-wrap:wrap;gap:6px}
.hub-jtools{display:flex;align-items:center;gap:6px;margin-left:auto}
.hub-jbtn{border:1px solid var(--line,#e6e6e2);background:#fff;color:var(--ink,#101214);padding:6px 12px;border-radius:999px;font:600 12.5px/1.2 var(--font-b,'Inter',system-ui,sans-serif);cursor:pointer;white-space:nowrap}
.hub-jbtn:hover{border-color:var(--ink,#101214)}
.hub-jbtn:focus-visible{outline:2px solid var(--ink,#101214);outline-offset:2px}
.hub-jbtn.hub-jedit{background:var(--ink,#101214);color:#fff;border-color:var(--ink,#101214)}
.hub-jbtn.hub-jnav{width:30px;height:30px;padding:0;font-size:17px;line-height:1}
.hub-jcount{font:500 11px/1 var(--mono,'JetBrains Mono',ui-monospace,monospace);letter-spacing:.08em;color:var(--mut,#8b9095);min-width:52px;text-align:center;font-variant-numeric:tabular-nums}
.hub-jnote{min-height:0;margin:0 0 6px}
.hub-jnote:empty{display:none}
.hub-deckwrap{position:relative;overflow:hidden;border-radius:12px;background:#fff;box-shadow:0 1px 0 var(--line,#e6e6e2),0 10px 30px rgba(16,18,20,.08)}
.hub-deck{display:block;position:absolute;top:0;left:0;width:1280px;height:720px;border:0;background:#fff;transform-origin:0 0}
.hub-deck:fullscreen{position:fixed}
.hub-src{margin:18px 0 0;padding-top:10px;border-top:1px solid var(--line,#e6e6e2)}

/* landing extras */
.hub-more{margin:16px 0 0}
.hub-more summary{cursor:pointer;font-weight:600;font-size:13px}
.hub-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}

.hub-toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(20px);opacity:0;pointer-events:none;z-index:9999;
  background:var(--ink,#101214);color:#fff;padding:9px 16px;border-radius:999px;font:600 13px/1.2 var(--font-b,'Inter',system-ui,sans-serif);transition:opacity .2s,transform .2s}
.hub-toast.on{opacity:1;transform:translateX(-50%) translateY(0)}

/* Rental sub-tab (index.html #anaRental) */
#anaRental{position:absolute;top:46px;left:0;right:0;bottom:0;display:none;flex-direction:column}
.rent-hd{flex:none;padding:14px clamp(14px,4vw,44px) 10px;border-bottom:1px solid var(--line,#e6e6e2);background:#fff}
.rent-hd h2{margin:0;font:700 20px/1.2 var(--font,'Space Grotesk',system-ui,sans-serif)}
.rent-hd p{margin:4px 0 0;font-size:13px;color:var(--ink-2,#4d5359)}
#anaRentalFrame{flex:1;width:100%;border:0;min-height:0}

@media (max-width:640px){
  .hub-hd{position:static;padding:8px 12px 6px}
  .hub-hd-row{gap:8px}
  .hub-title{order:2;flex-basis:100%}
  .hub-back{order:1}
  .hub-hd-r{order:1;margin-left:auto}
  .hub-view button{padding:6px 9px}
  .hub-body{padding:4px 12px 0}
  .hub-steps{padding:10px 12px 4px}
  .hub-jtools{margin-left:0}
  .hub-tops{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px;scrollbar-width:thin}
  .hub-tops > *{flex:none}
}

/* 22 Oct fix3: header shortlist button once the selected unit is on the shortlist */
.hub .adv-btn.hub-shorted{background:#eef7e9;border-color:#2f7d32;color:#1f5e22;font-weight:700}

/* 22 Oct VIEW: "👁 View" on each stack heading + the selected-unit bar (launch-hub/floorview.js) */
.hub-viewbtn{display:block;margin:4px auto 0;padding:2px 6px;border-radius:7px;border:1px solid var(--line,#d9d9d4);background:#fff;color:var(--ink,#101214);
  font:600 10.5px/1.3 var(--font-b,'Inter',system-ui,sans-serif);white-space:nowrap;cursor:pointer}
.hub-viewbtn:hover{background:var(--lime,#c8f24b);border-color:#9fbf3a}
.hub-viewbtn:focus-visible{outline:2px solid var(--ink,#101214);outline-offset:1px}
