:root{
  --ink:#0a0a0b; --ink2:#111114; --surface:#16161a; --line:#26262c;
  --paper:#f3eee4; --muted:#9a938a; --amber:#e2b45f; --amber-dim:#8a6a33;
  --radius:20px;
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{
  background:var(--ink); color:var(--paper);
  font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  -webkit-font-smoothing:antialiased; overflow-x:hidden;
}
body::before{
  content:""; position:fixed; inset:0; pointer-events:none; z-index:1; opacity:.35;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='.25'/%3E%3C/svg%3E");
}
a{color:inherit;text-decoration:none}
.serif{font-family:'Playfair Display',Georgia,serif}
.wrap{max-width:1080px;margin:0 auto;padding:0 20px}
.topbar{
  position:sticky;top:0;z-index:40;backdrop-filter:blur(18px);
  background:rgba(10,10,11,.72);border-bottom:1px solid rgba(255,255,255,.06);
}
.topbar .row{display:flex;align-items:center;gap:14px;height:58px}
.brand{font-family:'Playfair Display',serif;font-size:19px;letter-spacing:.2px}
.brand span{color:var(--amber)}
.who{
  margin-left:auto;display:flex;align-items:center;gap:8px;
  font-size:13px;color:var(--muted);border:1px solid var(--line);
  padding:6px 12px;border-radius:999px;background:rgba(255,255,255,.02)
}
.who b{color:var(--paper);font-weight:600}

.hero{padding:44px 0 26px}
.hero h1{font-family:'Playfair Display',serif;font-size:clamp(34px,7vw,58px);line-height:1.04;letter-spacing:-.5px}
.hero h1 em{font-style:italic;color:var(--amber)}
.hero p{margin-top:14px;color:var(--muted);font-size:15px;max-width:46ch;line-height:1.6}

.shelf{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:18px;padding:12px 0 60px}
.book{
  position:relative;border-radius:var(--radius);overflow:hidden;background:var(--surface);
  border:1px solid rgba(255,255,255,.06);transition:transform .35s cubic-bezier(.2,.7,.3,1),border-color .3s;
  display:block;
}
.book:hover{transform:translateY(-4px);border-color:rgba(226,180,95,.45)}
.book .cover{position:relative;aspect-ratio:3/4;overflow:hidden;background:#000}
.book .cover img{width:100%;height:100%;object-fit:cover;display:block;transform:scale(1.02);transition:transform .6s}
.book:hover .cover img{transform:scale(1.07)}
.book .shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,0) 35%,rgba(0,0,0,.86) 100%)}
.book .meta{position:absolute;inset:auto 0 0 0;padding:16px}
.book .meta .kicker{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--amber);margin-bottom:6px}
.book .meta h3{font-family:'Playfair Display',serif;font-size:20px;line-height:1.15}
.book .meta .auth{font-size:12px;color:#cfc7bb;margin-top:4px}
.book .bar{position:absolute;left:0;right:0;bottom:0;height:3px;background:rgba(255,255,255,.12)}
.book .bar i{display:block;height:100%;background:var(--amber);width:0%}
.book.soon{opacity:.55;cursor:default}
.book.soon:hover{transform:none}
.book .lock{position:absolute;top:12px;right:12px;font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  background:rgba(0,0,0,.6);border:1px solid rgba(255,255,255,.18);padding:5px 9px;border-radius:999px;color:#e6dfd3}

/* chapter list */
.bookhead{display:grid;grid-template-columns:150px 1fr;gap:22px;align-items:end;padding:26px 0 10px}
.bookhead .poster{border-radius:16px;overflow:hidden;border:1px solid rgba(255,255,255,.08);aspect-ratio:2/3}
.bookhead .poster img{width:100%;height:100%;object-fit:cover}
.bookhead h1{font-family:'Playfair Display',serif;font-size:clamp(28px,6vw,44px);line-height:1.05}
.bookhead .auth{color:var(--muted);margin-top:8px;font-size:14px}
.bookhead .stat{margin-top:14px;display:flex;gap:16px;font-size:13px;color:var(--muted)}
.bookhead .stat b{color:var(--paper)}
.progressline{height:4px;background:rgba(255,255,255,.09);border-radius:99px;margin:18px 0 26px;overflow:hidden}
.progressline i{display:block;height:100%;background:var(--amber);border-radius:99px;transition:width .5s}

.chapters{display:flex;flex-direction:column;gap:10px;padding-bottom:70px}
.ch{
  display:grid;grid-template-columns:64px 1fr auto;gap:16px;align-items:center;
  background:linear-gradient(180deg,rgba(255,255,255,.035),rgba(255,255,255,.015));
  border:1px solid rgba(255,255,255,.07);border-radius:16px;padding:12px 16px 12px 12px;
  transition:border-color .25s,background .25s,transform .25s;
}
.ch:hover{border-color:rgba(226,180,95,.4);background:rgba(255,255,255,.05);transform:translateX(2px)}
.ch .thumb{width:64px;height:64px;border-radius:12px;overflow:hidden;background:#000;position:relative;flex:none}
.ch .thumb img{width:100%;height:100%;object-fit:cover}
.ch .num{position:absolute;left:0;top:0;background:rgba(0,0,0,.72);color:var(--amber);font-size:11px;
  padding:3px 7px;border-bottom-right-radius:10px;letter-spacing:.06em}
.ch h4{font-size:15.5px;font-weight:600;line-height:1.3}
.ch .sum{font-size:12.5px;color:var(--muted);margin-top:4px;line-height:1.45;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ch .right{display:flex;flex-direction:column;align-items:flex-end;gap:6px;min-width:86px}
.ch .dur{font-size:11.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.ch .fb{font-size:11.5px;color:var(--amber);display:flex;align-items:center;gap:4px}
.ch.watched .thumb::after{content:"✓";position:absolute;inset:0;display:grid;place-items:center;
  background:rgba(0,0,0,.55);color:var(--amber);font-size:22px}

/* player */
.player-shell{position:fixed;inset:0;background:#000;display:flex;flex-direction:column}
.stage{position:relative;flex:1;display:grid;place-items:center;overflow:hidden}
.stage video{height:100%;max-width:100%;object-fit:contain;background:#000}
.ptop{position:absolute;top:0;left:0;right:0;padding:14px 16px;display:flex;align-items:center;gap:12px;
  background:linear-gradient(180deg,rgba(0,0,0,.75),transparent);z-index:5}
.iconbtn{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.1);
  border:1px solid rgba(255,255,255,.14);color:#fff;font-size:18px;flex:none}
.ptitle{font-size:13px;line-height:1.25}
.ptitle small{display:block;color:#bdb6ab;font-size:11px;letter-spacing:.08em;text-transform:uppercase}
.sheet{
  background:var(--ink2);border-top:1px solid rgba(255,255,255,.08);
  padding:16px 18px calc(18px + env(safe-area-inset-bottom));max-height:46vh;overflow:auto;
}
.sheet h2{font-family:'Playfair Display',serif;font-size:20px;line-height:1.2}
.sheet .sum{color:var(--muted);font-size:13px;margin-top:6px;line-height:1.5}
.rate{display:flex;gap:8px;margin:14px 0 10px}
.star{font-size:26px;color:#3a3a42;cursor:pointer;transition:transform .15s,color .15s;background:none;border:0;padding:0}
.star.on{color:var(--amber);transform:scale(1.08)}
.note{width:100%;background:rgba(255,255,255,.05);border:1px solid var(--line);border-radius:14px;
  color:var(--paper);padding:12px 14px;font:inherit;font-size:14px;resize:none;min-height:74px;outline:none}
.note:focus{border-color:rgba(226,180,95,.5)}
.rowend{display:flex;gap:10px;align-items:center;margin-top:10px}
.btn{background:var(--amber);color:#1a1408;border:0;border-radius:12px;padding:12px 18px;font-weight:700;
  font-size:14px;cursor:pointer;transition:filter .2s,transform .2s}
.btn:hover{filter:brightness(1.06)}
.btn:active{transform:scale(.98)}
.btn.ghost{background:transparent;color:var(--paper);border:1px solid var(--line);font-weight:600}
.hint{font-size:12px;color:var(--muted);margin-left:auto}
.fblist{margin-top:16px;display:flex;flex-direction:column;gap:10px}
.fbitem{display:flex;gap:10px;padding:10px 12px;border-radius:12px;background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.05)}
.avatar{width:30px;height:30px;border-radius:50%;background:var(--amber-dim);color:#fff;display:grid;place-items:center;
  font-size:12px;font-weight:700;flex:none}
.fbitem .body{font-size:13px;line-height:1.45}
.fbitem .who-line{color:var(--amber);font-weight:600;font-size:12px;margin-bottom:2px}
.fbitem .txt{color:#ddd6ca}

/* name gate */
.gate{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:24px;
  background:radial-gradient(circle at 50% 30%,#1b1a20,#0a0a0b 65%)}
.gate .card{max-width:420px;width:100%;text-align:center}
.gate h2{font-family:'Playfair Display',serif;font-size:34px;line-height:1.1}
.gate p{color:var(--muted);font-size:14px;margin:12px 0 22px;line-height:1.6}
.gate input{width:100%;background:rgba(255,255,255,.05);border:1px solid var(--line);border-radius:14px;
  padding:15px 16px;color:var(--paper);font:inherit;font-size:16px;outline:none;text-align:center}
.gate input:focus{border-color:var(--amber)}
.gate .btn{width:100%;margin-top:12px;padding:15px;font-size:15px}
.gate small{display:block;margin-top:14px;color:#6f6960;font-size:11.5px;line-height:1.5}

@media (max-width:640px){
  .wrap{padding:0 16px}
  .shelf{grid-template-columns:repeat(2,1fr);gap:12px}
  .book .meta{padding:12px}
  .book .meta h3{font-size:15.5px}
  .book .meta .auth{font-size:11px}
  .book .meta .kicker{font-size:10px}
  .bookhead{grid-template-columns:110px 1fr;gap:16px}
  .ch{grid-template-columns:56px 1fr auto;gap:12px;padding:10px}
  .ch .thumb{width:56px;height:56px}
  .ch h4{font-size:14.5px}
  .sheet{max-height:52vh}
}

.sooncover{background:linear-gradient(160deg,#1c1b22 0%,#101014 70%);display:grid;place-items:end start;padding:18px}
.sooncover .typo{font-family:'Playfair Display',serif;font-size:22px;line-height:1.15;color:#6d6a63}
.sooncover .typo span{display:block;font-family:'Inter',sans-serif;font-size:12px;color:#4e4b46;margin-top:6px;letter-spacing:.02em}

/* card: artwork above, caption below (posters already carry the title art) */
.book{background:#121216}
.book .cover{aspect-ratio:3/4;position:relative;overflow:hidden}
.book .chip{position:absolute;top:10px;left:10px;background:rgba(0,0,0,.62);backdrop-filter:blur(6px);
  border:1px solid rgba(255,255,255,.16);color:#efe9dd;font-size:10.5px;letter-spacing:.1em;
  text-transform:uppercase;padding:5px 9px;border-radius:999px}
.book .caption{padding:12px 13px 14px;border-top:1px solid rgba(255,255,255,.06)}
.book .caption h3{font-size:17px;line-height:1.2;letter-spacing:-.1px}
.book .caption .auth{font-size:11.5px;color:var(--muted);margin-top:5px}
.book .bar{position:absolute;left:0;right:0;bottom:0}

.book .caption h3{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.45em}
.sooncover{display:grid;place-items:center;position:relative;background:linear-gradient(160deg,#191820,#0e0e12)}
.sooncover .chip{position:absolute;top:10px;left:10px}
.sooncover .q{font-family:'Playfair Display',serif;font-size:64px;color:#232228}
.book.soon .caption h3{color:#8b877f}
.book.soon .caption .auth{color:#55524c}

/* player: video full-bleed, feedback sheet as a bottom drawer */
.player-shell{position:fixed;inset:0;background:#000}
.stage{position:absolute;inset:0;display:grid;place-items:center}
.stage video{width:100%;height:100%;object-fit:contain;background:#000}
.sheet{position:absolute;left:0;right:0;bottom:0;z-index:10;background:var(--ink2);
  border-radius:22px 22px 0 0;border-top:1px solid rgba(255,255,255,.09);
  box-shadow:0 -24px 70px rgba(0,0,0,.65);
  max-height:88vh;overflow:auto;padding:10px 18px calc(20px + env(safe-area-inset-bottom));
  transform:translateY(calc(100% - 150px));transition:transform .38s cubic-bezier(.22,.85,.25,1)}
.sheet.open{transform:translateY(0)}
.grab{width:44px;height:4px;border-radius:99px;background:#3a3a42;margin:2px auto 12px}
.peekbtn{margin-top:12px;font-size:13px;padding:10px 14px;border-radius:11px}
