:root{
  --black:#0B0907; --ivory:#EDE7DA; --dim:#94897A; --gold:#C39A54; --crimson:#8A1E14;
  --serif:"Bodoni Moda", Didot, serif; --book:"EB Garamond", Georgia, serif;
}
*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;}
html,body{margin:0;}
body{background:var(--black);color:var(--ivory);font-family:var(--book);-webkit-font-smoothing:antialiased;}
a{color:inherit;text-decoration:none;}
img{max-width:100%;}

/* ===== header ===== */
.libhead{display:flex;flex-direction:column;align-items:center;text-align:center;padding:2.2rem 1.5rem 1.6rem;border-bottom:1px solid rgba(237,231,218,.08);}
.libhead__logo{display:inline-block;color:var(--ivory);line-height:0;margin-bottom:1.1rem;}
.libhead__logo svg{height:34px;width:auto;display:block;}
.libhead__logo svg path{fill:currentColor;}
.libhead__nav{display:flex;justify-content:center;flex-wrap:wrap;gap:2.3rem;}
.libhead__nav a{font-family:var(--book);text-transform:uppercase;letter-spacing:.28em;font-size:.66rem;color:var(--dim);transition:color .3s;}
.libhead__nav a:hover{color:var(--gold);}
.libhead__nav a.is-active{color:var(--ivory);}
.libhead__nav a.nav-xxx:hover{color:#ff4d42;text-shadow:0 0 6px rgba(255,77,66,.9),0 0 16px rgba(214,42,26,.6);}
/* XXX nav dropdown */
.libhead{position:relative;z-index:30;}
.nav-drop{position:relative;display:inline-flex;align-items:center;}
.nav-menu{position:absolute;top:calc(100% + .95rem);left:50%;transform:translateX(-50%) translateY(6px);
  min-width:214px;background:#0d0b08;border:1px solid rgba(237,231,218,.14);padding:.5rem 0;
  display:flex;flex-direction:column;opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity .3s ease,transform .3s ease;z-index:60;box-shadow:0 30px 72px rgba(0,0,0,.65);}
.nav-menu::before{content:"";position:absolute;top:-1.1rem;left:0;right:0;height:1.1rem;}
.nav-drop:hover .nav-menu{opacity:1;visibility:visible;pointer-events:auto;transform:translateX(-50%) translateY(0);}
.nav-menu a,.nav-menu__soon{font-family:var(--book);text-transform:uppercase;letter-spacing:.24em;font-size:.62rem;
  padding:.72rem 1.6rem;white-space:nowrap;text-align:left;transition:color .3s,background .3s;}
.nav-menu a{color:var(--ivory);}
.nav-menu a:hover{color:#ff4d42;background:rgba(138,30,20,.14);text-shadow:0 0 8px rgba(255,60,48,.5);}
.nav-menu__soon{color:var(--dim);display:flex;justify-content:space-between;align-items:center;gap:1.4rem;cursor:default;}
.nav-menu__soon em{font-style:normal;color:rgba(148,137,122,.55);letter-spacing:.16em;font-size:.82em;}

/* ===== intro ===== */
.wrap{max-width:1200px;margin:0 auto;padding:0 6vw;}
.lib-intro{position:relative;overflow:hidden;padding:clamp(3.4rem,8vh,6rem) 0 clamp(2.6rem,5vh,3.6rem);}
.lib-intro__bg{position:absolute;inset:0;z-index:0;pointer-events:none;
  background:url("../library/books.jpg") center 18%/cover no-repeat;
  background-image:image-set(url("../library/books.avif") type("image/avif"), url("../library/books.jpg") type("image/jpeg"));
  filter:sepia(.58) saturate(.82) brightness(.40) contrast(1.02);opacity:.31;
  -webkit-mask-image:linear-gradient(180deg, transparent 0%, #000 24%, #000 60%, transparent 100%);
  mask-image:linear-gradient(180deg, transparent 0%, #000 24%, #000 60%, transparent 100%);}
.lib-intro .wrap{position:relative;z-index:1;}
.lib-plate{display:flex;align-items:center;gap:1.5rem;margin-bottom:clamp(2.6rem,5vw,3.6rem);}
.lib-plate .k{font-family:var(--book);text-transform:uppercase;letter-spacing:.3em;font-size:.7rem;color:var(--dim);white-space:nowrap;}
.lib-plate .line{flex:1 1 auto;height:1px;background:linear-gradient(90deg,rgba(237,231,218,.18),transparent);}
.lib-intro__body{max-width:720px;margin:0 auto;text-align:center;}
.lib-lead{font-family:var(--book);color:rgba(237,231,218,.86);margin:0 auto;
  font-size:clamp(1.04rem,1.35vw,1.2rem);line-height:1.95;text-wrap:pretty;}
.lib-lead .inlink{white-space:nowrap;}
.lib-gold{color:var(--gold);font-weight:600;letter-spacing:.04em;}
.lib-title{font-family:var(--serif);font-weight:400;font-optical-sizing:auto;font-size:clamp(2.8rem,6.4vw,5rem);
  line-height:1;letter-spacing:.01em;margin:clamp(2rem,4vw,3rem) 0 0;}
.lib-byline{font-family:var(--serif);font-style:italic;font-size:clamp(1.1rem,1.7vw,1.5rem);color:var(--gold);margin:.55rem 0 0;letter-spacing:.02em;}

/* ===== shelf ===== */
.shelf{padding:clamp(2rem,5vh,3.5rem) 0 clamp(4rem,9vh,7rem);display:flex;flex-direction:column;gap:clamp(3.4rem,7vw,6rem);}
.file{display:grid;grid-template-columns:minmax(0,360px) 1fr;gap:clamp(2rem,5vw,4.5rem);align-items:center;}
.file:nth-child(even){grid-template-columns:1fr minmax(0,360px);}
.file:nth-child(even) .file__art{order:2;}
.file__art{position:relative;}
.file__cover{position:relative;z-index:4;background:#e9e1d0;padding:12px;border-radius:2px;box-shadow:0 34px 74px rgba(0,0,0,.6);
  transform:rotate(-1.4deg);transition:transform .5s,box-shadow .5s;}
.file:nth-child(even) .file__cover{transform:rotate(1.4deg);}
.file__art:hover .file__cover{transform:rotate(0) translateY(-4px);box-shadow:0 44px 90px rgba(0,0,0,.72);}
.file__cover img{display:block;width:100%;aspect-ratio:3/4;object-fit:cover;}
/* old-folder stack behind each cover */
.file__folder{position:absolute;top:0;left:0;width:100%;height:100%;border-radius:2px 12px 4px 4px;
  background:linear-gradient(158deg,#cbb085 0%,#b0955f 52%,#93784b 100%);
  box-shadow:0 18px 38px rgba(0,0,0,.5);transition:transform .6s cubic-bezier(.2,.85,.25,1);}
.file__folder::before{content:"";position:absolute;top:-15px;left:13%;width:40%;height:18px;background:inherit;border-radius:8px 14px 0 0;}
.file__folder--1{z-index:3;transform:rotate(-3deg) translate(-9px,7px);}
.file__folder--2{z-index:2;filter:brightness(.9);transform:rotate(2.5deg) translate(9px,12px);}
.file__folder--3{z-index:1;filter:brightness(.8);transform:rotate(-6deg) translate(-18px,18px);}
.file__art:hover .file__folder--1{transform:rotate(-7deg) translate(-30px,3px);}
.file__art:hover .file__folder--2{transform:rotate(7deg) translate(30px,9px);}
.file__art:hover .file__folder--3{transform:rotate(-13deg) translate(-52px,15px);}
.file__num{font-family:var(--book);text-transform:uppercase;letter-spacing:.34em;font-size:.64rem;color:var(--gold);}
.file__title{font-family:var(--serif);font-weight:400;font-size:clamp(2rem,3.6vw,2.9rem);line-height:1.02;margin:.5rem 0 0;}
.file__logline{font-family:var(--book);font-style:italic;color:rgba(237,231,218,.78);font-size:clamp(1.02rem,1.35vw,1.2rem);
  line-height:1.7;margin:1.1rem 0 1.5rem;max-width:44ch;text-wrap:pretty;}
.file__formats{display:flex;gap:.7rem;flex-wrap:wrap;margin:0 0 1.8rem;}
.fmt{font-family:var(--book);text-transform:uppercase;letter-spacing:.2em;font-size:.58rem;padding:.5em .9em;
  border:1px solid rgba(237,231,218,.2);color:var(--ivory);display:inline-flex;align-items:center;gap:.5em;}
.fmt--live{border-color:rgba(195,154,84,.5);color:var(--gold);}
.fmt--soon{color:var(--dim);border-color:rgba(148,137,122,.24);}
.fmt--soon::after{content:"soon";font-size:.82em;color:rgba(148,137,122,.7);letter-spacing:.12em;}
.file__open{font-family:var(--book);text-transform:uppercase;letter-spacing:.3em;font-size:.72rem;color:var(--gold);
  background:transparent;border:1px solid var(--crimson);padding:.95rem 2.4rem;cursor:pointer;transition:background .3s,border-color .3s;}
.file__open:hover{background:rgba(138,30,20,.16);border-color:#a8271b;}

/* ===== join ===== */
.join{border-top:1px solid rgba(237,231,218,.08);text-align:center;padding:clamp(3.6rem,8vh,6rem) 6vw;}
.join__k{font-family:var(--book);text-transform:uppercase;letter-spacing:.3em;font-size:.62rem;color:var(--gold);margin:0 0 1.1rem;}
.join__title{font-family:var(--serif);font-weight:400;font-size:clamp(2rem,3.6vw,2.9rem);line-height:1.02;margin:0 0 1.3rem;}
.join__note{font-family:var(--book);color:rgba(237,231,218,.72);font-size:clamp(1rem,1.3vw,1.14rem);line-height:1.9;max-width:52ch;margin:0 auto 2.2rem;text-wrap:pretty;}
.join__cta{display:inline-block;font-family:var(--book);text-transform:uppercase;letter-spacing:.3em;font-size:.8rem;color:var(--gold);
  background:transparent;border:1px solid var(--crimson);padding:1rem 3.2rem;transition:background .3s,border-color .3s;}
.join__cta:hover{background:rgba(138,30,20,.16);border-color:#a8271b;}
.join__free{display:block;margin-top:1.3rem;font-family:var(--book);text-transform:uppercase;letter-spacing:.24em;font-size:.62rem;color:var(--dim);transition:color .3s;}
.join__free:hover{color:var(--gold);}

/* ===== reader modal ===== */
.reader{position:fixed;inset:0;z-index:60;display:none;align-items:center;justify-content:center;padding:5vh 5vw;}
.reader.open{display:flex;}
.reader__backdrop{position:absolute;inset:0;background:rgba(6,5,4,.86);backdrop-filter:blur(3px);}
.reader__dialog{position:relative;max-width:720px;width:100%;max-height:90vh;overflow:auto;background:#0f0c09;
  border:1px solid rgba(237,231,218,.12);padding:clamp(2rem,4vw,3.4rem);box-shadow:0 40px 120px rgba(0,0,0,.7);}
.reader__close{position:absolute;top:1rem;right:1.2rem;background:none;border:0;color:var(--dim);font-size:1.6rem;cursor:pointer;line-height:1;transition:color .3s;}
.reader__close:hover{color:var(--crimson);}
.reader__num{font-family:var(--book);text-transform:uppercase;letter-spacing:.34em;font-size:.6rem;color:var(--gold);}
.reader__title{font-family:var(--serif);font-size:clamp(1.9rem,4vw,2.7rem);margin:.5rem 0 1.6rem;line-height:1.02;}
.reader__body p{font-family:var(--book);color:rgba(237,231,218,.86);font-size:1.05rem;line-height:1.9;margin:0 0 1.2rem;text-wrap:pretty;}
.reader__body p:first-letter{}
.reader__fade{font-family:var(--book);color:var(--dim);font-style:italic;font-size:.96rem;margin:.4rem 0 1.8rem;}
.reader__cta{display:inline-block;font-family:var(--book);text-transform:uppercase;letter-spacing:.3em;font-size:.74rem;color:var(--gold);
  background:transparent;border:1px solid var(--crimson);padding:.9rem 2.4rem;transition:background .3s,border-color .3s;}
.reader__cta:hover{background:rgba(138,30,20,.16);border-color:#a8271b;}
.is-soon{cursor:default;pointer-events:none;opacity:.64;}
.soon-tag{display:inline-block;margin-left:.55rem;font-family:var(--book);text-transform:uppercase;letter-spacing:.22em;
  font-size:.82em;color:var(--gold);border:1px solid rgba(195,154,84,.5);border-radius:2px;padding:.15em .5em;vertical-align:middle;}
body.noscroll{overflow:hidden;}

/* inline gold easter-egg text (matches home) */
.inlink{color:var(--gold);cursor:pointer;transition:color .3s;}
.inlink:hover{color:#dcae63;}

/* ===== behind-closed-doors modal ===== */
.doormodal{position:fixed;inset:0;z-index:60;display:none;align-items:center;justify-content:center;padding:5vh 5vw;}
.doormodal.open{display:flex;}
.doormodal__backdrop{position:absolute;inset:0;background:rgba(6,5,4,.9);backdrop-filter:blur(4px);}
.doormodal__dialog{position:relative;text-align:center;}
.doormodal__close{position:absolute;top:-2.6rem;right:0;background:none;border:0;color:var(--dim);font-size:1.7rem;cursor:pointer;line-height:1;transition:color .3s;}
.doormodal__close:hover{color:var(--crimson);}
.door-scene{display:block;position:relative;width:min(320px,68vw);aspect-ratio:680/1156;margin:0 auto;perspective:1700px;cursor:pointer;text-decoration:none;}
.door__glow{position:absolute;inset:0;z-index:1;border-radius:3px;opacity:0;
  background:linear-gradient(90deg, rgba(0,0,0,.92) 30%, rgba(150,100,42,.5) 66%, rgba(248,208,132,.95) 100%);
  box-shadow:0 0 50px rgba(240,200,120,.12);transition:opacity .9s ease,box-shadow .9s;}
.door{position:absolute;inset:0;z-index:2;width:100%;height:100%;display:block;object-fit:cover;
  transform-origin:left center;transform:rotateY(0deg);
  transition:transform .95s cubic-bezier(.2,.8,.2,1),filter .95s;
  filter:drop-shadow(0 26px 48px rgba(0,0,0,.6)) brightness(.93);}
.door-scene:hover .door,.door-scene:focus-visible .door{transform:rotateY(-32deg);
  filter:drop-shadow(24px 30px 60px rgba(0,0,0,.72)) brightness(1);}
.door-scene:hover .door__glow,.door-scene:focus-visible .door__glow{opacity:1;box-shadow:0 0 96px rgba(240,200,120,.42);}
.door__cta{font-family:var(--book);text-transform:uppercase;letter-spacing:.34em;font-size:.68rem;color:var(--gold);margin:1.7rem 0 0;}

/* ===== footer ===== */
.foot{background:var(--black);text-align:center;border-top:1px solid rgba(237,231,218,.08);padding:clamp(4rem,9vh,7rem) 6vw clamp(2.4rem,5vh,3.2rem);}
.foot__sign{font-family:var(--serif);font-style:italic;font-size:clamp(1.35rem,2.4vw,1.95rem);color:var(--dim);letter-spacing:.01em;margin:0 0 clamp(1.4rem,2.4vw,1.9rem);}
.foot__logo{display:inline-block;line-height:0;color:var(--crimson);margin:0 0 clamp(2.6rem,5vw,3.6rem);}
.foot__logo svg{height:124px;width:auto;display:block;margin:0 auto;}
.foot__logo svg path{fill:currentColor;}
.foot__hair{height:1px;max-width:520px;margin:0 auto clamp(2rem,4vw,2.6rem);background:linear-gradient(90deg,transparent,rgba(237,231,218,.20),transparent);}
.foot__nav{display:flex;justify-content:center;flex-wrap:wrap;gap:1.9rem;margin:0 0 1.7rem;}
.foot__nav a{font-family:var(--book);text-transform:uppercase;letter-spacing:.28em;font-size:.64rem;color:var(--dim);transition:color .3s;}
.foot__nav a:hover{color:var(--gold);}
.foot__nav a.nav-xxx:hover{color:#ff4d42;text-shadow:0 0 6px rgba(255,77,66,.9),0 0 16px rgba(214,42,26,.6);}
.foot__legal{font-family:var(--book);text-transform:uppercase;letter-spacing:.24em;font-size:.55rem;color:rgba(148,137,122,.75);line-height:2.1;margin:0;}
.foot__legal b{color:rgba(195,154,84,.85);font-weight:400;}

@media(max-width:760px){
  .file,.file:nth-child(even){grid-template-columns:1fr;gap:1.8rem;}
  .file:nth-child(even) .file__cover{order:0;}
  .file__cover{max-width:340px;}
  .foot__logo svg{height:96px;}
}

/* mobile: hide the XXX hover dropdown (useless on touch, caused horizontal overflow) */
@media(max-width:600px){.nav-menu{display:none;}}
