html,body{margin:0;height:100%;background:#0b0c10;color:#e8e8ee;font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif;}
#app{position:fixed;inset:0;overflow:hidden;background:#0b0c10;}
#app::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:linear-gradient(90deg,rgba(3,7,10,.86),rgba(3,7,10,.42),rgba(3,7,10,.72)),linear-gradient(180deg,rgba(3,7,10,.3),rgba(3,7,10,.76)),url("/assets/images/authorcentral-bookcase-photoreal.webp") center/cover no-repeat;filter:saturate(.9) contrast(1.05);}
#app::after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:radial-gradient(780px 520px at 50% 48%,rgba(255,226,156,.13),transparent 62%),radial-gradient(1000px 720px at 50% 50%,transparent 46%,rgba(0,0,0,.42) 100%);}
canvas{position:relative;z-index:1;display:block;width:100%;height:100%;touch-action:none;}
.book-fallback{position:absolute;inset:0;z-index:2;display:grid;place-items:center;padding:clamp(18px,4vw,64px);overflow:auto;}
.book-fallback-card{width:min(1040px,100%);display:grid;grid-template-columns:minmax(180px,380px) minmax(0,1fr);gap:clamp(22px,5vw,62px);align-items:center;padding:clamp(22px,4vw,48px);border:1px solid rgba(243,210,123,.28);border-radius:30px;background:linear-gradient(145deg,rgba(10,13,16,.82),rgba(30,22,18,.74));box-shadow:0 34px 100px rgba(0,0,0,.55);backdrop-filter:blur(18px);}
.book-fallback-cover-wrap{perspective:900px;display:grid;justify-items:center;}
.book-fallback-cover{display:block;width:100%;aspect-ratio:2/3;object-fit:cover;border-radius:14px;border:1px solid rgba(255,255,255,.2);box-shadow:18px 26px 46px rgba(0,0,0,.5);transform:rotateY(-12deg) rotateZ(-2deg);background:#18120e;}
.book-fallback-cover-landscape{width:min(420px,100%);aspect-ratio:3/2;object-fit:contain;}
.book-fallback-cover-placeholder{display:grid;place-items:center;color:#f3d27b;font:700 clamp(4rem,12vw,8rem)/1 Georgia,serif;}
.book-fallback-kicker{margin:0 0 12px;color:#f3d27b;font-size:12px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;}
.book-fallback-copy h1{margin:0;color:#fff8ea;font:650 clamp(2.4rem,6vw,5.25rem)/1.02 Garamond,"Adobe Garamond Pro","EB Garamond","Iowan Old Style","Palatino Linotype","Book Antiqua",Palatino,Georgia,serif;letter-spacing:-.03em;}
.book-fallback-subtitle{margin:12px 0 0;color:rgba(255,248,234,.82);font:600 clamp(1.2rem,2vw,1.65rem)/1.35 Garamond,"Adobe Garamond Pro","EB Garamond","Iowan Old Style","Palatino Linotype","Book Antiqua",Palatino,Georgia,serif;}
.book-fallback-byline{margin:12px 0 0;color:#f3d27b;font-weight:700;}
.book-fallback-description{max-width:620px;margin:22px 0 0;color:rgba(255,248,234,.74);font-size:17px;line-height:1.7;}
.book-fallback-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px;}
.book-fallback-btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 16px;border-radius:999px;border:1px solid rgba(255,248,234,.2);background:rgba(255,248,234,.07);color:#fff8ea;text-decoration:none;font-weight:800;}
.book-fallback-btn.primary{border-color:transparent;background:linear-gradient(135deg,#f0d38d,#d7ad5b);color:#171007;}
.book-fallback-note{max-width:620px;margin:18px 0 0;color:rgba(255,248,234,.48);font-size:12px;line-height:1.45;}
.hud{position:absolute;left:16px;top:16px;right:16px;display:flex;gap:12px;align-items:flex-start;justify-content:space-between;pointer-events:none;}
.card{pointer-events:auto;background:rgba(20,22,28,.72);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.12);border-radius:16px;padding:12px 14px;box-shadow:0 12px 40px rgba(0,0,0,.35);max-width:min(520px,100%);}
.title{font-weight:700;font-size:16px;line-height:1.2;margin:0 0 6px 0;}
.muted{opacity:.8;font-size:12px;line-height:1.35;}
.row{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;}
button{cursor:pointer;border-radius:12px;border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.08);color:#f3f3f8;padding:9px 12px;font-weight:650;}
button:hover{background:rgba(255,255,255,.12);}
button:active{transform:translateY(1px);}
.pill{display:inline-flex;align-items:center;gap:8px;padding:7px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.06);font-size:12px;}
.formats a{color:#b9d6ff;text-decoration:none}
.formats a:hover{text-decoration:underline}
.footer{position:absolute;left:16px;bottom:14px;right:16px;display:flex;justify-content:space-between;align-items:center;gap:10px;pointer-events:none;}
.footer .hint{pointer-events:auto;opacity:.75;font-size:12px}
.right{display:flex;gap:10px;align-items:center;pointer-events:none;}
.right .pill{pointer-events:auto;}
.mobile-only{display:none;}

@media (max-width: 1024px), (pointer: coarse){
  .mobile-only{display:inline-flex;}
  .book-fallback-card{grid-template-columns:1fr;max-width:560px;gap:22px;text-align:center;}
  .book-fallback-cover{width:min(260px,68vw);margin:0 auto;}
  .book-fallback-cover-landscape{width:min(420px,82vw);}
  .book-fallback-description,.book-fallback-note{margin-left:auto;margin-right:auto;}
  .book-fallback-actions{justify-content:center;}
  #panel{
    left:10px !important;
    right:10px !important;
    top:auto !important;
    bottom:10px !important;
    min-width:0 !important;
    padding:10px !important;
  }
  #panel > div:first-child{
    align-items:flex-start !important;
    gap:8px !important;
  }
  #panel > div:first-child > div{
    flex-wrap:wrap !important;
    justify-content:flex-end !important;
  }
  #panel button{
    min-height:42px;
    font-size:14px;
  }
  #panel strong{
    line-height:42px;
  }
}

@media (max-width: 520px){
  .book-fallback{align-items:start;padding:88px 14px 24px;}
  .book-fallback-card{padding:18px;border-radius:22px;}
  .book-fallback-cover{width:min(210px,66vw);}
  .book-fallback-cover-landscape{width:min(310px,86vw);}
  .book-fallback-copy h1{font-size:clamp(2rem,12vw,3.2rem);}
  .book-fallback-actions{display:grid;}
  #panel{
    font-size:12px !important;
  }
  #panel > div:first-child{
    display:block !important;
  }
  #panel > div:first-child > div{
    margin-top:8px;
    justify-content:flex-start !important;
  }
  #panel button{
    flex:1 1 calc(50% - 6px);
  }
}
