.novel-page,.novel-admin-page{background:#0e1016;color:#efebf6;min-height:100vh}
.novel-shell,.novel-admin-shell{width:min(1160px,calc(100% - 32px));margin:0 auto;padding:55px 0 110px}
.novel-admin-shell{width:min(1350px,calc(100% - 32px))}
.novel-hero{margin-bottom:38px}.novel-hero h1{font-size:clamp(30px,5vw,50px);margin:8px 0 14px}.novel-hero>p:last-child{color:#bfb6ca;line-height:1.85}
.novel-toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:18px}.novel-toolbar h2,.novel-toolbar h3{margin:0}.novel-toolbar span{color:#a99ab8;font-size:14px}
.novel-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(235px,1fr));gap:24px}
.novel-card{position:relative;overflow:hidden;border:1px solid #493c5c;border-radius:18px;background:#1b1a24}
.novel-card-visual{display:block;position:relative;height:260px;background:linear-gradient(135deg,#3b304c,#1d2331);overflow:hidden}
.novel-card-visual img{width:100%;height:100%;object-fit:cover}
.novel-card-body{padding:20px}.novel-card h3{font-size:22px;margin:0 0 8px}.novel-card p{color:#c8c1d0;line-height:1.7;font-size:14px;margin:0 0 16px}
.novel-card-meta{display:flex;flex-wrap:wrap;gap:8px;color:#dbc5f8;font-size:12px}
.novel-card a.novel-read-link{display:inline-block;margin-top:16px;color:#e8d5ff;text-decoration:underline;text-underline-offset:4px}
.novel-card.is-sensitive:not(.is-revealed) img{filter:blur(20px) brightness(.5);transform:scale(1.1)}
.novel-card-visual .novel-cover-placeholder{display:grid;height:100%;place-items:center;font-size:50px;color:#a99ab8}
.novel-sensitive-eye{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);min-width:130px;padding:9px 16px;border:1px solid #b49acb;border-radius:12px;background:rgba(15,13,23,.9);color:white;cursor:pointer}
.novel-card.is-revealed .novel-sensitive-eye{left:auto;top:10px;right:10px;transform:none;min-width:0}
.novel-back{color:#d7bcf9;display:inline-block;margin:0 0 30px}.novel-chapter-bar{display:flex;align-items:center;gap:12px;margin:28px 0}.novel-chapter-bar select{padding:10px 14px;background:#24202e;border:1px solid #6b5785;border-radius:9px;color:#eee}
.novel-reading{background:#191b24;border:1px solid #40384e;border-radius:20px;padding:clamp(25px,6vw,70px);line-height:2;max-width:900px;margin:auto}
.novel-reading h2{margin:0 0 36px;font-size:30px}.novel-story-body{white-space:pre-wrap;font-size:17px;line-height:2.2;overflow-wrap:anywhere}
.novel-reader-actions{display:flex;justify-content:center;gap:12px;margin-top:28px}.novel-reader-actions button,.novel-compact{border:1px solid #766087;background:#372b45;color:#fff;border-radius:10px;padding:9px 15px;cursor:pointer}
.novel-reader-actions button:disabled{opacity:.4;cursor:default}
.novel-admin-status{border:1px solid #5a456e;color:#d7c7e5;border-radius:12px;padding:12px 15px;margin-bottom:20px}
.novel-editor-layout{display:grid;grid-template-columns:300px minmax(0,1fr);gap:22px;align-items:start}.novel-editor-panel{border:1px solid #493c5c;border-radius:18px;background:#1a1b24;padding:25px}
.novel-admin-list{display:grid;gap:8px}.novel-admin-item{display:block;width:100%;border:1px solid #4b3c5c;border-radius:12px;background:#242331;text-align:left;color:#eee;padding:12px 15px;cursor:pointer}.novel-admin-item.active{border-color:#d5b4ff;background:#362c43}.novel-admin-item small{display:block;margin-top:3px;color:#bcb2c8}
.novel-form{display:grid;gap:15px}.novel-form>label{display:grid;gap:8px;color:#ddd1e8}.novel-form input:not([type=checkbox]):not([type=file]),.novel-form textarea,.novel-form .chapter-name,.novel-form .chapter-body{width:100%;background:#11131b;color:white;border:1px solid #544663;border-radius:11px;padding:12px;font:inherit}.novel-form textarea{resize:vertical}
.novel-options{display:flex;flex-wrap:wrap;gap:22px;color:#f1e4fa}.novel-options input{accent-color:#a883d2}
.novel-editor-chapter-heading{margin:20px 0 0}.novel-editor-chapters{display:grid;gap:14px}.novel-chapter-editor{padding:18px;border:1px solid #483852;border-radius:13px;background:#22212d}
.novel-chapter-top{display:flex;gap:10px;align-items:center;margin-bottom:12px}.novel-chapter-top input{flex:1}.novel-chapter-editor textarea{width:100%;min-height:185px}
.novel-chapter-controls{display:flex;gap:6px}.novel-chapter-controls button{border:1px solid #5c4c6d;background:#352a42;color:white;border-radius:8px;cursor:pointer;padding:7px}
.novel-editor-actions{display:flex;gap:12px;flex-wrap:wrap}.novel-danger{border:1px solid #a76779;background:transparent;color:#ffbfc9;border-radius:10px;padding:10px 15px;cursor:pointer}
@media(max-width:800px){.novel-editor-layout{grid-template-columns:1fr}.novel-chapter-top{flex-wrap:wrap}}

/* Public fiction shelf: reading cards and a single external Tavern doorway. */
body.novel-page .novel-shell{width:min(1120px,calc(100% - 36px));padding-top:34px}
body.novel-page [hidden]{display:none!important}
body.novel-page .novel-hero{
  position:relative;overflow:hidden;min-height:172px;
  margin-bottom:30px;padding:30px clamp(25px,3.5vw,43px);
  background:
    radial-gradient(ellipse at 91% 26%,rgba(146,108,165,.17),transparent 50%),
    radial-gradient(ellipse at 22% 120%,rgba(84,61,108,.11),transparent 72%),
    linear-gradient(110deg,#1b1924 0%,#1c1a24 70%,#201b2a 100%);
}
body.novel-page .novel-hero::after{
  content:"";position:absolute;right:55px;top:36px;width:140px;height:107px;
  border:1px solid rgba(194,158,212,.075);border-radius:60% 45% 8px 8px;
  box-shadow:0 0 75px 30px rgba(159,114,176,.035);
  transform:rotate(-8deg);pointer-events:none;
}
body.novel-page .novel-hero .eyebrow{
  margin:0 0 13px;font-size:clamp(12px,1.7vw,16px);letter-spacing:.09em;
  color:#bd9cd7;font-weight:600;
}
body.novel-page .novel-hero h1{
  margin:0 0 10px;font-size:clamp(31px,4vw,42px);line-height:1.23;
}
body.novel-page .novel-hero > p:last-child{
  position:relative;z-index:1;max-width:630px;margin:0;
  color:#beb2c9;font-size:clamp(12px,1.35vw,14px);line-height:1.85;
}
body.novel-page .novel-toolbar{align-items:end;margin-bottom:17px}
body.novel-page .novel-toolbar h2{font-size:clamp(21px,2.3vw,25px)}
body.novel-page .novel-toolbar span{font-size:12px;color:#ab9ab7}
body.novel-page .novel-grid{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;align-items:stretch;
}
body.novel-page .novel-card,body.novel-page .novel-tavern-card{
  min-width:0;display:flex;flex-direction:column;overflow:hidden;
  border:1px solid rgba(179,152,201,.28);border-radius:15px;
  background:linear-gradient(155deg,#201d2a,#191921 72%);
  box-shadow:0 9px 32px rgba(0,0,0,.15);
  transition:border-color .2s ease,transform .2s ease,box-shadow .2s ease;
}
body.novel-page .novel-card:hover,body.novel-page .novel-tavern-card:hover{
  border-color:rgba(211,168,232,.62);box-shadow:0 16px 36px rgba(0,0,0,.24);
  transform:translateY(-2px);
}
body.novel-page .novel-card-visual,body.novel-page .novel-tavern-art{
  height:clamp(205px,22vw,259px);flex:0 0 auto;
}
body.novel-page .novel-card-visual{background:linear-gradient(132deg,#493752,#242435 78%)}
body.novel-page .novel-cover-placeholder{
  font-size:47px;color:#c7addb;text-shadow:0 0 34px rgba(188,156,209,.3);
}
body.novel-page .novel-card-body,body.novel-page .novel-tavern-body{
  flex:1;display:flex;flex-direction:column;padding:23px 25px 24px;min-height:222px;
}
body.novel-page .novel-card h3,body.novel-page .novel-tavern-heading h3{
  margin:0 0 9px;color:#f3edf7;font-size:clamp(20px,2vw,24px);font-weight:580;
}
body.novel-page .novel-card-body > p,body.novel-page .novel-tavern-body > p{
  margin:0 0 16px;color:#bdb1c8;font-size:13px;line-height:1.85;
}
body.novel-page .novel-card-body > p{
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
}
body.novel-page .novel-card-meta{margin-top:auto;gap:12px;font-size:11px;color:#ba9ecf}
body.novel-page .novel-card a.novel-read-link,body.novel-page .novel-tavern-link{
  display:inline-flex;align-items:center;gap:13px;align-self:flex-start;
  margin-top:15px;font-size:14px;font-weight:580;
  color:#d8b6ed;text-decoration:none;text-underline-offset:5px;
}
body.novel-page .novel-card a.novel-read-link:hover,body.novel-page .novel-tavern-link[href]:hover{
  color:#f0dcff;text-decoration:underline;
}
/* Make the whole novel tile a single reading link, without nesting controls. */
body.novel-page .novel-card:has(.novel-read-link[href]){cursor:pointer}
body.novel-page .novel-card .novel-read-link[href]::before{
  content:"";position:absolute;inset:0;z-index:3;
}
body.novel-page .novel-card:focus-within{
  outline:2px solid #d8b6ed;outline-offset:4px;
}
body.novel-page .novel-card:focus-within .novel-read-link:focus-visible{
  outline:none;
}
/* Sensitive covers must remain independently revealable above the link overlay. */
body.novel-page .novel-card .novel-sensitive-eye{z-index:4}
body.novel-page .novel-card .novel-sensitive-eye:focus-visible{
  outline:2px solid #f0dcff;outline-offset:3px;
}
body.novel-page .novel-tavern-art{position:relative;overflow:hidden;background:#261e31}
body.novel-page .novel-tavern-art img{width:100%;height:100%;object-fit:cover;object-position:center}
body.novel-page .novel-tavern-art::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(17,14,25,.24),transparent 50%,rgba(19,15,25,.25));
}
body.novel-page .novel-tavern-art-label{
  position:absolute;z-index:1;left:19px;top:15px;color:#d5bfdd;
  font-size:10px;font-weight:600;letter-spacing:.17em;text-shadow:0 1px 10px #17101c;
}
body.novel-page .novel-tavern-card{position:relative;border-color:rgba(193,155,213,.42);scroll-margin-top:92px}
body.novel-page .novel-tavern-card:has(.novel-tavern-link[href]){cursor:pointer}
body.novel-page .novel-tavern-link[href]::before{
  content:"";position:absolute;inset:0;z-index:3;
}
body.novel-page .novel-tavern-card:focus-within{
  outline:2px solid #d8b6ed;outline-offset:4px;
}
body.novel-page .novel-tavern-card:focus-within .novel-tavern-link:focus-visible{
  outline:none;
}
body.novel-page .novel-tavern-heading{display:flex;align-items:baseline;flex-wrap:wrap;gap:10px}
body.novel-page .novel-tavern-heading span{
  color:#967fa5;font-size:10px;letter-spacing:.13em;font-weight:600;
}
body.novel-page .novel-tavern-bottom{
  display:flex;align-items:flex-end;justify-content:space-between;gap:10px;
  margin-top:auto;flex-wrap:wrap;
}
body.novel-page .novel-tavern-bottom .novel-tavern-link{margin:0}
body.novel-page .novel-tavern-link:not([href]){
  opacity:.55;cursor:not-allowed;text-decoration:none;
}
body.novel-page .novel-tavern-status{font-size:10px;color:#988ba4;line-height:1.6}
body.novel-page .novel-grid > .novel-empty{
  align-self:start;padding:22px;border:1px dashed rgba(190,155,210,.35);
  border-radius:14px;background:#17171d;font-size:13px;color:#b9adc3;
}
@media(max-width:760px){
  body.novel-page .novel-shell{width:min(540px,calc(100% - 28px));padding-top:22px}
  body.novel-page .novel-hero{min-height:0;margin-bottom:25px;padding:25px}
  body.novel-page .novel-hero::after{right:7px;opacity:.5}
  body.novel-page .novel-grid{grid-template-columns:minmax(0,1fr);gap:17px}
  body.novel-page .novel-card-visual,body.novel-page .novel-tavern-art{height:clamp(205px,52vw,265px)}
  body.novel-page .novel-card-body,body.novel-page .novel-tavern-body{padding:22px;min-height:196px}
}
@media(prefers-reduced-motion:reduce){
  body.novel-page .novel-card,body.novel-page .novel-tavern-card{transition:none;transform:none!important}
}