/* BAMBO ecosystem portfolio. Dark base, one family look, one accent per product. Square corners, no light borders. */
.bp { --bp-bg:#07110e; --bp-alt:#0a1814; --bp-panel:rgba(255,255,255,.04); --bp-text:#cfe3da; --bp-muted:#8fb0a3; --bp-head:#fff; --bp-shadow:0 14px 30px -16px rgba(0,0,0,.75),0 2px 8px rgba(0,0,0,.3);
  background:var(--bp-bg); color:var(--bp-text); font-family:'IBM Plex Sans',system-ui,sans-serif; }
.bp * { box-sizing:border-box; }
.bp-wrap { max-width:1120px; margin:0 auto; padding:0 24px; }
.bp h1,.bp h2,.bp h3 { color:var(--bp-head); margin:0; letter-spacing:-.02em; line-height:1.12; }
.bp p { margin:0; line-height:1.65; }
.bp a { text-decoration:none; }
.bp-eyebrow { font:600 12px/1 'IBM Plex Mono',monospace; letter-spacing:.14em; text-transform:uppercase; color:#3ddba0; }
/* hero */
.bp-hero { padding:128px 0 72px; background:radial-gradient(900px 380px at 80% -10%,rgba(61,219,160,.12),transparent 70%),var(--bp-bg); }
.bp-hero h1 { font-size:clamp(36px,6vw,64px); margin:18px 0 20px; font-weight:700; }
.bp-hero h1 span { color:#3ddba0; }
.bp-hero p.lead { max-width:640px; font-size:18px; color:var(--bp-text); }
.bp-actions { display:flex; flex-wrap:wrap; gap:12px; margin-top:30px; }
.bp-btn { display:inline-flex; align-items:center; gap:8px; padding:14px 22px; font-weight:600; font-size:15px; transition:background .2s,transform .2s; }
.bp-btn-primary { background:#1A9E72; color:#fff; } .bp-btn-primary:hover { background:#168a63; transform:translateY(-1px); }
.bp-btn-ghost { background:rgba(255,255,255,.06); color:#d6e6df; } .bp-btn-ghost:hover { background:rgba(90,255,185,.1); color:#fff; }
/* ecosystem map */
.bp-map { padding:8px 0 80px; }
.bp-map-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin-top:28px; position:relative; }
.bp-map-core { grid-column:1/-1; background:var(--bp-panel); box-shadow:var(--bp-shadow); padding:22px 26px; display:flex; align-items:center; justify-content:space-between; gap:18px; flex-wrap:wrap; }
.bp-map-core b { font-size:22px; color:#fff; } .bp-map-core span { color:var(--bp-muted); font-size:15px; }
.bp-node { display:block; background:var(--bp-panel); box-shadow:var(--bp-shadow); padding:20px 22px; transition:background .2s,transform .2s; position:relative; }
.bp-node:hover { background:rgba(90,255,185,.07); transform:translateY(-2px); }
.bp-node::before { content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--acc); }
.bp-node small { display:block; font:600 11px/1 'IBM Plex Mono',monospace; letter-spacing:.12em; text-transform:uppercase; color:var(--acc); margin-bottom:10px; }
.bp-node strong { display:block; color:#fff; font-size:18px; margin-bottom:6px; } .bp-node em { font-style:normal; color:var(--bp-muted); font-size:14px; }
/* product sections */
.bp-prod { padding:84px 0; } .bp-prod:nth-of-type(even) { background:var(--bp-alt); }
.bp-prod-grid { display:grid; grid-template-columns:1fr 1.15fr; gap:56px; align-items:center; }
.bp-prod.bp-rev .bp-prod-copy { order:2; }
.bp-kicker { display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:16px; }
.bp-kicker .k { font:600 12px/1 'IBM Plex Mono',monospace; letter-spacing:.12em; text-transform:uppercase; color:var(--acc); }
.bp-badge { font:600 11px/1 'IBM Plex Mono',monospace; letter-spacing:.08em; text-transform:uppercase; padding:6px 10px; background:rgba(255,255,255,.06); color:#d6e6df; }
.bp-badge.live { background:rgba(61,219,160,.16); color:#3ddba0; }
.bp-name { font-size:clamp(30px,4.2vw,46px); font-weight:700; }
.bp-name small { font-size:.5em; font-weight:500; color:var(--bp-muted); margin-left:8px; letter-spacing:0; }
.bp-tag { font-size:19px; color:var(--acc); margin:14px 0 16px; font-weight:500; }
.bp-desc { font-size:16.5px; max-width:520px; }
.bp-feats { list-style:none; margin:24px 0 0; padding:0; display:grid; gap:10px; }
.bp-feats li { position:relative; padding-left:22px; color:var(--bp-text); }
.bp-feats li::before { content:""; position:absolute; left:0; top:.62em; width:8px; height:8px; background:var(--acc); }
.bp-visual { background:var(--bp-panel); box-shadow:var(--bp-shadow); aspect-ratio:16/10; display:flex; align-items:center; justify-content:center; overflow:hidden; position:relative; }
.bp-visual::after { content:""; position:absolute; inset:0; background:radial-gradient(420px 220px at 70% 0%,var(--acc),transparent 70%); opacity:.12; pointer-events:none; }
.bp-visual img { width:100%; height:100%; object-fit:cover; display:block; }
.bp-visual svg { width:88%; height:auto; color:var(--acc); }
.bp-flag .bp-visual { aspect-ratio:16/10; }
.bp-more { display:inline-flex; margin-top:26px; color:#fff; font-weight:600; border-bottom:2px solid var(--acc); padding-bottom:3px; }
.bp-more:hover { color:var(--acc); }
/* prototype band */
.bp-proto { padding:84px 0; background:var(--bp-alt); }
.bp-proto-box { background:var(--bp-panel); box-shadow:var(--bp-shadow); padding:40px; display:grid; grid-template-columns:1.4fr 1fr; gap:40px; align-items:center; border-left:3px solid #3ddba0; }
.bp-proto h2 { font-size:clamp(26px,3.4vw,36px); margin:14px 0 14px; }
.bp-proto-side { display:grid; gap:10px; align-content:start; }
.bp-proto-side .bp-btn { justify-content:space-between; }
.bp-proto-thumb { aspect-ratio:16/10; background:rgba(0,0,0,.25); overflow:hidden; } .bp-proto-thumb img { width:100%; height:100%; object-fit:cover; display:block; }
/* vision */
.bp-vision { padding:84px 0; }
.bp-vision-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:16px; margin-top:32px; }
.bp-vcard { background:var(--bp-panel); box-shadow:var(--bp-shadow); padding:28px; }
.bp-vcard b { display:block; font:600 12px/1 'IBM Plex Mono',monospace; letter-spacing:.12em; text-transform:uppercase; color:#3ddba0; margin-bottom:12px; }
.bp-vcard h3 { font-size:21px; margin-bottom:10px; } .bp-vcard p { color:var(--bp-muted); font-size:15px; }
.bp-section-title { font-size:clamp(26px,3.4vw,38px); margin-top:14px; }
@media (max-width:900px){
  .bp-hero { padding:104px 0 56px; } .bp-prod,.bp-proto,.bp-vision { padding:60px 0; }
  .bp-prod-grid,.bp-proto-box { grid-template-columns:1fr; gap:30px; } .bp-prod.bp-rev .bp-prod-copy { order:0; }
  .bp-map-grid,.bp-vision-grid { grid-template-columns:1fr; } .bp-proto-box { padding:26px; }
}
@media (prefers-reduced-motion:reduce){ .bp-node,.bp-btn { transition:none; } }

/* bp-vision-4 */
@media (min-width:901px) and (max-width:1100px){ .bp-vision-grid { grid-template-columns:repeat(2,1fr); } }

/* gwx-portfolio-light: light version of the portfolio; dark mode keeps the original look */
html:not(.site-dark) .bp { --bp-bg:#f4f8f6; --bp-alt:#eaf3ee; --bp-panel:#ffffff; --bp-text:#2b4339; --bp-muted:#5d746b; --bp-head:#0B3D2E; --bp-shadow:0 12px 28px -18px rgba(11,61,46,.35), 0 1px 3px rgba(11,61,46,.08); }
html:not(.site-dark) .bp-eyebrow,
html:not(.site-dark) .bp-hero h1 span,
html:not(.site-dark) .bp-vcard b,
html:not(.site-dark) .bp-badge.live { color:#0f7a58; }
html:not(.site-dark) .bp-badge.live { background:rgba(26,158,114,.12); }
html:not(.site-dark) .bp-badge { background:rgba(11,61,46,.07); color:#2b4339; }
html:not(.site-dark) .bp-map-core b,
html:not(.site-dark) .bp-node strong,
html:not(.site-dark) .bp-more { color:#0B3D2E; }
html:not(.site-dark) .bp-more:hover { color:#0f7a58; }
html:not(.site-dark) .bp-btn-ghost { background:rgba(11,61,46,.07); color:#0B3D2E; }
html:not(.site-dark) .bp-btn-ghost:hover { background:rgba(26,158,114,.14); color:#0B3D2E; }
html:not(.site-dark) .bp-node:hover { background:rgba(26,158,114,.07); }
html:not(.site-dark) .bp-proto-box { border-left-color:#1A9E72; }
html:not(.site-dark) .bp-proto-thumb { background:#e3ede8; }