/* RWE Connect theme · Upcoming, Past Editions, London 2027 hub, Boston 2026 recap */

/* upcoming and past listing pages */
.upcard{display:grid;grid-template-columns:1.05fr 1fr;background:var(--white);border:1px solid var(--cloud);border-radius:var(--rc);overflow:hidden;--acc:var(--cyan-400)}
.upcard.london{--acc:var(--london)}
.upcard .left{background:var(--navy-950);color:var(--white);padding:2.25rem;position:relative;overflow:hidden}
.upcard .left:after{content:"";position:absolute;right:-90px;bottom:-130px;width:300px;height:300px;border-radius:50%;border:36px solid var(--acc);opacity:.3}
.upcard .left>*{position:relative;z-index:1}
.upcard h3{color:var(--white);font-size:clamp(1.5rem,2.6vw,2.1rem);margin:1rem 0 .6rem}
.upcard .line{font-family:var(--mono);font-size:.76rem;letter-spacing:.06em;color:var(--cyan-300);display:block;margin-bottom:.35rem}
.upcard .cd{margin-top:1.75rem}
.upcard .cd .u{min-width:70px;padding:.55rem .7rem}
.upcard .cd .n{font-size:1.6rem}
.upcard .right{padding:2.25rem;display:flex;flex-direction:column;gap:1.25rem}
.upcard .right p{color:var(--slate);margin:0;font-size:1rem}
.upcard .figs{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;border-top:1px solid var(--cloud);border-bottom:1px solid var(--cloud);padding:1rem 0}
.upcard .figs b{display:block;font-family:var(--display);font-size:1.7rem;font-weight:800;letter-spacing:-.03em;line-height:1}
.upcard .figs span{font-size:.8rem;color:var(--slate);display:block;margin-top:.3rem}
.upcard .btn-row{margin-top:auto}
.upcard .more{font-size:.9rem}
.passes{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-top:1.5rem}
.passes a{background:var(--white);border:1px solid var(--cloud);border-radius:var(--r);padding:1rem 1.2rem;text-decoration:none;color:var(--ink);display:block;transition:transform .25s,box-shadow .25s,border-color .25s}
.passes a:hover{transform:translateY(-4px);box-shadow:0 18px 40px -18px rgba(10,18,32,.35);border-color:var(--ocean-700)}
.passes b{display:block;font-family:var(--display)}
.passes span{font-size:.85rem;color:var(--slate)}
.roadmap{display:grid;grid-template-columns:1fr 1fr;gap:3rem;align-items:center}
.yearh{display:flex;align-items:center;gap:1.25rem;margin:2.5rem 0 1.25rem}
.yearh b{font-family:var(--display);font-size:2rem;font-weight:800;letter-spacing:-.03em}
.yearh:after{content:"";flex:1;height:1px;background:var(--cloud)}
.yearh:first-child{margin-top:0}
.pastcard{display:grid;grid-template-columns:1fr 1.15fr;background:var(--white);border:1px solid var(--cloud);border-radius:var(--rc);overflow:hidden;--acc:var(--cyan-400)}
.pastcard .left{background:var(--navy-950);color:var(--white);padding:2.25rem;position:relative;overflow:hidden}
.pastcard .left:after{content:"";position:absolute;right:-90px;top:-130px;width:300px;height:300px;border-radius:50%;border:36px solid var(--acc);opacity:.3}
.pastcard .left>*{position:relative;z-index:1}
.pastcard h3{color:var(--white);font-size:clamp(1.5rem,2.6vw,2.1rem);margin:1rem 0 .6rem}
.pastcard .line{font-family:var(--mono);font-size:.76rem;letter-spacing:.06em;color:var(--cyan-300);display:block;margin-bottom:.35rem}
.pastcard .themes{margin:1.5rem 0 0;padding:0;list-style:none;display:grid;gap:.6rem}
.pastcard .themes li{font-size:.92rem;color:var(--haze);padding-left:1rem;position:relative}
.pastcard .themes li:before{content:"";position:absolute;left:0;top:.55em;width:6px;height:6px;border-radius:50%;background:var(--cyan-400)}
.pastcard .right{padding:2.25rem;display:flex;flex-direction:column;gap:1.25rem}
.pastcard .figs{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}
.pastcard .figs div{border-left:3px solid var(--cyan-400);padding-left:.9rem}
.pastcard .figs b{display:block;font-family:var(--display);font-size:1.7rem;font-weight:800;letter-spacing:-.03em;line-height:1}
.pastcard .figs span{font-size:.8rem;color:var(--slate);display:block;margin-top:.3rem}
.pastcard .logos{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.pastcard .logos .k{font-family:var(--mono);font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:var(--slate);width:100%;display:block}
.pastcard .logos span:not(.k){border:1px solid var(--cloud);border-radius:8px;height:52px;width:120px;display:inline-flex;align-items:center;justify-content:center;padding:.4rem .7rem;background:var(--white)}
.pastcard .logos img{max-height:30px;max-width:96px;width:auto}
.pastcard .btn-row{margin-top:auto}
.recap{display:grid;grid-template-columns:repeat(5,1fr);gap:1rem}
.nextcard{display:grid;grid-template-columns:auto 1fr auto;gap:1.5rem;align-items:center;background:var(--navy-950);color:var(--white);border-radius:var(--rc);padding:1.75rem 2rem}
.nextcard b{display:block;font-family:var(--display);font-size:1.25rem}
.nextcard span{color:var(--haze);font-size:.92rem}

/* edition hub */
.edhero .badge,.edhero .pill{vertical-align:middle}
.edmeta{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;margin:-.4rem 0 1.2rem;font-family:var(--mono);font-size:.78rem;letter-spacing:.06em;color:var(--cyan-300)}
.edmeta span+span:before{content:"·";margin-right:1.5rem;color:var(--haze)}
.subnav{position:sticky;top:var(--navh);z-index:40;background:rgba(255,255,255,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--cloud)}
.subnav .wrap{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:56px}
.subnav .links{display:flex;gap:1.5rem;overflow-x:auto;scrollbar-width:none}
.subnav .links::-webkit-scrollbar{display:none}
.subnav .links a{font-family:var(--display);font-weight:700;font-size:.88rem;color:var(--slate);text-decoration:none;white-space:nowrap;padding:1rem 0;border-bottom:2px solid transparent;transition:color .2s,border-color .2s}
.subnav .links a:hover,.subnav .links a.on{color:var(--ocean-700);border-bottom-color:var(--ocean-700)}
.subnav .acts{display:flex;align-items:center;gap:1rem}
.subnav .acts>a:not(.btn){font-family:var(--display);font-weight:700;font-size:.88rem;color:var(--ink);text-decoration:none}
.subnav .acts .btn{padding:.55em 1.1em;font-size:.85rem}
.card.hl{text-decoration:none;color:var(--ink);display:block}
.chips.orgs span{background:var(--mist)}
.agl{display:grid;grid-template-columns:1fr 1fr;gap:2rem}
.aday{background:var(--white);border:1px solid var(--cloud);border-radius:var(--rc);overflow:hidden;position:relative}
.adh{background:var(--navy-950);color:var(--white);padding:1rem 1.4rem;display:flex;align-items:baseline;gap:1rem}
.adh b{font-family:var(--display);font-size:1.1rem}
.adh span{font-family:var(--mono);font-size:.72rem;letter-spacing:.08em;color:var(--cyan-300)}
.arow{display:grid;grid-template-columns:64px 1fr;gap:1rem;padding:.75rem 1.4rem;border-top:1px solid var(--cloud);font-size:.92rem;align-items:baseline}
.arow i{font-style:normal;font-family:var(--mono);font-size:.78rem;color:var(--ocean-700)}
.arow.brk{background:var(--mist);color:var(--slate)}
.arow.keynote span,.arow.panel span{font-weight:600}
.arow em{font-style:normal;font-family:var(--mono);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ocean-700);margin-left:.5rem;border:1px solid var(--cloud);border-radius:999px;padding:.15em .6em;vertical-align:middle}
.arow.locked{filter:blur(5px);user-select:none;pointer-events:none}
.aovl{position:absolute;left:0;right:0;bottom:0;padding:2.5rem 1.4rem 1.6rem;background:linear-gradient(rgba(255,255,255,0),var(--white) 45%);display:flex;flex-direction:column;align-items:flex-start;gap:.75rem}
.aovl b{font-family:var(--display);font-size:1rem}
.firstsp{display:grid;grid-template-columns:1fr auto;gap:2rem;align-items:center;background:var(--navy-950);color:var(--white);border-radius:var(--rc);padding:2rem 2.25rem}
.firstsp h3{color:var(--white);margin-bottom:.5rem}
.firstsp p{color:var(--haze);margin:0;max-width:64ch}
.firstsp .btn-row{margin:0}
.venuecard{background:var(--navy-950);color:var(--white);border-radius:var(--rc);padding:2rem;position:relative;overflow:hidden}
.venuecard:after{content:"";position:absolute;right:-80px;top:-80px;width:240px;height:240px;border-radius:50%;border:30px solid var(--london);opacity:.35}
.venuecard>*{position:relative;z-index:1}
.venuecard .eyebrow{color:var(--cyan-300)}
.venuecard h3{color:var(--white);font-size:1.5rem;margin-bottom:.6rem}
.venuecard p{color:var(--haze)}
.venuecard .btn-row{margin-top:1.25rem}
.venuecard .btn-secondary{color:var(--white);border-color:var(--white)}

/* Boston 2026 past edition */
.edhero.boston .badge{--acc:var(--cyan-400)}
.pill.past .dot{background:var(--haze);box-shadow:0 0 0 4px rgba(154,170,190,.2)}
.bstats6{grid-template-columns:repeat(6,1fr)}
.ink .bar .v{color:var(--haze)}
.prog .adh b{white-space:nowrap}
.split3{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem}
.split3 .card h3{font-size:1.05rem;margin-bottom:1rem}
.orgwall{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:.8rem}
.orgcard{background:var(--white);border:1px solid var(--cloud);border-radius:var(--r);padding:1rem 1.1rem;font-family:var(--display);font-weight:700;font-size:.92rem;line-height:1.25;display:flex;align-items:center;gap:.7rem;min-height:66px;transition:transform .25s cubic-bezier(.2,.7,.2,1),box-shadow .25s,border-color .25s}
.orgcard:hover{transform:translateY(-4px);box-shadow:0 14px 30px -16px rgba(10,18,32,.35);border-color:var(--ocean-700)}
.orgcard i{flex:0 0 auto;width:8px;height:8px;border-radius:50%;background:var(--cyan-400)}
.orgcard.stage i{background:var(--london)}
.orgcard.tocome{border-style:dashed;color:var(--slate);font-weight:500;background:var(--mist)}
.orgcard.tocome i{background:var(--haze)}
.legend{display:flex;flex-wrap:wrap;gap:1.25rem;margin-bottom:1.25rem;font-size:.85rem;color:var(--slate)}
.legend span{display:inline-flex;align-items:center;gap:.5rem}
.legend i{width:8px;height:8px;border-radius:50%;display:inline-block;background:var(--cyan-400)}
.legend i.stage{background:var(--london)}
.spk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:1.1rem}
.spk{background:var(--white);border:1px solid var(--cloud);border-radius:var(--rc);padding:1.3rem 1.2rem;position:relative;transition:transform .25s cubic-bezier(.2,.7,.2,1),box-shadow .25s,border-color .25s}
.spk:hover{transform:translateY(-5px);box-shadow:0 18px 40px -18px rgba(10,18,32,.35);border-color:var(--ocean-700)}
.spk .avatar{width:60px;height:60px;font-size:1rem;margin-bottom:.9rem}
.spk b{display:block;font-family:var(--display);font-size:1rem;line-height:1.25}
.spk .t{display:block;color:var(--slate);font-size:.84rem;margin-top:.3rem}
.spk .o{display:block;color:var(--ocean-700);font-family:var(--display);font-weight:700;font-size:.85rem;margin-top:.25rem}
.spk .tag{position:absolute;top:1rem;right:1rem;font-family:var(--mono);font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;border:1px solid var(--cloud);border-radius:999px;padding:.2em .6em;color:var(--ocean-700);background:var(--mist)}
.spk .tag.keynote{background:var(--navy-950);color:var(--cyan-300);border-color:var(--navy-950)}
.spk .tag.chair{background:var(--warn-bg);color:var(--warn-ink);border-color:var(--warn-line)}
.prog{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}
.prog .aday .arow{grid-template-columns:1fr auto}
.prog .aday .arow em{margin:0}
.vid{display:grid;grid-template-columns:1.6fr 1fr;gap:1.5rem;align-items:start}
.vframe{position:relative;aspect-ratio:16/9;border-radius:var(--rc);overflow:hidden;background:var(--navy-950);cursor:pointer;border:1px solid var(--line-dark)}
.vframe svg.poster{position:absolute;inset:0;width:100%;height:100%}
.vframe iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.vframe .play{position:absolute;left:50%;top:50%;width:84px;height:84px;margin:-42px 0 0 -42px;border-radius:50%;background:var(--cyan-400);display:flex;align-items:center;justify-content:center;transition:transform .25s,background .25s;box-shadow:0 0 0 0 rgba(41,205,234,.5);animation:pulse 2.4s infinite}
.vframe:hover .play{transform:scale(1.08);background:var(--cyan-300)}
.vframe .play:after{content:"";margin-left:6px;border-left:26px solid var(--navy-950);border-top:15px solid transparent;border-bottom:15px solid transparent}
.vframe .cap{position:absolute;left:0;right:0;bottom:0;padding:1.25rem 1.5rem;background:linear-gradient(transparent,rgba(10,18,32,.9));color:var(--white);font-family:var(--display);font-weight:700}
.vframe .cap small{display:block;font-family:var(--mono);font-weight:400;font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--cyan-300);margin-bottom:.3rem}
.vframe .tocome{position:absolute;left:1rem;top:1rem;font-family:var(--mono);font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;background:var(--warn-bg);color:var(--warn-ink);padding:.25em .6em;border-radius:999px}
.clips{display:grid;gap:.9rem}
.clip{color:var(--ink);display:grid;grid-template-columns:132px 1fr;gap:1rem;align-items:center;background:var(--white);border:1px solid var(--cloud);border-radius:var(--r);padding:.6rem;cursor:pointer;transition:transform .25s cubic-bezier(.2,.7,.2,1),box-shadow .25s,border-color .25s}
.clip:hover{transform:translateY(-3px);box-shadow:0 14px 30px -16px rgba(10,18,32,.35);border-color:var(--ocean-700)}
.clip .th{aspect-ratio:16/9;border-radius:6px;overflow:hidden;position:relative;background:var(--navy-950)}
.clip .th svg{width:100%;height:100%;display:block}
.clip .th:after{content:"";position:absolute;left:50%;top:50%;margin:-7px 0 0 -4px;border-left:12px solid var(--white);border-top:7px solid transparent;border-bottom:7px solid transparent}
.clip b{display:block;font-family:var(--display);font-size:.92rem;line-height:1.3}
.clip span{display:block;font-family:var(--mono);font-size:.7rem;letter-spacing:.08em;color:var(--slate);margin-top:.3rem}
.gal{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:170px;grid-auto-flow:dense;gap:.8rem}
.gal a{display:block;position:relative;border-radius:var(--r);overflow:hidden;background:var(--navy-950);border:1px solid var(--line-dark);cursor:zoom-in;transition:transform .25s cubic-bezier(.2,.7,.2,1),box-shadow .25s}
.gal a:hover{transform:translateY(-4px);box-shadow:0 18px 40px -18px rgba(10,18,32,.5)}
.gal a.w2{grid-column:span 2}
.gal a.h2{grid-row:span 2}
.gal a svg,.gal a img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.gal a span{position:absolute;left:0;right:0;bottom:0;padding:.8rem 1rem;background:linear-gradient(transparent,rgba(10,18,32,.85));color:var(--white);font-size:.8rem;font-family:var(--display);font-weight:700}
.gal a em{position:absolute;left:.8rem;top:.8rem;font-style:normal;font-family:var(--mono);font-size:.58rem;letter-spacing:.12em;text-transform:uppercase;background:var(--warn-bg);color:var(--warn-ink);padding:.25em .6em;border-radius:999px}
.lb{position:fixed;inset:0;z-index:200;background:rgba(10,18,32,.94);display:none;align-items:center;justify-content:center;padding:2rem}
.lb.open{display:flex}
.lb figure{margin:0;max-width:min(1100px,92vw);width:100%}
.lb .img{aspect-ratio:16/10;border-radius:var(--rc);overflow:hidden;background:var(--navy-800);position:relative}
.lb .img svg,.lb .img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.lb figcaption{color:var(--white);font-family:var(--display);font-weight:700;margin-top:1rem;display:flex;justify-content:space-between;align-items:center;gap:1rem}
.lb figcaption small{font-family:var(--mono);font-weight:400;font-size:.72rem;letter-spacing:.1em;color:var(--cyan-300)}
.lb button{position:absolute;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.2);color:var(--white);width:48px;height:48px;border-radius:50%;cursor:pointer;font-size:1.3rem;display:flex;align-items:center;justify-content:center;transition:background .2s}
.lb button:hover{background:var(--cyan-400);color:var(--navy-950)}
.lb .x{top:1.25rem;right:1.25rem}
.lb .p{left:1.25rem;top:50%;margin-top:-24px}
.lb .n{right:1.25rem;top:50%;margin-top:-24px}
.sponsframe{background:var(--white);border:1px solid var(--cloud);border-radius:var(--rc);padding:2rem;display:grid;grid-template-columns:repeat(5,1fr);align-items:center;gap:1.25rem}
.sponsframe .logo{border:0;width:100%;height:84px;transition:transform .25s}
.sponsframe .logo:hover{transform:translateY(-4px)}
.stst{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem}
.stst .tst{flex:none}
.stst .tst .lg{height:40px;margin-bottom:1rem;display:flex;align-items:center}
.stst .tst .lg img{max-height:36px;max-width:150px}
.rep-side dl div+div{padding-top:1.1rem;border-top:1px solid rgba(255,255,255,.1)}
.rep-side ul{margin:.4rem 0 0;padding-left:1.1rem;color:var(--haze);font-size:.9rem}
.rep-side li{margin-bottom:.3rem}
.closing .nextcard{background:var(--panel);border:1px solid var(--line-dark)}
.nextcard.cdcard{grid-template-columns:auto 1fr auto auto}
.nextcard .cd{margin:0}
.nextcard .cd .n{font-size:1.4rem;min-width:2.2em}
.nextcard .cd .lbl{display:none}

/* ===== responsive and media queries ===== */
@media (max-width:1000px){
  .recap{grid-template-columns:repeat(3,1fr)}
  .bstats6{grid-template-columns:repeat(3,1fr)}
}
@media (max-width:900px){
  .upcard{grid-template-columns:1fr}
  .upcard .figs{grid-template-columns:1fr 1fr}
  .roadmap{grid-template-columns:1fr}
  .pastcard{grid-template-columns:1fr}
  .agl{grid-template-columns:1fr}
  .split3{grid-template-columns:1fr}
  .prog{grid-template-columns:1fr}
  .vid{grid-template-columns:1fr}
  .gal{grid-template-columns:repeat(2,1fr);grid-auto-rows:150px}
  .gal a.h2{grid-row:span 1}
  .sponsframe{grid-template-columns:repeat(3,1fr)}
  .stst{grid-template-columns:1fr}
  .nextcard.cdcard{grid-template-columns:auto 1fr}
  .nextcard .cd,.nextcard .btn-row{grid-column:1/-1}
}
@media (max-width:800px){
  .firstsp{grid-template-columns:1fr}
}
@media (max-width:700px){
  .passes{grid-template-columns:1fr}
  .nextcard{grid-template-columns:1fr}
  .subnav .acts>a:not(.btn){display:none}
}
@media (max-width:640px){
  .recap{grid-template-columns:1fr}
}
@media (max-width:560px){
  .bstats6{grid-template-columns:repeat(2,1fr)}
  .sponsframe{grid-template-columns:repeat(2,1fr)}
}
