/* ============================================================================
   PCBL — page components (loaded after style.css + fx.css)
   ========================================================================== */

/* ================================================================== HOME */
.cred-panels:not(.in) .stg{ opacity:0; }
.cred-panels.in .cred-panel.on .stg{ animation:revealIn .95s var(--ease) both; animation-delay:calc(var(--d,0) * 85ms); }

.explore-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:16px; }
.ex-card{
  position:relative; overflow:hidden; border-radius:var(--radius-l); border:1px solid var(--line); background:var(--panel);
  padding:1.6rem; min-height:260px; display:flex; flex-direction:column; gap:.2rem;
}
.ex-card::before{
  content:''; position:absolute; width:240px; height:240px; right:-90px; top:-90px; border-radius:50%; pointer-events:none;
  background:radial-gradient(circle, color-mix(in srgb,var(--accent) 32%,transparent), transparent 70%);
  transition:transform .9s var(--ease);
}
.ex-card:hover::before{ transform:scale(2.1); }
.ex-ico{ width:50px; height:50px; border-radius:15px; display:grid; place-items:center; border:1px solid var(--line-2); color:var(--accent); background:var(--bg-2); position:relative; transition:.5s var(--ease); }
.ex-card:hover .ex-ico{ background:var(--accent); color:var(--accent-ink); transform:rotate(-12deg) scale(1.08); }
.ex-n{ font-family:var(--ff-display); font-size:clamp(3rem,6vw,4.8rem); font-weight:300; line-height:1; margin-top:auto; letter-spacing:-.05em; position:relative; }
.ex-l{ font-size:1.12rem; font-weight:500; position:relative; }
.ex-card small{ color:var(--muted); font-size:.82rem; position:relative; }
.ex-go{ position:absolute; right:1.4rem; bottom:1.4rem; width:42px; height:42px; border-radius:50%; border:1px solid var(--line-2); display:grid; place-items:center; transition:.5s var(--ease); }
.ex-card:hover .ex-go{ background:var(--accent); color:var(--accent-ink); border-color:transparent; transform:rotate(-45deg) scale(1.1); }

/* ================================================================ PAPERS */
.summary-row{ display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:clamp(24px,3vw,40px); }
.sum{ padding:1.25rem 1.35rem; border-radius:var(--radius); border:1px solid var(--line); background:var(--panel); overflow:hidden; }
.sum b{ display:block; font-family:var(--ff-display); font-size:clamp(1.9rem,3.4vw,2.7rem); font-weight:400; letter-spacing:-.04em; line-height:1; }
.sum span{ display:block; margin-top:.55rem; font-family:var(--ff-mono); font-size:.56rem; letter-spacing:.15em; text-transform:uppercase; color:var(--muted); }
.toolbar-r{ display:flex; gap:.6rem; align-items:center; justify-content:flex-end; flex:1 1 440px; }
.toolbar-r .search{ flex:1; max-width:380px; min-width:0; }
.sort-sel{
  appearance:none; -webkit-appearance:none; padding:.7rem 2.3rem .7rem 1.05rem; border-radius:999px; border:1px solid var(--line);
  background:var(--panel) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%237d9a8b' stroke-width='2.4'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 14px center;
  font-size:.84rem; outline:none; cursor:pointer; transition:.3s var(--ease);
}
.sort-sel:focus{ border-color:var(--accent); }
.sort-sel option{ background:var(--bg-2); color:var(--text); }
.all-head{ margin-bottom:1.1rem; }
.paper-title a{ transition:color .3s; }

/* ================================================================= BOOKS */
.book{ grid-template-columns:130px 1fr; align-items:start; color:inherit; }
.b3d{ position:relative; width:112px; aspect-ratio:2/3; perspective:1100px; margin:8px 0 0 10px; }
.b3d::after{ content:''; position:absolute; left:4%; right:-16%; bottom:-16px; height:16px; background:radial-gradient(ellipse at center, rgba(0,0,0,.55), transparent 70%); filter:blur(4px); transition:.9s var(--ease); }
.b3d-in{ position:relative; width:100%; height:100%; transform-style:preserve-3d; transform:rotateY(-26deg) rotateX(5deg); transition:transform 1.1s var(--ease); }
.book:hover .b3d-in{ transform:rotateY(32deg) rotateX(-6deg) translateZ(24px) translateY(-6px); }
.book:hover .b3d::after{ transform:scaleX(.8); opacity:.6; }
.b3d-front,.b3d-back{ position:absolute; inset:0; border-radius:2px 7px 7px 2px; overflow:hidden; backface-visibility:hidden; }
.b3d-front{ transform:translateZ(11px); box-shadow:inset 5px 0 9px -5px rgba(0,0,0,.7); }
.b3d-front::after{ content:''; position:absolute; inset:0; background:linear-gradient(105deg, rgba(255,255,255,.18), transparent 35%, transparent 70%, rgba(255,255,255,.08)); pointer-events:none; }
.b3d-front img,.b3d-front svg{ width:100%; height:100%; object-fit:cover; }
.b3d-back{ transform:rotateY(180deg) translateZ(11px); background:var(--bg-3); }
.b3d-spine{
  position:absolute; top:0; bottom:0; left:0; width:22px; transform:translateX(-11px) rotateY(-90deg);
  background:linear-gradient(90deg,#082419,#115236 50%,#082419); display:grid; place-items:center; overflow:hidden; border-radius:2px;
}
.b3d-spine span{ writing-mode:vertical-rl; transform:rotate(180deg); font-family:var(--ff-mono); font-size:.4rem; letter-spacing:.1em; color:#bef264; white-space:nowrap; }
.b3d-pages{ position:absolute; top:3px; bottom:3px; left:calc(100% - 10px); width:20px; transform:rotateY(90deg); background:repeating-linear-gradient(90deg,#f3f1e6 0 1px,#d6d3c3 1px 2px); }

/* ============================================================== PROJECTS */
.mega-clock{ margin-top:2.4rem; border-radius:var(--radius-l); border:1px solid var(--line-2); background:var(--panel); padding:clamp(20px,3vw,36px); position:relative; overflow:hidden; }
.mc-lbl{ font-family:var(--ff-mono); font-size:.62rem; letter-spacing:.18em; text-transform:uppercase; color:var(--muted); }
.mc-val{ display:flex; flex-wrap:wrap; gap:clamp(12px,2.6vw,38px); margin:1rem 0 1.3rem; }
.mc-val span{ font-family:var(--ff-display); font-size:clamp(2.3rem,7vw,5.4rem); font-weight:300; line-height:1; letter-spacing:-.04em; font-variant-numeric:tabular-nums; display:flex; align-items:baseline; gap:.35rem; }
.mc-val i{ font-style:normal; font-family:var(--ff-mono); font-size:.58rem; letter-spacing:.14em; text-transform:uppercase; color:var(--accent); }
.mc-val .sec{ color:var(--accent); text-shadow:0 0 30px color-mix(in srgb,var(--accent) 60%,transparent); animation:tickPulse 1s ease-out infinite; }
@keyframes tickPulse{ 0%{ opacity:1; } 60%{ opacity:.55; } 100%{ opacity:1; } }
.mc-foot{ display:flex; justify-content:space-between; align-items:center; gap:1rem; flex-wrap:wrap; font-size:.92rem; color:var(--muted); }
.mc-foot b{ color:var(--text); font-weight:600; }

.proj-sum{ color:var(--muted); font-size:.84rem; margin:-.2rem 0 .9rem; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
/* segmented flip clock (project cards, composer preview, funding) */
.clock{ display:block; }
.clock-top{ display:flex; justify-content:space-between; align-items:center; gap:.6rem; margin-bottom:.65rem; }
.clock-top .lbl{ display:inline-flex; align-items:center; gap:.45rem; }
.clock-top .live-dot{ margin:0; }
.pct-v{ font-family:var(--ff-mono); color:var(--text); font-weight:600; font-size:.72rem; letter-spacing:0; font-variant-numeric:tabular-nums; }
.clock .val,.fund-clock{ display:grid; grid-template-columns:repeat(6,1fr); gap:5px; font-size:inherit; perspective:400px; }
.seg{ display:grid; justify-items:center; gap:.12rem; padding:.5rem .15rem .38rem; border-radius:10px; background:var(--bg-2); border:1px solid var(--line); position:relative; overflow:hidden; }
.seg::after{ content:''; position:absolute; left:0; right:0; top:46%; height:1px; background:color-mix(in srgb,var(--bg) 70%,transparent); pointer-events:none; }
.seg b{ font-family:var(--ff-mono); font-size:1rem; font-weight:600; line-height:1.1; font-variant-numeric:tabular-nums; color:var(--text); }
.seg i{ font-style:normal; font-family:var(--ff-mono); font-size:.44rem; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); }
.seg.s{ border-color:color-mix(in srgb,var(--accent) 35%,transparent); background:color-mix(in srgb,var(--accent) 7%,var(--bg-2)); }
.seg.s b{ color:var(--accent); }
.is-live .seg.s b{ display:inline-block; animation:segFlip .5s var(--ease); }
@keyframes segFlip{ from{ transform:translateY(-55%) rotateX(85deg); opacity:0; } to{ transform:none; opacity:1; } }
.fund-clock{ gap:6px; margin:.9rem 0 .7rem; }
.fund-clock .seg{ padding:.7rem .2rem .5rem; }
.fund-clock .seg b{ font-size:clamp(1.05rem,1.8vw,1.4rem); }
.proj.flash{ animation:flashIn 1.1s ease-in-out 3; }
@keyframes flashIn{ 50%{ box-shadow:0 0 0 2px var(--accent-2), 0 0 60px -6px var(--accent-2); } }
.add-proj-card{ position:relative; }

/* =============================================================== COMPOSER */
.comp-step{
  margin-left:auto; font-family:var(--ff-mono); font-size:.56rem; letter-spacing:.12em; text-transform:uppercase; white-space:nowrap;
  padding:.38rem .75rem; border-radius:999px; border:1px solid var(--line-2);
  background:linear-gradient(90deg, color-mix(in srgb,var(--accent) 30%,transparent) calc(var(--p,0) * 100%), transparent 0);
}
.char-count{ text-align:right; font-family:var(--ff-mono); font-size:.6rem; color:var(--muted); margin-top:-.4rem; }
.dropzone .dz-txt{ display:grid; gap:.25rem; justify-items:center; }
.dz-ico{ font-size:1.9rem; transition:transform .5s var(--ease); }
.dropzone:hover .dz-ico{ transform:scale(1.2) rotate(-8deg); }
.dropzone .dz-txt b{ color:var(--text); font-weight:500; }
.dropzone .dz-txt small{ font-size:.74rem; }
.dz-clear{ position:absolute; top:14px; right:14px; width:32px; height:32px; border-radius:50%; background:color-mix(in srgb,var(--bg) 70%,transparent); backdrop-filter:blur(8px); border:1px solid var(--line-2); display:none; place-items:center; z-index:3; font-size:.8rem; }
.dropzone.has .dz-clear{ display:grid; }
.dz-clear:hover{ background:var(--danger); color:#fff; }

.xsec{ display:grid; grid-template-rows:0fr; transition:grid-template-rows .55s var(--ease); }
.xsec.open{ grid-template-rows:1fr; }
.xsec-in{ overflow:hidden; }
.xsec.open .xsec-in{ animation:fadeUp .55s var(--ease); }
.stepper{ display:flex; border:1px solid var(--line); border-radius:12px; background:var(--bg-2); overflow:hidden; }
.stepper button{ width:42px; font-size:1.15rem; color:var(--accent); transition:background .25s; }
.stepper button:hover{ background:var(--panel-2); }
.stepper input{ border:0 !important; box-shadow:none !important; text-align:center; background:transparent; border-radius:0; font-family:var(--ff-mono); -moz-appearance:textfield; }
.stepper input::-webkit-outer-spin-button,.stepper input::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
.dur-quick{ display:flex; gap:.4rem; align-items:center; margin-top:.8rem; flex-wrap:wrap; }
.dur-quick .mono{ font-size:.55rem; margin-right:.3rem; }
.dur-quick button{ padding:.35rem .75rem; border-radius:999px; border:1px solid var(--line); font-size:.74rem; color:var(--text-2); transition:.3s var(--ease); }
.dur-quick button:hover{ border-color:var(--accent); color:var(--accent); transform:translateY(-2px); }

.add-bar{ display:flex; align-items:center; justify-content:space-between; gap:1rem; margin-top:1.15rem; padding:.6rem .6rem .6rem 1rem; border:1px solid var(--line); border-radius:16px; flex-wrap:wrap; background:var(--panel); }
.add-bar > span{ font-size:.88rem; font-weight:500; }
.add-acts{ display:flex; gap:.25rem; }
.act{ width:44px; height:44px; border-radius:50%; display:grid; place-items:center; font-size:1.25rem; position:relative; transition:.35s var(--ease); }
.act:hover{ background:var(--panel-2); transform:translateY(-3px) scale(1.12); }
.act.on{ background:color-mix(in srgb,var(--c) 20%,transparent); box-shadow:inset 0 0 0 1.5px var(--c); }
.act em{
  position:absolute; bottom:calc(100% + 6px); left:50%; translate:-50% 4px; font-style:normal; font-size:.64rem; font-weight:500;
  padding:.22rem .55rem; border-radius:7px; background:var(--bg-3); border:1px solid var(--line-2); opacity:0; pointer-events:none;
  transition:.25s var(--ease); white-space:nowrap;
}
.act:hover em{ opacity:1; translate:-50% 0; }
.post-btn{ overflow:hidden; position:relative; }
.post-btn .pb-ico{ display:inline-block; transition:transform .5s var(--ease), opacity .4s; }
.post-btn:not(:disabled):hover .pb-ico{ transform:translateX(4px) rotate(-18deg); }
.post-btn.sent{ animation:sentPop .6s var(--ease); }
.post-btn.sent .pb-ico{ transform:translate(60px,-40px) rotate(-30deg); opacity:0; }
@keyframes sentPop{ 40%{ transform:scale(1.12); } }
.confetti{ position:fixed; width:10px; height:10px; z-index:9995; pointer-events:none; border-radius:2px; }

#mine{ display:grid; gap:10px; }
.mine-row{ display:flex; align-items:center; gap:1rem; padding:.8rem; border:1px solid var(--line); border-radius:var(--radius); background:var(--panel); flex-wrap:wrap; }
.mine-thumb{ width:100px; aspect-ratio:16/10; border-radius:10px; overflow:hidden; flex:none; }
.mine-thumb img,.mine-thumb svg{ width:100%; height:100%; object-fit:cover; }
.mine-body{ flex:1; min-width:200px; }
.mine-body b{ display:block; font-weight:500; }
.mine-body small{ color:var(--muted); font-size:.78rem; }
.chip.del:hover,.chip.del.confirm{ color:var(--danger); border-color:var(--danger); }

/* =============================================================== FUNDING */
.fund-hero{ display:grid; grid-template-columns:1.3fr .7fr; gap:clamp(20px,4vw,60px); align-items:center; }
.fund-thumb{ border-radius:var(--radius-l); overflow:hidden; border:1px solid var(--line-2); aspect-ratio:16/10; box-shadow:var(--shadow); position:relative; }
.fund-thumb img,.fund-thumb svg{ width:100%; height:100%; object-fit:cover; }
.fund-chips{ display:flex; gap:.4rem; flex-wrap:wrap; margin-top:1.3rem; }
.donut-c{ position:absolute; inset:0; z-index:2; display:grid; place-items:center; align-content:center; text-align:center; }
.donut-c b{ font-family:var(--ff-display); font-size:2.2rem; font-weight:400; line-height:1; }
.donut-c small{ font-family:var(--ff-mono); font-size:.55rem; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); }
@property --sweep{ syntax:'<percentage>'; inherits:false; initial-value:0%; }
.donut.spin-in{ -webkit-mask:conic-gradient(#000 var(--sweep), transparent 0); mask:conic-gradient(#000 var(--sweep), transparent 0); animation:sweepIn 2s .9s var(--ease) forwards; }
@keyframes sweepIn{ to{ --sweep:100%; } }
.dl-row{ animation:fadeUp .7s var(--ease) both; animation-delay:calc(var(--d) * 120ms + 1s); }
.person-mini{ display:flex; align-items:center; gap:.8rem; padding:.55rem; border-radius:14px; transition:.35s var(--ease); }
.person-mini + .person-mini{ margin-top:4px; }
.person-mini:hover{ background:var(--panel-2); transform:translateX(5px); }
.pm-ph{ width:42px; height:42px; border-radius:12px; overflow:hidden; flex:none; border:1px solid var(--line-2); }
.pm-ph img,.pm-ph svg{ width:100%; height:100%; object-fit:cover; }
.person-mini b{ display:block; font-size:.9rem; font-weight:500; }
.person-mini small{ display:block; color:var(--muted); font-size:.74rem; }

/* ================================================================== TEAM */
.m-prog{ display:flex; align-items:center; gap:.8rem; margin:1rem 0 0; }
.m-prog .mono{ font-size:.55rem; white-space:nowrap; }
.m-prog .mini-track{ flex:1; height:6px; }
.m-prog b{ font-size:.75rem; color:var(--accent); }
.m-tabs{ display:flex; gap:.25rem; padding:.3rem; border:1px solid var(--line); border-radius:999px; width:fit-content; max-width:100%; margin-top:1.3rem; flex-wrap:wrap; background:var(--panel); }
.m-tabs button{ padding:.48rem 1rem; border-radius:999px; font-size:.78rem; color:var(--muted); transition:.3s var(--ease); }
.m-tabs button:hover{ color:var(--text); }
.m-tabs button.on{ background:linear-gradient(100deg,var(--accent),var(--accent-2)); color:var(--accent-ink); font-weight:600; }
.m-pane{ display:none; margin-top:1rem; }
.m-pane.on{ display:block; animation:fadeUp .5s var(--ease); }
.m-pane .inv-row{ animation:fadeUp .5s var(--ease) both; }
.m-pane .inv-row:nth-child(2){ animation-delay:.05s } .m-pane .inv-row:nth-child(3){ animation-delay:.1s }
.m-pane .inv-row:nth-child(4){ animation-delay:.15s } .m-pane .inv-row:nth-child(5){ animation-delay:.2s } .m-pane .inv-row:nth-child(n+6){ animation-delay:.25s }
.m-socials .m-soc{ width:42px; height:42px; border-radius:12px; }
.member.open .m-bio > *{ animation:fadeUp .65s var(--ease) both; }
.member.open .m-bio > :nth-child(2){ animation-delay:.08s } .member.open .m-bio > :nth-child(3){ animation-delay:.16s }
.member.open .m-bio > :nth-child(4){ animation-delay:.24s } .member.open .m-bio > :nth-child(5){ animation-delay:.32s }
.member.open .m-portrait{ animation:revealZoom .9s var(--ease) both .12s; }
.member.peek .member-row{ padding-left:1.1rem; }
.member.peek .member-row::before{ transform:scaleY(1); }
.member.peek .m-id b{ color:var(--accent); }
.ring-stat{ position:relative; width:150px; margin:.2rem auto 1.4rem; }
.ring-stat svg{ width:100%; transform:rotate(-90deg); overflow:visible; }
.rs-bg{ fill:none; stroke:var(--panel-2); stroke-width:7; }
.rs-fg{ fill:none; stroke:var(--accent); stroke-width:7; stroke-linecap:round; transition:stroke-dashoffset 1.8s var(--ease); filter:drop-shadow(0 0 6px var(--accent)); }
.rs-txt{ position:absolute; inset:0; display:grid; place-items:center; align-content:center; text-align:center; }
.rs-txt b{ font-family:var(--ff-display); font-size:2.1rem; font-weight:400; line-height:1; }
.rs-txt small{ font-family:var(--ff-mono); font-size:.52rem; letter-spacing:.15em; text-transform:uppercase; color:var(--muted); }

/* =============================================================== CONTACT */
.shuffle-hero{ min-height:92svh; display:flex; flex-direction:column; justify-content:center; padding-bottom:150px; }
.shuffle-hero .wrap{ position:relative; z-index:2; }
.shuffle-line .sl-a{ display:inline-block; }
.shuffle-slot{ display:inline-flex; align-items:center; position:relative; cursor:pointer; min-height:1.05em; }
.shuffle-slot .sw{ grid-area:auto; }
.shuffle-slot::after{
  content:''; position:absolute; left:.12em; right:.2em; bottom:.02em; height:.055em; border-radius:9px;
  background:linear-gradient(90deg,var(--accent),var(--accent-2),var(--accent-3)); transform-origin:left;
}
.shuffle-slot.flash::after{ animation:ulSweep 1s var(--ease); }
@keyframes ulSweep{ from{ transform:scaleX(0); } to{ transform:scaleX(1); } }
.sw .dud{ -webkit-text-fill-color:var(--muted); color:var(--muted); opacity:.75; font-style:normal; font-weight:300; }
.sw-caret{ display:inline-block; width:.05em; height:.78em; background:var(--accent-2); margin-left:.08em; animation:blink 1s steps(1) infinite; box-shadow:0 0 18px var(--accent-2); }
@keyframes blink{ 50%{ opacity:0; } }
.shuffle-dots{ display:flex; gap:.45rem; margin-top:1.8rem; flex-wrap:wrap; }
.shuffle-dots button{ width:22px; height:4px; border-radius:4px; background:var(--line-2); transition:width .5s var(--ease), background .4s; }
.shuffle-dots button.on{ width:52px; background:linear-gradient(90deg,var(--accent),var(--accent-2)); }
.shuffle-sub{ max-width:56ch; margin-top:1.5rem; color:var(--text-2); font-size:1.06rem; }
.shuffle-rail{ position:absolute; left:0; right:0; bottom:26px; overflow:hidden; z-index:1; }
.shuffle-rail .marquee-track{ animation-direction:reverse; animation-duration:46s; }
.shuffle-rail span{
  font-family:var(--ff-display); font-size:clamp(2.2rem,6vw,4.6rem); font-style:italic; font-weight:300; white-space:nowrap;
  color:transparent; -webkit-text-stroke:1px var(--line-2); display:flex; align-items:center; gap:2.6rem;
}
.shuffle-rail span::after{ content:'✦'; -webkit-text-stroke:0; color:var(--accent); font-size:.4em; font-style:normal; }

.collab-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }
.collab{ text-align:left; display:flex; flex-direction:column; align-items:flex-start; gap:.5rem; padding:1.6rem; border-radius:var(--radius-l); border:1px solid var(--line); background:var(--panel); min-height:260px; position:relative; overflow:hidden; }
.cl-ico{ width:50px; height:50px; border-radius:15px; display:grid; place-items:center; border:1px solid var(--line-2); color:var(--accent); background:var(--bg-2); transition:.5s var(--ease); }
.collab:hover .cl-ico{ background:var(--accent); color:var(--accent-ink); transform:rotate(-12deg) scale(1.1); }
.cl-n{ position:absolute; top:1.5rem; right:1.5rem; color:var(--muted); font-size:.62rem; }
.collab b{ font-family:var(--ff-display); font-size:1.35rem; font-weight:500; margin-top:auto; letter-spacing:-.02em; line-height:1.15; }
.collab small{ color:var(--muted); font-size:.84rem; line-height:1.5; }
.cl-go{ display:inline-flex; align-items:center; gap:.4rem; font-size:.8rem; color:var(--accent); margin-top:.4rem; }
.cl-go svg{ transition:transform .4s var(--ease); }
.collab:hover .cl-go svg{ transform:translateX(5px); }

.addr{ display:grid; grid-template-columns:1fr 1fr; gap:1.2rem; margin:1.8rem 0 1.2rem; }
.addr .mono{ margin-bottom:.5rem; font-size:.58rem; }
.addr address,.addr p{ font-style:normal; color:var(--text-2); font-size:.9rem; line-height:1.7; margin:0; }
.map-box{ gap:.6rem; }
.map-pin{ width:16px; height:16px; border-radius:50%; background:var(--accent); position:relative; z-index:2; animation:pinPulse 2s infinite; }
@keyframes pinPulse{ 0%{ box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 70%,transparent); } 70%{ box-shadow:0 0 0 24px transparent; } 100%{ box-shadow:0 0 0 0 transparent; } }
.pick{ display:flex; flex-wrap:wrap; gap:.4rem; }
.pick .chip{ font-size:.74rem; padding:.42rem .85rem; }
.contact-form .field input.err,.contact-form .field textarea.err{ border-color:var(--danger); box-shadow:0 0 0 3px color-mix(in srgb,var(--danger) 18%,transparent); }

/* ========================================================= PAPERS v2 */
.paper.fresh::before{
  content:'JUST POSTED'; position:absolute; top:12px; right:12px; z-index:6;
  font-family:var(--ff-mono); font-size:.5rem; letter-spacing:.14em; padding:.3rem .6rem; border-radius:999px;
  background:var(--accent-2); color:var(--accent-ink); font-weight:700; box-shadow:0 6px 20px -6px var(--accent-2);
}
.paper.flash,.proj.flash{ animation:flashIn 1.1s ease-in-out 3; }
.paper-grid .add-paper{ min-height:100%; min-height:420px; }
.sum{ position:relative; }
.sum-ico{ position:absolute; top:1.1rem; right:1.1rem; width:30px; height:30px; border-radius:9px; display:grid; place-items:center; color:var(--accent); background:var(--bg-2); border:1px solid var(--line); }
.all-head{ display:flex; align-items:center; gap:.8rem; flex-wrap:wrap; }

.sync-note{ border-radius:var(--radius); }
.sync-acts{ margin-left:auto; display:flex; gap:.4rem; flex-wrap:wrap; }
.sync-msg{ flex:1 1 260px; }

/* publication timeline */
.year-chart{ margin:-.4rem 0 clamp(26px,3vw,42px); padding:1.1rem 1.3rem .9rem; border-radius:var(--radius); border:1px solid var(--line); background:var(--panel); }
.yc-head{ display:flex; justify-content:space-between; margin-bottom:.8rem; }
.yc-head .mono{ font-size:.55rem; }
.yc-bars{ display:grid; grid-template-columns:repeat(var(--n),1fr); gap:clamp(4px,1vw,12px); height:130px; align-items:end; }
.yc-bar{ height:100%; display:flex; flex-direction:column; justify-content:flex-end; align-items:center; gap:.3rem; position:relative; }
.yc-bar i{
  width:100%; max-width:44px; border-radius:8px 8px 3px 3px; display:block;
  height:calc(var(--h) * 82%); min-height:3px;
  background:linear-gradient(180deg,var(--accent-2),color-mix(in srgb,var(--accent) 40%,transparent));
  transform:scaleY(0); transform-origin:bottom; transition:transform 1.1s var(--ease), filter .3s, box-shadow .3s;
  transition-delay:calc(var(--i) * 60ms);
}
.year-chart.in .yc-bar i{ transform:scaleY(1); }
.yc-bar:disabled i{ background:var(--panel-2); }
.yc-bar:not(:disabled):hover i{ filter:brightness(1.25); box-shadow:0 0 24px -4px var(--accent-2); }
.yc-bar.on i{ background:linear-gradient(180deg,#fff,var(--accent-2)); box-shadow:0 0 28px -2px var(--accent-2); }
.yc-n{ font-family:var(--ff-mono); font-size:.62rem; color:var(--text-2); opacity:0; transition:opacity .4s; transition-delay:calc(var(--i) * 60ms + .6s); }
.year-chart.in .yc-n{ opacity:1; }
.yc-y{ font-family:var(--ff-mono); font-size:.58rem; color:var(--muted); }
.yc-bar.on .yc-y{ color:var(--accent); }
.yc-bar:disabled{ cursor:default; }

/* ===================================================== PAPER COMPOSER */
.doi-bar{
  display:flex; align-items:center; gap:.6rem; padding:.4rem .4rem .4rem .9rem; margin-bottom:1rem; border-radius:14px;
  border:1px solid color-mix(in srgb,var(--accent) 38%,transparent);
  background:linear-gradient(100deg, color-mix(in srgb,var(--accent) 10%,transparent), transparent 70%);
  position:relative; overflow:hidden; transition:border-color .3s, box-shadow .3s;
}
.doi-bar:focus-within{ box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 15%,transparent); border-color:var(--accent); }
.doi-bar input{ flex:1; min-width:0; background:transparent; border:0; outline:none; font-family:var(--ff-mono); font-size:.8rem; padding:.55rem 0; }
.doi-bar input::placeholder{ color:var(--muted); font-family:var(--ff-body); font-size:.86rem; }
.doi-ico{ font-size:1.05rem; }
.doi-btn{ padding:.6rem 1.1rem; border-radius:10px; font-size:.8rem; font-weight:600; background:linear-gradient(100deg,var(--accent),var(--accent-2)); color:var(--accent-ink); transition:transform .3s var(--ease), opacity .3s; white-space:nowrap; }
.doi-btn:hover{ transform:translateY(-1px); }
.doi-btn:disabled{ opacity:.65; }
.doi-bar.busy::after{ content:''; position:absolute; left:0; bottom:0; height:2px; width:40%; background:linear-gradient(90deg,transparent,var(--accent-2),transparent); animation:doiScan 1s linear infinite; }
@keyframes doiScan{ from{ transform:translateX(-100%); } to{ transform:translateX(250%); } }
.doi-bar.ok{ border-color:var(--accent-2); box-shadow:0 0 0 3px color-mix(in srgb,var(--accent-2) 20%,transparent); }
.doi-bar.bad{ border-color:var(--danger); animation:shake .4s; }
@keyframes shake{ 25%{ translate:-6px 0; } 75%{ translate:6px 0; } }
.field input.filled,.comp-title.filled{ animation:filled .9s var(--ease); }
@keyframes filled{ 0%{ background:color-mix(in srgb,var(--accent) 28%,var(--bg-2)); } 100%{ background:var(--bg-2); } }
.comp-title.filled{ animation-name:filledT; }
@keyframes filledT{ 0%{ color:var(--accent); } 100%{ color:var(--text); } }
.auto-tag{ margin-left:.4rem; color:var(--accent-2); letter-spacing:.06em; text-transform:none; font-size:.62rem; }
#cats .chip{ font-size:.76rem; padding:.45rem .85rem; }
#cats .chip svg{ width:14px; height:14px; }
.chip.sug{ border-color:var(--accent-2); box-shadow:0 0 0 1px var(--accent-2) inset; }

/* composer dropzone — clearer affordance */
.dropzone{ border-color:color-mix(in srgb,var(--accent) 38%,transparent); background:color-mix(in srgb,var(--accent) 3%,transparent); }

/* ====================================================== LATEST RAIL */
.latest-head{ display:flex; justify-content:space-between; align-items:flex-end; gap:1.2rem; flex-wrap:wrap; }
.latest-ctl{ display:flex; gap:.5rem; align-items:center; }
.rail-btn{ width:46px; height:46px; border-radius:50%; border:1px solid var(--line-2); display:grid; place-items:center; background:var(--panel); transition:background .3s, color .3s, border-color .3s; }
.rail-btn:hover{ background:var(--accent); color:var(--accent-ink); border-color:transparent; }
.rail{ overflow-x:auto; overflow-y:visible; scroll-snap-type:x mandatory; scrollbar-width:none; padding:14px 0 30px; cursor:grab; }
.rail::-webkit-scrollbar{ display:none; }
.rail.dragging{ cursor:grabbing; scroll-snap-type:none; }
.rail.dragging *{ pointer-events:none; }
.rail-track{ display:flex; gap:20px; width:max-content; padding-inline:max(var(--pad), calc((100vw - var(--maxw)) / 2 + var(--pad))); }
.rail-track > *{ width:clamp(270px,26vw,330px); flex:none; scroll-snap-align:start; scroll-margin-left:max(var(--pad), calc((100vw - var(--maxw)) / 2 + var(--pad))); }
.rail-more{ min-height:auto; }
.rail-progress{ height:2px; background:var(--line); border-radius:2px; overflow:hidden; }
.rail-progress i{ display:block; height:100%; background:linear-gradient(90deg,var(--accent),var(--accent-2)); transform-origin:left; transform:scaleX(.08); transition:transform .3s; }

/* ========================================================== TEAM fixes */
.m-portrait .since{ bottom:auto; top:10px; }
.team-switch .n{ font-variant-numeric:tabular-nums; }

/* =============================================== CONSISTENCY: ACCENT BARS
   One style for every vertical hover/active bar on the site:
   3px, rounded, accent gradient, grows from its centre. No sliding.  */
.tl-item::before,.award::before,.member-row::before,.channel::before{
  content:''; position:absolute; left:0; top:20%; bottom:20%; width:3px; height:auto; border-radius:3px;
  background:linear-gradient(var(--accent),var(--accent-2)); transform:scaleY(0); transform-origin:center;
  transition:transform .45s var(--ease); pointer-events:none;
}
.tl-item:hover::before,.award:hover::before,.member-row:hover::before,.member.open .member-row::before,
.member.peek .member-row::before,.channel:hover::before{ transform:scaleY(1); }
.tl-item,.award{ transition:padding-left .45s var(--ease); }
.tl-item:hover,.award:hover{ padding-left:22px; }
.award::after{ display:none; }
.menu-item.active::before{ top:20%; bottom:20%; height:auto; width:3px; left:.3rem; transform:none; }
/* horizontal underline bars: same 2px everywhere */
.stat::after,.social-card::after{ height:2px; border-radius:2px; }

/* =============================================== CONSISTENCY: PROGRESS BARS
   Two sizes only: small 6px (cards, lists) and large 10px (headline meters). */
:root{ --track:rgba(255,255,255,.07); }
.progress-line,.mini-track,.m-prog .mini-track{ height:6px; border-radius:999px; background:var(--track); overflow:hidden; }
.bp-track,.util-bar{ height:10px; border-radius:999px; background:var(--track); overflow:hidden; }
.progress-line i,.mini-track i,.bp-track i.done,.util-bar i{ border-radius:inherit; background:linear-gradient(90deg,var(--accent),var(--accent-2)); }
.bp-track i.ongo{ border-radius:inherit; }
.clock .progress-line{ margin-top:.75rem; }

/* ============================================================ SCROLL HINT */
.hero{ padding-bottom:90px; }
/* pinned to the viewport (not the hero), so it's always visible on arrival however tall the hero is;
   it fades out as soon as the visitor scrolls */
.scroll-hint{
  position:fixed; left:50%; right:auto; bottom:22px; translate:-50% 0; z-index:40;
  flex-direction:column; gap:.5rem; padding:.7rem .9rem .6rem; border-radius:999px;
  background:color-mix(in srgb,var(--bg) 55%,transparent); backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px);
  border:1px solid var(--line);
  letter-spacing:.3em; font-size:.56rem; color:var(--text-2);
  opacity:0; transition:opacity .6s var(--ease), translate .6s var(--ease), color .3s, border-color .3s;
}
body.entered .scroll-hint{ opacity:1; transition-delay:.9s; }
body.entered .scroll-hint.gone{ opacity:0; translate:-50% 14px; pointer-events:none; transition-delay:0s; }
.scroll-hint .bar{ display:none; }
.scroll-hint .mouse{ width:22px; height:34px; border-radius:13px; border:1.5px solid color-mix(in srgb,var(--text-2) 55%,transparent); position:relative; display:block; transition:border-color .3s; }
.scroll-hint .mouse i{ position:absolute; left:50%; top:7px; width:3px; height:8px; margin-left:-1.5px; border-radius:3px; background:var(--accent); animation:wheel 1.8s var(--ease) infinite; }
@keyframes wheel{ 0%{ transform:translateY(0); opacity:1; } 70%{ transform:translateY(12px); opacity:0; } 100%{ transform:translateY(0); opacity:0; } }
.scroll-hint:hover{ color:var(--accent); }
.scroll-hint:hover .mouse{ border-color:var(--accent); }
.scroll-hint.gone{ opacity:0; translate:-50% 14px; pointer-events:none; }

/* ============================================================ PRELOADER LOG */
.pl-log{ position:absolute; left:var(--pad); bottom:40px; list-style:none; margin:0; padding:0; display:grid; gap:.4rem;
  font-family:var(--ff-mono); font-size:.62rem; letter-spacing:.08em; color:var(--muted); }
.pl-log li{ animation:fadeUp .5s var(--ease) both; }
.pl-log li:last-child{ color:var(--accent); }
.preloader.full .pl-count b{ color:var(--accent); transition:color .3s; }
.preloader.full .pl-logo .pcbl-mark{ animation:pmPulse .65s ease-in-out; }

/* ======================================================== COLLABORATORS */
.collab-hero{ position:relative; min-height:100svh; display:flex; align-items:center; padding:calc(var(--nav-h) + 40px) 0 70px; overflow:clip; }
.collab-hero::after{ content:''; position:absolute; width:60vw; height:60vw; right:-18vw; top:-12vw; border-radius:50%; pointer-events:none;
  background:radial-gradient(circle,color-mix(in srgb,var(--accent) 15%,transparent),transparent 65%); filter:blur(60px); animation:drift 24s ease-in-out infinite alternate; }
.collab-hero-grid{ display:grid; grid-template-columns:1.05fr .95fr; gap:clamp(30px,5vw,70px); align-items:center; position:relative; z-index:2; width:100%; }
.ch-title{ font-size:clamp(2.4rem,5.4vw,4.7rem); }
.ch-tagline{ font-size:clamp(1.2rem,2vw,1.65rem); color:var(--text); margin:1.5rem 0 .4rem; line-height:1.3; }

.ch-right{ display:grid; place-items:center; gap:1.2rem; }
.orbit{ position:relative; width:min(100%,540px); aspect-ratio:1; }
.orbit-core{ position:absolute; inset:37%; display:grid; place-items:center; }
.orbit-core #orbit-mark{ width:100%; height:100%; display:block; position:relative; z-index:2; filter:drop-shadow(0 0 32px color-mix(in srgb,var(--accent) 55%,transparent)); }
.orbit-pulse{ position:absolute; inset:-12%; border-radius:50%; border:1px solid var(--accent); opacity:0; animation:orbPulse 3.4s ease-out infinite; }
.orbit-pulse.p2{ animation-delay:1.7s; }
@keyframes orbPulse{ 0%{ transform:scale(.7); opacity:.75; } 100%{ transform:scale(2); opacity:0; } }
.orbit-ring{ position:absolute; border-radius:50%; border:1px dashed var(--line-2); animation:spin var(--dur) linear infinite; }
.or1{ inset:21%; } .or2{ inset:9%; animation-direction:reverse; } .or3{ inset:-2%; }
.orbit-chip-logo{ position:absolute; inset:0; transform:rotate(var(--a)); pointer-events:none; }
.ocl-in{
  position:absolute; top:0; left:50%; translate:-50% -50%; rotate:calc(var(--a) * -1);
  width:clamp(82px,8.4vw,116px); padding:.5rem .65rem; border-radius:14px; background:#fff; display:block; pointer-events:auto;
  box-shadow:0 14px 34px -14px rgba(0,0,0,.7); animation:spin var(--dur) linear infinite reverse;
  transition:opacity .6s var(--ease), filter .6s var(--ease), scale .6s var(--ease), box-shadow .6s var(--ease);
}
.or2 .ocl-in{ animation-direction:normal; }
.ocl-in img,.ocl-in svg{ display:block; width:100%; height:auto; aspect-ratio:3/1; object-fit:contain; }
.orbit:hover .orbit-ring,.orbit:hover .ocl-in{ animation-play-state:paused; }
.ocl-in:hover{ scale:1.15; box-shadow:0 0 0 2px var(--accent), 0 18px 40px -12px var(--accent); }
.orbit.focus .orbit-chip-logo:not(.hit) .ocl-in{ opacity:.16; filter:grayscale(1) blur(1.5px); scale:.82; }
.orbit.focus .orbit-chip-logo.hit .ocl-in{ scale:1.14; box-shadow:0 0 0 2px var(--accent-2), 0 0 44px -4px var(--accent-2); }
.orbit-caption{ font-size:.6rem; color:var(--muted); letter-spacing:.2em; text-transform:uppercase; }

.stats-grid.stats-4{ grid-template-columns:repeat(4,1fr); }

/* logo river (collaborators page + landing page) */
.river{ display:grid; gap:14px; padding:clamp(28px,4vw,50px) 0; overflow:hidden; position:relative; z-index:2;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent); mask-image:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent); }
.river-row{ overflow:hidden; padding:6px 0; }
.river-track{ display:flex; gap:14px; width:max-content; animation:scrollx 64s linear infinite; }
.river-row.rev .river-track{ animation-direction:reverse; animation-duration:74s; }
.river:hover .river-track{ animation-play-state:paused; }
.river-logo{ width:196px; height:86px; flex:none; display:grid; place-items:center; padding:16px 24px; border-radius:18px; border:1px solid var(--line); background:var(--panel);
  transition:background .4s, border-color .4s, transform .45s var(--ease), box-shadow .4s; }
.river-logo img,.river-logo svg{ width:100%; height:100%; object-fit:contain; filter:grayscale(1) brightness(0) invert(1); opacity:.55; transition:filter .45s, opacity .45s; }
.river-logo:hover{ background:#fff; border-color:transparent; transform:translateY(-5px) scale(1.04); box-shadow:0 18px 40px -18px var(--accent); }
.river-logo:hover img,.river-logo:hover svg{ filter:none; opacity:1; }

/* flip cards */
.partner-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:16px; }
.pcard{ perspective:1200px; height:280px; outline:none; cursor:pointer; position:relative; }
.pcard-in{ position:relative; width:100%; height:100%; transform-style:preserve-3d; transition:transform .9s var(--ease); }
@media (hover:hover){ .pcard:hover .pcard-in{ transform:rotateY(180deg); } }
.pcard.flipped .pcard-in,.pcard:focus-visible .pcard-in{ transform:rotateY(180deg); }
.pcard-face{ position:absolute; inset:0; backface-visibility:hidden; -webkit-backface-visibility:hidden; border-radius:var(--radius-l); border:1px solid var(--line); background:var(--panel); padding:1.3rem; display:flex; flex-direction:column; transition:border-color .5s, box-shadow .5s; }
.pcard-face.front{ align-items:center; justify-content:center; text-align:center; gap:.35rem; }
.pcard-face.back{ transform:rotateY(180deg); justify-content:space-between; align-items:flex-start;
  background:linear-gradient(155deg, color-mix(in srgb,var(--accent) 18%,var(--bg-2)), var(--bg-2) 70%); border-color:var(--line-2); }
.pc-type{ font-family:var(--ff-mono); font-size:.52rem; letter-spacing:.15em; text-transform:uppercase; color:var(--accent); padding:.3rem .65rem; border-radius:999px; border:1px solid var(--line-2); }
.front .pc-type{ position:absolute; top:1rem; left:1rem; }
.pc-logo{ width:80%; height:92px; display:grid; place-items:center; margin:.8rem 0 .7rem; padding:.9rem 1.1rem; border-radius:16px; background:#fff; box-shadow:0 12px 30px -18px rgba(0,0,0,.6); transition:transform .5s var(--ease); }
.pc-logo img,.pc-logo svg{ width:100%; height:100%; object-fit:contain; }
.pcard:hover .pc-logo{ transform:scale(1.04); }
.front b{ font-family:var(--ff-display); font-size:1.15rem; font-weight:500; letter-spacing:-.02em; }
.front small{ color:var(--muted); font-size:.78rem; }
.pc-flip{ position:absolute; bottom:1rem; right:1rem; display:inline-flex; align-items:center; gap:.3rem; font-family:var(--ff-mono); font-size:.52rem; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); }
.back p{ font-family:var(--ff-display); font-size:1.12rem; line-height:1.4; color:var(--text); margin:0; }
.pcard.glow .front{ border-color:var(--accent-2); box-shadow:0 0 0 1px var(--accent-2), 0 0 44px -14px var(--accent-2); }
.pcard.flash .pcard-face{ animation:flashIn 1.1s ease-in-out 3; }

/* landing-page collaborators block */
.ph-head{ text-align:center; }
.ph-head .eyebrow,.ph-head .shuffle-dots{ justify-content:center; }
.ph-line{ font-size:clamp(2.1rem,5.4vw,4.2rem); }
.ph-foot{ display:flex; justify-content:center; }
.partners-home .ch-tagline{ margin:1.1rem 0 0; }

@media (max-width:1080px){
  .collab-hero-grid{ grid-template-columns:1fr; }
  .ch-right{ order:-1; }
  .orbit{ width:min(92%,440px); }
  .stats-grid.stats-4{ grid-template-columns:repeat(2,1fr); }
  .stats-4 .stat:nth-child(4){ border-left:1px solid var(--line); }
}
@media (max-width:760px){
  .orbit{ width:min(70%,300px) !important; }
  .pl-log{ display:none; }
  .river-logo{ width:150px; height:68px; padding:12px 18px; }
}

/* ================================================= AWARDS: hover photo
   Row fills edge-to-edge with lime; the award photo follows the cursor. */
.award{ isolation:isolate; }
.award .yr,.award .ttl,.award .org{ transition:color .3s var(--ease); position:relative; }
.aw-fill{
  position:absolute; top:0; bottom:0; left:50%; width:100vw; margin-left:-50vw; z-index:-1; pointer-events:none;
  background:var(--accent-2); transform:scaleY(0); transform-origin:bottom; transition:transform .45s var(--ease);
}
.aw-thumb{ display:none; }
@media (hover:hover){
  .award:hover .aw-fill{ transform:scaleY(1); transform-origin:top; }
  .award:hover .yr,.award:hover .ttl,.award:hover .org{ color:var(--accent-ink); }
  .award:hover::before{ transform:scaleY(0); }
}

.award-float{
  position:fixed; left:0; top:0; z-index:800; width:clamp(220px,19vw,300px); aspect-ratio:4/5; pointer-events:none;
  will-change:transform; opacity:0; scale:.55; transition:opacity .35s var(--ease), scale .55s var(--ease);
}
.award-float.on{ opacity:1; scale:1; }
.af-img{
  position:absolute; inset:0; margin:0; border-radius:18px; overflow:hidden; opacity:0;
  box-shadow:0 34px 70px -24px rgba(0,0,0,.75), 0 0 0 1px rgba(255,255,255,.1);
  clip-path:inset(100% 0 0 0 round 18px);
}
.af-img.in{ animation:afIn .62s var(--ease) forwards; }
.af-img img,.af-img svg{ display:block; width:100%; height:100%; object-fit:cover; scale:1.18; transform:translateX(var(--px,0px)); }
.af-img.in img,.af-img.in svg{ animation:afZoom .9s var(--ease) both; }
@keyframes afIn{ from{ opacity:1; clip-path:inset(100% 0 0 0 round 18px); } to{ opacity:1; clip-path:inset(0 0 0 0 round 18px); } }
@keyframes afZoom{ from{ scale:1.45; } to{ scale:1.18; } }
/* cursor hides its hexagon while the award photo is showing (see fx.css) */

/* touch screens: no hover, so show a small photo in each row instead */
@media (hover:none){
  .aw-thumb{ display:block; width:56px; aspect-ratio:4/5; border-radius:10px; overflow:hidden; border:1px solid var(--line-2); align-self:center; }
  .aw-thumb img,.aw-thumb svg{ width:100%; height:100%; object-fit:cover; }
  .award{ grid-template-columns:96px 1fr auto 56px; }
}
@media (hover:none) and (max-width:760px){
  .award{ grid-template-columns:70px 1fr 56px; }
  .aw-thumb{ grid-column:3; grid-row:1 / span 2; }
}

/* ======================================================= COLLABORATORS FIXES */
/* rings are full-size layers stacked on top of each other — they must never catch the pointer,
   otherwise the outer ring hides every chip on the inner rings from hover */
.orbit-ring{ pointer-events:none; }
.orbit-chip-logo:hover{ z-index:5; }
/* hovering a dimmed chip brings it back to full strength */
.orbit.focus .orbit-chip-logo .ocl-in:hover,
.orbit .orbit-chip-logo .ocl-in:hover{
  opacity:1; filter:none; scale:1.15;
  box-shadow:0 0 0 2px var(--accent), 0 18px 40px -12px var(--accent);
}
/* partner name under a chip on hover (replaces the cursor label that collided with the caption) */
.ocl-name{
  position:absolute; left:50%; top:calc(100% + 8px); translate:-50% 4px; white-space:nowrap; pointer-events:none;
  font-family:var(--ff-mono); font-size:.52rem; letter-spacing:.12em; text-transform:uppercase;
  padding:.32rem .6rem; border-radius:7px; background:var(--bg-3); color:var(--text); border:1px solid var(--line-2);
  opacity:0; transition:opacity .25s var(--ease), translate .25s var(--ease);
}
.ocl-in:hover .ocl-name{ opacity:1; translate:-50% 0; }
/* one shared rotation for all rings + fixed radii/angles → chips never slide over each other.
   Chip size is a share of the orbit's width, so the whole layout scales proportionally. */
.orbit{ container-type:inline-size; }
.orbit-ring{ animation-direction:normal; }
.or1{ inset:28%; } .or2{ inset:-2%; } .or3{ inset:13%; opacity:.6; }
.ocl-in,.or2 .ocl-in{ width:22.8cqw; padding:1.9cqw 2.3cqw; border-radius:3cqw; animation-direction:reverse; }
/* caption cross-fades between counts */
.orbit-caption{ transition:opacity .22s var(--ease), filter .22s var(--ease), translate .22s var(--ease); min-height:1.2em; margin-top:clamp(34px,4.5vw,64px); }  /* clears the outer ring's chips */
.orbit-caption.swap{ opacity:0; filter:blur(4px); translate:0 4px; }

/* logo river: clip sideways only, so a hovered tile's lift + glow is never cut off */
.river-row{ overflow-x:clip; overflow-y:visible; padding:10px 0; }
.river-logo:hover{ box-shadow:0 0 0 1px rgba(255,255,255,.55), 0 16px 36px -14px rgba(110,231,168,.6); }
[data-theme="light"] .river-logo:hover{ box-shadow:0 0 0 1px var(--line), 0 16px 34px -14px rgba(10,132,83,.4); }

/* the PCBL mark where "Your logo here" used to be */
.cta-mark{ display:block; width:clamp(56px,6vw,74px); aspect-ratio:1; margin:0 auto 1.3rem; filter:drop-shadow(0 0 26px rgba(110,231,168,.45)); }
.cta-mark .pcbl-mark .pm-ring{ animation:spin 26s linear infinite; }

/* ========================================== ITALIC GRADIENT TEXT — NO CLIPPING
   background-clip:text only paints inside the element's box, so italic descenders
   (g, y, p) and the italic overhang need extra room; split-text word masks too.   */
.grad-text{ padding:0 .08em .16em 0; -webkit-box-decoration-break:clone; box-decoration-break:clone; }
[data-split] .sw-w{ padding:0 .14em .3em 0; margin:0 -.14em -.3em 0; }
[data-split] .sw-w > .grad-text.sc{ padding:0 .12em .2em 0; margin:0 -.12em -.2em 0; }
.shuffle-slot .sw{ padding:0 .06em .16em 0; margin-bottom:-.16em; }

/* ============================================================ RESPONSIVE */
@media (max-width:1080px){
  .explore-grid,.collab-grid{ grid-template-columns:repeat(2,1fr); }
  .fund-hero{ grid-template-columns:1fr; }
  .fund-thumb{ max-width:520px; }
}
@media (max-width:760px){
  .yc-bars{ height:100px; }
  .rail-track > *{ width:78vw; }
  .latest-ctl .rail-btn{ display:none; }
  .summary-row{ grid-template-columns:repeat(2,1fr); }
  .toolbar-r,.toolbar-r .search{ width:100%; }
  .sort-sel{ width:100%; }
  .book{ grid-template-columns:100px 1fr; }
  .b3d{ width:84px; margin-left:6px; }
  .addr{ grid-template-columns:1fr; }
  .mc-val span{ font-size:clamp(1.9rem,9vw,2.6rem); }
}
@media (max-width:560px){
  .cred-bar{ width:100%; }
  .cred-tab{ flex:1; justify-content:center; padding:.65rem .5rem; font-size:.82rem; }
  .cred-tab .n{ display:none; }
  .explore-grid,.collab-grid{ grid-template-columns:1fr; }
  .ex-card,.collab{ min-height:210px; }
}

/* ============================================================== ROUND 7 FIXES */

/* text caret cursor over inputs (the "clickable" state used to wipe its size + colour) */
.cursor-ring.hot.text,.cursor-ring.text{
  width:3px; height:30px; margin:-15px 0 0 -1.5px; border-radius:3px;
  background:#bef264; box-shadow:0 0 12px rgba(190,242,100,.7); animation:caretBlink 1.05s steps(1) infinite;
}
.cursor-ring.text .cr-hex{ opacity:0; }
.cursor.text{ visibility:hidden; }
@keyframes caretBlink{ 50%{ opacity:.25; } }
[data-theme="light"] .cursor-ring.hot.text,[data-theme="light"] .cursor-ring.text{ background:var(--accent); box-shadow:0 0 10px rgba(10,132,83,.45); }

/* finished reveals drop their animation → no permanent filter layers (fixes ghosted fragments) */
[data-reveal].in.rv-done{ animation:none; opacity:1; }

/* composer + forms are solid, so the animated background never shows through as stray lines */
.composer,.contact-form{ background:#0c1712; }
.composer .comp-foot{ background:#0e1b15; }
[data-theme="light"] .composer,[data-theme="light"] .contact-form{ background:#fff; }
[data-theme="light"] .composer .comp-foot{ background:#f7f8f3; }

/* awards hover — a glass band with gradient hairlines + gradient title (replaces the flat lime fill) */
.aw-fill{
  background:linear-gradient(90deg, transparent, color-mix(in srgb,var(--accent) 9%,transparent) 18%, color-mix(in srgb,var(--accent) 14%,transparent) 50%, color-mix(in srgb,var(--accent) 9%,transparent) 82%, transparent);
  transform:scaleX(0); transform-origin:center; transition:transform .65s var(--ease);
}
.aw-fill::before,.aw-fill::after{
  content:''; position:absolute; left:0; right:0; height:1px;
  background:linear-gradient(90deg, transparent, var(--accent) 30%, var(--accent-2) 70%, transparent);
}
.aw-fill::before{ top:0; } .aw-fill::after{ bottom:0; }
.award .ttl{ transition:translate .5s var(--ease); }
.award .yr{ transition:color .3s, background .3s, box-shadow .3s; border-radius:999px; padding:.18rem .55rem; margin-left:-.55rem; width:fit-content; }
@media (hover:hover){
  .award:hover .aw-fill{ transform:scaleX(1); transform-origin:center; }
  .award:hover .ttl{
    color:transparent; translate:10px 0;
    background:linear-gradient(100deg,var(--accent),var(--accent-2)); -webkit-background-clip:text; background-clip:text;
  }
  .award:hover .yr{ color:var(--accent-ink); background:var(--accent-2); box-shadow:0 0 16px -2px color-mix(in srgb,var(--accent-2) 70%,transparent); }
  .award:hover .org{ color:var(--text); }
  .award:hover::before{ transform:scaleY(0); }
}

/* socials — balanced grid (column count is set from the number of profiles) */
.social-grid{ grid-template-columns:repeat(var(--cols,3), minmax(0,1fr)); }
@media (max-width:1080px){ .social-grid{ grid-template-columns:repeat(2, minmax(0,1fr)); } }
@media (max-width:560px){ .social-grid{ grid-template-columns:1fr; } }

/* rotating words: one line only (the slot font is auto-fitted in JS), so decoding never reflows the page */
.shuffle-slot,.shuffle-slot .sw{ white-space:nowrap; }
@media (min-width:1081px){ .collab-hero-grid{ grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr); } }   /* desktop only — phones stay single-column */
.ch-left{ min-width:0; }
.ph-line .shuffle-slot{ display:flex; width:fit-content; margin-inline:auto; }   /* own line → heading height never changes */

/* outline "stroke" words (BOOKS / PAPERS … behind page titles, footer PCBL, contact rail) —
   a touch bolder with a very slight glow */
.page-head .big-bg{
  -webkit-text-stroke:1.6px rgba(167,243,208,.2);
  filter:drop-shadow(0 0 6px rgba(110,231,168,.16));
}
.foot-big span{ -webkit-text-stroke-width:1.6px; filter:drop-shadow(0 0 6px rgba(110,231,168,.14)); }
.shuffle-rail span{ -webkit-text-stroke:1.6px rgba(167,243,208,.26); filter:drop-shadow(0 0 6px rgba(110,231,168,.14)); }
[data-theme="light"] .page-head .big-bg{ -webkit-text-stroke:1.6px rgba(12,52,36,.16); filter:drop-shadow(0 0 5px rgba(10,132,83,.12)); }
[data-theme="light"] .shuffle-rail span{ -webkit-text-stroke-color:rgba(12,52,36,.22); filter:drop-shadow(0 0 5px rgba(10,132,83,.12)); }

/* scramble glyphs in narrow mono, so a decoding word is never wider than the finished word */
.sw .dud{ font-family:var(--ff-mono); font-size:.62em; font-style:normal; letter-spacing:0; vertical-align:.12em; }

/* no decorative blinking bar after the rotating words — the only caret on the site is the real text cursor over inputs */
.sw-caret{ display:none; }

/* ============================================================ LIVE CONTENT */
/* Google Maps embed set from the admin console */
.map-box.has-map{ padding:0; overflow:hidden; border-style:solid; display:block; }
.map-box.has-map::after{ display:none; }
.map-box.has-map iframe{ width:100%; height:100%; min-height:260px; border:0; display:block; filter:saturate(.85); }
[data-theme="dark"] .map-box.has-map iframe{ filter:invert(.9) hue-rotate(180deg) saturate(.6) brightness(.95); }

/* ==================================================================== EVENTS
   Landing page: a stack of flashcards that deals itself every 5–7 s.
   Event page: photo hero, the story, facts, photos, more events.          */
.events-home{ overflow:clip; }
.ev-layout{ display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr); gap:clamp(36px,6vw,96px); align-items:center; }
.ev-left .section-head{ margin-bottom:clamp(22px,3vw,36px); }
.ev-info{ min-height:12.5rem; }
.ev-count{ display:flex; align-items:center; gap:.55rem; font-family:var(--ff-mono); font-size:.62rem; letter-spacing:.18em; text-transform:uppercase; color:var(--muted); }
.ev-count b{ font-family:var(--ff-display); font-weight:400; font-size:1.9rem; letter-spacing:0; line-height:1; color:var(--accent); }
.ev-count i{ flex:0 0 34px; height:1px; background:var(--line-2); margin-inline:.35rem; }
.ev-info h3{ font-size:clamp(1.45rem,2.5vw,2.1rem); line-height:1.12; margin:.85rem 0 .9rem; max-width:26ch; text-wrap:balance; }
.ev-meta{ display:flex; flex-wrap:wrap; gap:.5rem 1.3rem; font-size:.86rem; color:var(--text-2); }
.ev-meta span{ display:inline-flex; align-items:center; gap:.45rem; }
.ev-meta svg{ color:var(--accent); flex:none; }
.ev-sum{ color:var(--muted); margin-top:1rem; max-width:50ch; line-height:1.65; }
.ev-ctl{ display:flex; align-items:center; gap:.7rem; margin-top:1.8rem; flex-wrap:wrap; }
.ev-ctl .btn{ margin-right:.4rem; }
.ev-progress{ display:flex; align-items:center; gap:1.2rem; margin-top:1.8rem; }
.ev-progress[hidden]{ display:none; }
.ev-timer{ flex:1; max-width:260px; height:2px; border-radius:2px; background:var(--line); overflow:hidden; }
.ev-timer i{ display:block; height:100%; background:linear-gradient(90deg,var(--accent),var(--accent-2)); transform-origin:left; transform:scaleX(0); transition:opacity .3s; }
.ev-timer i.paused{ opacity:.4; }
.ev-dots{ display:flex; gap:.4rem; }
.ev-dots button{ width:7px; height:7px; padding:0; border:0; border-radius:4px; background:var(--line-2); cursor:pointer; transition:width .4s var(--ease), background .3s; }
.ev-dots button:hover{ background:var(--text-2); }
.ev-dots button.on{ width:24px; background:var(--accent); }

/* the deck */
.ev-right{ display:grid; place-items:center; }
.ev-deck{ position:relative; width:min(100%,380px); aspect-ratio:4/5; outline:none; }
.ev-deck::before{
  content:''; position:absolute; inset:14% -10% -8%; border-radius:50%; z-index:0; pointer-events:none;
  background:radial-gradient(closest-side, color-mix(in srgb,var(--accent) 24%,transparent), transparent); filter:blur(34px);
}
.ev-card{
  position:absolute; inset:0; display:block; border-radius:var(--radius-l); overflow:hidden; isolation:isolate;
  border:1px solid var(--line-2); background:var(--bg-2); box-shadow:var(--shadow); color:#e9f5ee;
  transform:translate3d(var(--x,0),var(--y,0),0) rotate(var(--r,0deg)) scale(var(--s,1));
  opacity:var(--o,1); filter:brightness(var(--b,1)); z-index:var(--z,1);
  transition:transform .75s var(--ease), opacity .55s var(--ease), filter .6s;
}
.ev-card[data-pos="0"]{ --z:10; }
.ev-card[data-pos="0"]:hover{ --s:1.015; --y:-4px; }
.ev-card[data-pos="1"]{ --x:7%;  --y:4%; --r:5deg;  --s:.94; --b:.6;  --z:9; cursor:pointer; }
.ev-card[data-pos="2"]{ --x:-6%; --y:7%; --r:-6deg; --s:.88; --b:.4;  --z:8; cursor:pointer; }
.ev-card[data-pos="hide"]{ --y:9%; --s:.82; --o:0; --z:1; pointer-events:none; }
.ev-card[data-pos="out"]{ --x:-125%; --y:-3%; --r:-18deg; --o:0; --z:11; pointer-events:none; }
.ev-card.snap{ transition:none !important; }
.ev-card:focus-visible{ outline:2px solid var(--accent); outline-offset:4px; }

.ev-img,.ev-img img,.ev-img svg{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block; }
.ev-img{ z-index:-2; overflow:hidden; }
.ev-img img,.ev-img svg{ transition:transform 1.1s var(--ease); }
.ev-card:hover .ev-img img,.ev-card:hover .ev-img svg,.ev-mini:hover .ev-img img,.ev-mini:hover .ev-img svg{ transform:scale(1.045); }
.ev-shade{
  position:absolute; inset:0; z-index:-1; pointer-events:none;
  background:linear-gradient(to top, rgba(3,12,8,.95) 0%, rgba(3,12,8,.6) 30%, transparent 58%),
             linear-gradient(to bottom, rgba(3,12,8,.55), transparent 24%);
}
/* tear-off calendar date */
.ev-date{
  position:absolute; top:16px; left:16px; display:grid; justify-items:center; min-width:58px; padding:.55rem .6rem .45rem; border-radius:14px;
  background:rgba(4,19,12,.62); backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px); border:1px solid rgba(167,243,208,.28);
}
.ev-date::before{ content:''; position:absolute; top:-1px; left:12px; right:12px; height:3px; border-radius:0 0 3px 3px; background:linear-gradient(90deg,#6ee7a8,#bef264); }
.ev-date b{ font-family:var(--ff-display); font-weight:400; font-size:1.7rem; line-height:1; }
.ev-date small{ font-family:var(--ff-mono); font-size:.5rem; letter-spacing:.16em; text-transform:uppercase; color:#b7cdc0; margin-top:.25rem; }
.ev-role{
  position:absolute; top:19px; right:16px; max-width:56%; padding:.42rem .72rem; border-radius:999px;
  font-family:var(--ff-mono); font-size:.52rem; font-weight:600; letter-spacing:.14em; text-transform:uppercase;
  background:linear-gradient(100deg,#6ee7a8,#bef264); color:#04130c; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.ev-cap{ position:absolute; left:20px; right:20px; bottom:20px; display:grid; gap:.55rem; }
.ev-cap small{ display:flex; align-items:center; gap:.35rem; font-family:var(--ff-mono); font-size:.55rem; letter-spacing:.14em; text-transform:uppercase; color:#b7cdc0; }
.ev-cap small svg{ color:#6ee7a8; flex:none; }
.ev-cap b{ font-family:var(--ff-display); font-weight:400; font-size:1.3rem; line-height:1.16; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
/* scanning sheen on the top card, like the portrait */
.ev-scan{ position:absolute; inset:0; z-index:0; pointer-events:none; overflow:hidden; border-radius:inherit; }
.ev-card[data-pos="0"] .ev-scan::after{
  content:''; position:absolute; left:0; right:0; height:30%; top:-30%;
  background:linear-gradient(transparent, rgba(110,231,168,.16), transparent); mix-blend-mode:screen;
  animation:scan 5.5s cubic-bezier(.65,0,.35,1) infinite;
}

/* small cards — "more events" on the event page */
.ev-more,.ev-grid{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:clamp(14px,2vw,22px); }
/* events page: one block per year */
.ev-wall{ margin-top:clamp(26px,3.5vw,44px); }
.ev-year{ margin-top:clamp(34px,5vw,64px); }
.ev-year-head{ display:flex; align-items:center; gap:1.1rem; margin-bottom:clamp(16px,2vw,24px); }
.ev-year-head b{ font-family:var(--ff-display); font-weight:300; font-size:clamp(2.4rem,5vw,3.6rem); line-height:1; letter-spacing:-.03em;
  background:linear-gradient(100deg,var(--accent),var(--accent-2)); -webkit-background-clip:text; background-clip:text; color:transparent; }
.ev-year-head span{ font-family:var(--ff-mono); font-size:.6rem; letter-spacing:.16em; text-transform:uppercase; color:var(--muted); white-space:nowrap; }
.ev-year-head i{ flex:1; height:1px; background:linear-gradient(90deg,var(--line-2),transparent); }
.ev-mini{ position:relative; display:block; aspect-ratio:4/5; border-radius:var(--radius); overflow:hidden; isolation:isolate; border:1px solid var(--line-2); box-shadow:var(--shadow); color:#e9f5ee; }
.ev-mini .ev-role{ top:14px; right:14px; }
.ev-mini .ev-cap{ left:16px; right:16px; bottom:16px; }
.ev-mini .ev-cap b{ font-size:1.06rem; }

/* event page */
.ev-page-hero{ display:grid; grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr); gap:clamp(28px,5vw,80px); align-items:center; }
.ev-page-hero h1{ font-size:clamp(2rem,4.6vw,3.8rem); line-height:1.03; text-wrap:balance; }
.ev-chips{ display:flex; flex-wrap:wrap; gap:.55rem; margin-top:1.5rem; }
.ev-chips .tag{ display:inline-flex; align-items:center; gap:.45rem; font-size:.58rem; padding:.45rem .8rem; }
.ev-chips .tag svg{ color:var(--accent); }
.ev-photo{ position:relative; width:100%; max-width:430px; justify-self:end; aspect-ratio:4/5; border-radius:var(--radius-l); overflow:hidden; border:1px solid var(--line-2); box-shadow:var(--shadow); }
.ev-photo img,.ev-photo svg{ width:100%; height:100%; object-fit:cover; display:block; }
.ev-body{ display:grid; grid-template-columns:minmax(0,1fr) 320px; gap:clamp(22px,4vw,56px); align-items:start; }
.ev-sec-title{ font-size:clamp(1.5rem,3vw,2.2rem); margin-bottom:1.3rem; }
.ev-prose p{ color:var(--text-2); font-size:1.05rem; line-height:1.8; margin:0 0 1.15rem; max-width:66ch; }
.ev-prose p:last-child{ margin-bottom:0; }
.ev-prose p:first-child::first-letter{ float:left; font-family:var(--ff-display); font-size:3.4em; line-height:.86; padding:.06em .12em 0 0; color:var(--accent); }
.ev-prose a{ color:var(--accent); text-decoration:underline; text-underline-offset:3px; }
.ev-facts{ position:sticky; top:calc(var(--nav-h) + 20px); display:grid; gap:1.4rem; }
.ev-facts .btn{ justify-self:start; }
.ev-gallery-wrap{ margin-top:clamp(36px,5vw,64px); }
.ev-gallery{ display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:14px; }
.ev-gallery figure{ margin:0; border-radius:var(--radius); overflow:hidden; border:1px solid var(--line); background:var(--panel); }
.ev-gallery img,.ev-gallery svg{ width:100%; aspect-ratio:4/3; object-fit:cover; display:block; }
.ev-gallery figcaption{ padding:.7rem .9rem; font-size:.82rem; color:var(--muted); }
.ev-pager{ display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:clamp(28px,4vw,48px); }
.ev-pager:empty{ display:none; }
.ev-pager a{ display:grid; gap:.45rem; padding:1.1rem 1.3rem; border-radius:var(--radius); border:1px solid var(--line); background:var(--panel); transition:border-color .3s, transform .3s var(--ease); }
.ev-pager a:hover{ border-color:var(--accent); transform:translateY(-2px); }
.ev-pager a.nx{ text-align:right; justify-items:end; }
.ev-pager small{ display:inline-flex; align-items:center; gap:.45rem; font-family:var(--ff-mono); font-size:.56rem; letter-spacing:.16em; text-transform:uppercase; color:var(--muted); }
.ev-pager b{ font-family:var(--ff-display); font-weight:400; font-size:1.05rem; line-height:1.25; }

@media (max-width:960px){
  /* phones & tablets: heading → deck → details */
  .ev-layout{ grid-template-columns:1fr; row-gap:1.6rem; }
  .ev-left{ display:contents; }
  .ev-left .section-head{ order:0; margin-bottom:0; }
  .ev-right{ order:1; padding-block:.4rem 1rem; }
  .ev-info-wrap{ order:2; }
  .ev-ctl{ order:3; margin-top:0; }
  .ev-progress{ order:4; margin-top:0; }
  .ev-deck{ width:min(76vw,340px); }
  .ev-info{ min-height:0; }
  .ev-page-hero,.ev-body{ grid-template-columns:1fr; }
  .ev-photo{ justify-self:start; max-width:360px; }
  .ev-more,.ev-grid{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .ev-facts{ position:static; }
}
@media (max-width:560px){
  .ev-mini .ev-cap b{ font-size:.94rem; }
  .ev-mini .ev-role{ display:none; }
  .ev-pager{ grid-template-columns:1fr; }
  .ev-pager a.nx{ text-align:left; justify-items:start; }
}
@media (prefers-reduced-motion:reduce){
  .ev-card{ transition:opacity .2s; }
  .ev-card[data-pos="0"] .ev-scan::after{ animation:none; }
}
