:root{
  --black:#07070d;--black-2:#0d0d18;--black-3:#14142a;
  --purple:#6c2bd9;--purple-2:#8b47f0;--purple-3:#a76ff7;
  --blue:#1a6bff;--blue-2:#3d8bff;
  --gold:#d4a017;--gold-2:#f0c040;--gold-3:#ffe083;
  --white:#f0eeff;--muted:#6b6b9a;
  --border:rgba(108,43,217,.18);--border-2:rgba(108,43,217,.32);
  --g-purple:linear-gradient(135deg,var(--purple),var(--blue));
  --g-gold:linear-gradient(135deg,var(--gold),var(--gold-3));
  --g-full:linear-gradient(135deg,var(--purple),var(--blue),var(--gold));
  --glow-p:rgba(108,43,217,.4);--glow-g:rgba(212,160,23,.35);
  --fd:'Bebas Neue',sans-serif;--fb:'Cormorant Garamond',serif;
  --fs:'Space Grotesk',sans-serif;--fm:'DM Mono',monospace;
  --nav-h:70px;--ease:cubic-bezier(.22,1,.36,1);--ease-in:cubic-bezier(.55,0,1,.45);
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:auto;}
body{background:var(--black);color:var(--white);font-family:var(--fs);overflow-x:hidden;cursor:none;}
::-webkit-scrollbar{width:3px;}
::-webkit-scrollbar-track{background:var(--black);}
::-webkit-scrollbar-thumb{background:var(--purple);border-radius:2px;}
#preloader{position:fixed;inset:0;z-index:9999;background:var(--black);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2rem;transition:opacity .8s var(--ease),transform .8s var(--ease);}
#preloader.done{opacity:0;transform:scale(1.04);pointer-events:none;}
.pre-logo{font-family:var(--fd);font-size:clamp(3rem,8vw,6rem);letter-spacing:.15em;background:var(--g-full);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:preGlow 1.8s ease infinite alternate;}
@keyframes preGlow{from{filter:brightness(1);}to{filter:brightness(1.4) drop-shadow(0 0 32px rgba(108,43,217,.9));}}
.pre-bar-wrap{width:min(320px,70vw);height:2px;background:rgba(255,255,255,.08);border-radius:2px;overflow:hidden;}
.pre-bar{height:100%;width:0%;border-radius:2px;background:var(--g-full);box-shadow:0 0 14px var(--glow-p);}
.pre-txt{font-family:var(--fm);font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);}
#pre-canvas{position:absolute;inset:0;pointer-events:none;opacity:.14;}
#veil{position:fixed;inset:0;z-index:7000;pointer-events:none;display:grid;grid-template-columns:repeat(5,1fr);}
.vcol{background:var(--black-3);transform:scaleY(0);transform-origin:bottom;}
#veil.exit .vcol{animation:vDown .65s var(--ease-in) forwards;}
#veil.enter .vcol{transform:scaleY(1);transform-origin:top;animation:vUp .65s var(--ease) forwards;}
#veil.exit .vcol:nth-child(1),#veil.exit .vcol:nth-child(5){animation-delay:0s;}
#veil.exit .vcol:nth-child(2),#veil.exit .vcol:nth-child(4){animation-delay:.06s;}
#veil.exit .vcol:nth-child(3){animation-delay:.12s;}
#veil.enter .vcol:nth-child(1),#veil.enter .vcol:nth-child(5){animation-delay:.1s;}
#veil.enter .vcol:nth-child(2),#veil.enter .vcol:nth-child(4){animation-delay:.05s;}
#veil.enter .vcol:nth-child(3){animation-delay:0s;}
@keyframes vDown{to{transform:scaleY(1);transform-origin:top;}}
@keyframes vUp{to{transform:scaleY(0);}}
#c-dot{position:fixed;width:7px;height:7px;border-radius:50%;background:var(--gold-2);z-index:8888;pointer-events:none;transform:translate(-50%,-50%);}
#c-ring{position:fixed;width:34px;height:34px;border-radius:50%;border:1.5px solid var(--purple-2);z-index:8887;pointer-events:none;transform:translate(-50%,-50%);opacity:.65;transition:width .3s,height .3s,border-color .3s,opacity .3s;}
body.c-hover #c-ring{width:56px;height:56px;border-color:var(--gold);opacity:.4;}
body.c-hover #c-dot{background:var(--gold-3);}
nav{position:fixed;top:0;left:0;right:0;z-index:1000;height:var(--nav-h);display:flex;align-items:center;justify-content:space-between;padding:0 4%;transition:background .4s;}
nav.scrolled{background:rgba(7,7,13,.88);backdrop-filter:blur(20px);border-bottom:1px solid var(--border);}
.nav-logo{font-family:var(--fd);font-size:1.6rem;letter-spacing:.12em;background:var(--g-gold);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;text-decoration:none;}
.nav-links{display:flex;gap:2rem;list-style:none;}
.nav-links a{font-family:var(--fs);font-size:.78rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:rgba(240,238,255,.5);text-decoration:none;transition:color .2s;position:relative;}
.nav-links a::after{content:'';position:absolute;bottom:-4px;left:0;width:0;height:1px;background:var(--gold-2);transition:width .3s var(--ease);}
.nav-links a:hover{color:var(--white);}
.nav-links a:hover::after,.nav-links a.active::after{width:100%;}
.nav-links a.active{color:var(--white);}
.nav-cta{padding:.5rem 1.4rem;background:transparent;border:1px solid var(--border-2);border-radius:3px;font-family:var(--fs);font-size:.75rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--purple-3);text-decoration:none;transition:background .25s,color .25s,box-shadow .25s;}
.nav-cta:hover{background:var(--purple);border-color:var(--purple);color:#fff;box-shadow:0 0 24px var(--glow-p);}
.ham{display:none;flex-direction:column;gap:5px;cursor:none;background:none;border:none;padding:4px;}
.ham span{display:block;width:22px;height:1.5px;background:var(--white);border-radius:1px;transition:.3s;}
.ham.open span:nth-child(1){transform:translateY(6.5px) rotate(45deg);}
.ham.open span:nth-child(2){opacity:0;}
.ham.open span:nth-child(3){transform:translateY(-6.5px) rotate(-45deg);}
.mob-nav{position:fixed;inset:0;top:var(--nav-h);z-index:900;background:rgba(7,7,13,.97);backdrop-filter:blur(30px);display:flex;flex-direction:column;justify-content:center;align-items:center;gap:2.5rem;opacity:0;pointer-events:none;transition:opacity .35s var(--ease);}
.mob-nav.open{opacity:1;pointer-events:all;}
.mob-nav a{font-family:var(--fd);font-size:2.8rem;letter-spacing:.12em;color:rgba(240,238,255,.6);text-decoration:none;transition:color .2s;}
.mob-nav a:hover{color:var(--gold-2);}
#particle-canvas{position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.4;}

/* PAGE HEADER */
.page-header{min-height:42vh;padding-top:var(--nav-h);position:relative;overflow:hidden;display:flex;align-items:flex-end;border-bottom:1px solid var(--border);}
.ph-orb{position:absolute;border-radius:50%;filter:blur(80px);pointer-events:none;}
.ph-orb-1{width:500px;height:500px;background:rgba(26,107,255,.13);top:-30%;right:-5%;}
.ph-orb-2{width:350px;height:350px;background:rgba(108,43,217,.1);bottom:-20%;left:5%;}
.ph-grid{position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(rgba(108,43,217,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(108,43,217,.04) 1px,transparent 1px);background-size:60px 60px;}
#ph-wave{position:absolute;bottom:0;left:0;right:0;height:110px;pointer-events:none;opacity:.7;}
.ph-inner{position:relative;z-index:2;width:100%;max-width:1260px;margin:0 auto;padding:3rem 4%;display:grid;grid-template-columns:1fr auto;gap:2rem;align-items:flex-end;}
.ph-breadcrumb{display:flex;align-items:center;gap:.5rem;font-family:var(--fm);font-size:.65rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:1.2rem;animation:fadeUp .7s var(--ease) both;}
.ph-breadcrumb a{color:var(--muted);text-decoration:none;transition:color .2s;}
.ph-breadcrumb a:hover{color:var(--purple-3);}
.ph-breadcrumb-sep{color:var(--border-2);}
.ph-breadcrumb-cur{color:var(--gold-2);}
.ph-num{font-family:var(--fm);font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:var(--purple-3);margin-bottom:.6rem;display:flex;align-items:center;gap:.6rem;animation:fadeUp .7s .05s var(--ease) both;}
.ph-num::before{content:'';width:18px;height:1px;background:var(--purple-3);}
.ph-title{font-family:var(--fd);font-size:clamp(3rem,6vw,5.5rem);letter-spacing:.04em;line-height:.95;animation:fadeUp .8s .1s var(--ease) both;}
.ph-title em{font-family:var(--fb);font-style:italic;background:var(--g-gold);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;}
.ph-desc{font-size:.9rem;font-weight:300;color:rgba(240,238,255,.45);line-height:1.7;max-width:480px;margin-top:.9rem;animation:fadeUp .8s .18s var(--ease) both;}
.ph-stats{display:flex;gap:1.5rem;animation:fadeUp .8s .22s var(--ease) both;}
.ph-stat-n{font-family:var(--fd);font-size:2rem;letter-spacing:.04em;background:var(--g-gold);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;line-height:1;}
.ph-stat-l{font-family:var(--fm);font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-top:.2rem;}
@keyframes fadeUp{from{opacity:0;transform:translateY(18px);}to{opacity:1;transform:translateY(0);}}

/* MARQUEE */
.marquee-strip{position:relative;z-index:2;background:var(--black-3);border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:1rem 0;overflow:hidden;}
.marquee-track{display:flex;gap:2.5rem;animation:marquee 30s linear infinite;white-space:nowrap;width:max-content;}
@keyframes marquee{from{transform:translateX(0);}to{transform:translateX(-50%);}}
.mq-item{display:inline-flex;align-items:center;font-family:var(--fd);font-size:.82rem;letter-spacing:.1em;color:rgba(240,238,255,.25);flex-shrink:0;}
.mq-sep{color:var(--gold);font-size:.65rem;margin:0 .4rem;}

/* KINEMATIC SCENE */
.scene-track{position:relative;}
.scene{position:sticky;top:0;height:100vh;overflow:hidden;display:flex;align-items:center;justify-content:center;}
#scene-pub-track{height:320vh;}
#scene-pub{background:var(--black-2);}
.sc-grid{position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(rgba(108,43,217,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(108,43,217,.04) 1px,transparent 1px);background-size:55px 55px;}
.sc-orb{position:absolute;border-radius:50%;filter:blur(100px);pointer-events:none;}
.sc-orb-1{width:600px;height:600px;background:rgba(26,107,255,.13);top:-20%;right:-10%;}
.sc-orb-2{width:400px;height:400px;background:rgba(108,43,217,.1);bottom:-15%;left:-5%;}
#sc-wave{position:absolute;bottom:0;left:0;right:0;height:150px;pointer-events:none;}
.sc-content{position:relative;z-index:2;text-align:center;padding:0 4%;max-width:1000px;}
.sc-bgword{font-family:var(--fd);font-size:clamp(6rem,16vw,16rem);letter-spacing:.08em;line-height:.85;background:linear-gradient(135deg,rgba(26,107,255,.18),rgba(108,43,217,.12));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;user-select:none;}
.sc-tag{font-family:var(--fm);font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;color:var(--gold-2);margin-bottom:1rem;display:flex;align-items:center;justify-content:center;gap:.7rem;}
.sc-tag::before,.sc-tag::after{content:'';width:22px;height:1px;background:var(--gold-2);}
.sc-quote{font-family:var(--fb);font-style:italic;font-size:clamp(1.4rem,3vw,2.6rem);color:var(--white);line-height:1.4;max-width:780px;margin:0 auto;}
.sc-quote em{color:var(--gold-2);font-style:normal;}
.sc-line{height:1px;background:linear-gradient(90deg,transparent,var(--gold),transparent);margin:1.4rem auto 0;width:0;}

/* PUB BODY */
.pub-section{position:relative;z-index:2;padding:8rem 4%;}
.pub-inner{max-width:1260px;margin:0 auto;}
.pub-layout{display:grid;grid-template-columns:220px 1fr;gap:3.5rem;align-items:start;}

/* FILTER SIDEBAR */
.filter-sidebar{position:sticky;top:calc(var(--nav-h)+1.5rem);}
.fs-card{background:var(--black-2);border:1px solid var(--border);border-radius:10px;padding:1.4rem;margin-bottom:1rem;}
.fs-title{font-family:var(--fd);font-size:.95rem;letter-spacing:.06em;margin-bottom:1rem;}
.fs-btn{display:block;width:100%;text-align:left;padding:.5rem .8rem;border:none;border-radius:5px;background:transparent;font-family:var(--fs);font-size:.82rem;font-weight:500;color:rgba(240,238,255,.45);cursor:none;transition:background .2s,color .2s;margin-bottom:.2rem;}
.fs-btn:hover{background:rgba(108,43,217,.1);color:var(--white);}
.fs-btn.active{background:rgba(108,43,217,.2);color:var(--purple-3);}
.fs-divider{height:1px;background:var(--border);margin:.8rem 0;}
.fs-stat{display:flex;justify-content:space-between;font-family:var(--fm);font-size:.7rem;padding:.3rem 0;}
.fs-stat-label{color:var(--muted);}
.fs-stat-val{color:var(--gold-2);font-weight:500;}

/* PUB LIST */
.pub-list{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;}

/* BOOK CARD — same flip mechanic as index */
.book-wrap{perspective:1200px;height:200px;cursor:none;position:relative;}
.book{width:100%;height:100%;position:relative;}
.book-cover{position:absolute;inset:0;border-radius:4px 10px 10px 4px;display:flex;flex-direction:column;justify-content:flex-end;padding:1.4rem;transform-origin:left center;transform:rotateY(0deg);transition:transform .85s cubic-bezier(.23,1,.32,1),box-shadow .85s;overflow:hidden;z-index:2;will-change:transform;}
.book-cover::before{content:'';position:absolute;left:0;top:0;bottom:0;width:5%;background:rgba(0,0,0,.35);border-radius:4px 0 0 4px;z-index:1;}
.book-cover::after{content:'';position:absolute;left:5%;top:0;bottom:0;width:3%;background:rgba(255,255,255,.04);z-index:1;}
.book-inside{position:absolute;inset:0;background:linear-gradient(160deg,#0d0d1a 0%,#14142a 100%);border:1px solid rgba(108,43,217,.35);border-radius:4px 10px 10px 4px;padding:1.2rem 1.4rem 1.2rem 1.8rem;overflow:hidden;z-index:1;}
.book-inside::after{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--purple),var(--blue),var(--gold));}
.book-wrap:hover .book-cover{transform:rotateY(-35deg);box-shadow:-10px 0 30px rgba(0,0,0,.7),0 0 20px var(--glow-p);}
/* Cover styles */
.bc-1{background:linear-gradient(160deg,#1a0a2e 0%,#3a1060 40%,#6c2bd9 100%);}
.bc-2{background:linear-gradient(160deg,#0a0f2a 0%,#0e2060 40%,#1a6bff 100%);}
.bc-3{background:linear-gradient(160deg,#1a1200 0%,#3d2a00 40%,#d4a017 100%);}
.bc-4{background:linear-gradient(160deg,#120a2e 0%,#2a0f60 40%,#8b47f0 100%);}
.bc-5{background:linear-gradient(160deg,#0a1520 0%,#0e3050 40%,#3d8bff 100%);}
.bc-6{background:linear-gradient(160deg,#1a0f00 0%,#3d2800 40%,#f0c040 100%);}
.bc-7{background:linear-gradient(160deg,#0a1a10 0%,#0e3820 40%,#1a8f55 100%);}
.cover-glow{position:absolute;width:160px;height:160px;border-radius:50%;filter:blur(50px);top:-20%;right:-10%;opacity:.4;pointer-events:none;}
.cg-p{background:var(--purple-2);}.cg-b{background:var(--blue-2);}.cg-g{background:var(--gold-2);}
.cover-spine{position:absolute;top:20%;bottom:20%;left:5%;width:3px;background:linear-gradient(180deg,transparent,rgba(255,255,255,.25),transparent);border-radius:2px;z-index:2;}
.cover-year{position:absolute;top:1rem;right:1rem;font-family:var(--fm);font-size:.6rem;letter-spacing:.1em;color:rgba(255,255,255,.4);z-index:2;}
.cover-badge{position:absolute;top:1rem;left:1.6rem;font-family:var(--fm);font-size:.58rem;letter-spacing:.08em;text-transform:uppercase;padding:.18rem .5rem;border-radius:3px;z-index:2;}
.cb-j{background:rgba(108,43,217,.4);color:var(--purple-3);}
.cb-c{background:rgba(26,107,255,.35);color:var(--blue-2);}
.cb-r{background:rgba(212,160,23,.3);color:var(--gold-2);}
.cover-logo{position:absolute;top:50%;left:52%;transform:translate(-50%,-70%);font-family:var(--fd);font-size:2.2rem;letter-spacing:.1em;color:rgba(255,255,255,.13);pointer-events:none;white-space:nowrap;z-index:1;text-align:center;line-height:1;user-select:none;}
.cover-bottom{position:relative;z-index:3;}
.cover-journal{font-family:var(--fm);font-size:.58rem;letter-spacing:.06em;color:rgba(255,255,255,.4);margin-bottom:.35rem;}
.cover-title{font-family:var(--fd);font-size:.88rem;letter-spacing:.04em;line-height:1.2;color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.6);}
/* Inside content */
.inside-badge{font-family:var(--fm);font-size:.58rem;letter-spacing:.08em;text-transform:uppercase;padding:.18rem .5rem;border-radius:3px;display:inline-block;margin-bottom:.7rem;}
.inside-title{font-family:var(--fd);font-size:.9rem;letter-spacing:.03em;line-height:1.25;margin-bottom:.5rem;color:var(--white);}
.inside-authors{font-family:var(--fs);font-size:.75rem;font-weight:300;color:rgba(240,238,255,.4);margin-bottom:.3rem;}
.inside-journal{font-family:var(--fm);font-size:.7rem;color:var(--blue-2);margin-bottom:.7rem;}
.inside-tags{display:flex;flex-wrap:wrap;gap:.3rem;margin-bottom:.8rem;}
.itag{padding:.16rem .5rem;border-radius:3px;font-family:var(--fm);font-size:.6rem;}
.it-p{background:rgba(108,43,217,.18);color:var(--purple-3);border:1px solid rgba(108,43,217,.25);}
.it-b{background:rgba(26,107,255,.15);color:var(--blue-2);border:1px solid rgba(26,107,255,.22);}
.it-g{background:rgba(212,160,23,.14);color:var(--gold-2);border:1px solid rgba(212,160,23,.2);}
.inside-link{display:inline-flex;align-items:center;gap:.35rem;font-family:var(--fm);font-size:.65rem;letter-spacing:.07em;text-transform:uppercase;color:var(--gold-2);border:1px solid rgba(212,160,23,.3);padding:.3rem .8rem;border-radius:3px;text-decoration:none;transition:background .2s;cursor:none;}
.inside-link:hover{background:rgba(212,160,23,.1);}
.inside-year{position:absolute;bottom:1rem;right:1.2rem;font-family:var(--fm);font-size:.62rem;color:rgba(240,238,255,.18);}

/* REVEAL */
.reveal{opacity:0;transform:translateY(28px);transition:opacity .8s var(--ease),transform .8s var(--ease);}
.reveal.visible{opacity:1;transform:translateY(0);}
.reveal-l{opacity:0;transform:translateX(-28px);transition:opacity .8s var(--ease),transform .8s var(--ease);}
.reveal-l.visible{opacity:1;transform:translateX(0);}

/* FOOTER */
footer{background:var(--black-3);border-top:1px solid var(--border);padding:3.5rem 4% 2rem;position:relative;z-index:2;}
.footer-inner{max-width:1260px;margin:0 auto;}
.footer-top{display:flex;justify-content:space-between;align-items:flex-start;padding-bottom:2.5rem;border-bottom:1px solid var(--border);gap:2rem;flex-wrap:wrap;}
.footer-logo{font-family:var(--fd);font-size:1.5rem;letter-spacing:.12em;background:var(--g-gold);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;}
.footer-tagline{font-family:var(--fm);font-size:.7rem;letter-spacing:.08em;color:var(--muted);margin-top:.4rem;}
.footer-nav{display:flex;gap:1.5rem;flex-wrap:wrap;}
.footer-nav a{font-family:var(--fs);font-size:.75rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:rgba(240,238,255,.35);text-decoration:none;transition:color .2s;}
.footer-nav a:hover{color:var(--purple-3);}
.footer-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:2rem;flex-wrap:wrap;gap:1rem;}
.footer-copy{font-family:var(--fm);font-size:.7rem;color:rgba(240,238,255,.2);}
.footer-social{display:flex;gap:.7rem;}
.footer-social a{width:34px;height:34px;border-radius:4px;border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:.9rem;color:rgba(240,238,255,.4);transition:border-color .2s,color .2s,background .2s;cursor:none;}
.footer-social a:hover{border-color:var(--purple-2);color:var(--purple-3);background:rgba(108,43,217,.12);}

@media(max-width:900px){.pub-layout{grid-template-columns:1fr;}.filter-sidebar{position:static;}.book-wrap{height:180px;}.pub-list{grid-template-columns:1fr;}}
@media(max-width:768px){.nav-links,.nav-cta{display:none;}.ham{display:flex;}.ph-inner{grid-template-columns:1fr;}.ph-stats{display:none;}}