@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,500;0,700;0,900;1,500;1,700&family=Crimson+Pro:ital,wght@0,300;0,400;0,600;1,300;1,400&family=Outfit:wght@300;400;500;600;700&display=swap');

:root {
  --bg:#080b10; --surface:#0e1219; --surface2:#141820; --surface3:#1c2230;
  --border:#232c3a; --border2:#2d3a4d;
  --accent:#38bdf8; --accent2:#818cf8; --accent3:#fb7185;
  --gold:#f59e0b; --green:#10b981; --red:#f43f5e;
  --text:#dde6f0; --text2:#7a8fa8; --text3:#3d4f63;
  --font-display:'Playfair Display',serif;
  --font-body:'Crimson Pro',serif;
  --font-ui:'Outfit',sans-serif;
  --r:12px; --r-sm:8px; --r-lg:18px; --r-xl:24px;
  --shadow:0 16px 48px rgba(0,0,0,.6);
  --shadow-sm:0 4px 16px rgba(0,0,0,.4);
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--text);font-family:var(--font-ui);min-height:100vh;-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{cursor:pointer;font-family:var(--font-ui);border:none;background:none}
input,textarea,select{font-family:var(--font-ui);outline:none}

body::after{content:'';position:fixed;inset:0;pointer-events:none;opacity:.025;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size:200px;z-index:9999}

::-webkit-scrollbar{width:5px}
::-webkit-scrollbar-track{background:var(--surface)}
::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px}

@keyframes fadeUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
@keyframes scalein{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}

.fade-up{animation:fadeUp .35s ease both}
.fade-in{animation:fadeIn .25s ease both}

.skeleton{background:linear-gradient(90deg,var(--surface2) 25%,var(--surface3) 50%,var(--surface2) 75%);
  background-size:200% 100%;animation:shimmer 1.6s infinite;border-radius:var(--r-sm)}

/* ── Navbar ── */
.navbar{position:sticky;top:0;z-index:100;height:60px;
  background:rgba(8,11,16,.94);backdrop-filter:blur(20px);
  border-bottom:1px solid var(--border);
  display:flex;align-items:center;gap:4px;padding:0 28px}
.navbar-brand{display:flex;align-items:center;gap:10px;margin-right:14px;flex-shrink:0;cursor:pointer}
.navbar-logo{width:32px;height:32px;border-radius:9px;
  background:linear-gradient(135deg,var(--accent),var(--accent2));
  display:flex;align-items:center;justify-content:center}
.navbar-name{font-family:var(--font-display);font-style:italic;font-size:18px;font-weight:700;
  background:linear-gradient(90deg,var(--accent),var(--accent2));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent}
.nav-link{display:flex;align-items:center;gap:6px;padding:7px 12px;border-radius:var(--r-sm);
  font-size:13px;font-weight:500;color:var(--text2);transition:all .15s;white-space:nowrap;cursor:pointer}
.nav-link:hover{color:var(--text);background:var(--surface2)}
.nav-link.active{color:var(--accent);background:var(--surface2)}
.navbar-right{margin-left:auto;display:flex;align-items:center;gap:8px}
.nav-search{position:relative;flex-shrink:0}
.nav-search input{background:var(--surface2);border:1px solid var(--border);border-radius:20px;
  padding:7px 14px 7px 34px;font-size:13px;color:var(--text);width:180px;transition:all .2s}
.nav-search input:focus{border-color:var(--accent);width:230px;outline:none}
.nav-search .icon{position:absolute;left:11px;top:50%;transform:translateY(-50%);pointer-events:none}

/* ── Avatar dropdown ── */
.avatar-wrap{position:relative}
.avatar-wrap img{width:34px;height:34px;border-radius:50%;border:2px solid var(--accent);
  cursor:pointer;object-fit:cover;background:var(--surface3)}
.dropdown{display:none;position:absolute;right:0;top:44px;background:var(--surface);
  border:1px solid var(--border2);border-radius:var(--r);padding:6px;
  min-width:190px;box-shadow:var(--shadow);z-index:200;animation:fadeUp .2s ease}
.dropdown.open{display:block}
.dropdown-head{padding:8px 12px 10px;border-bottom:1px solid var(--border);margin-bottom:4px}
.dropdown-head .uname{font-weight:600;font-size:13px}
.dropdown-head .uemail{font-size:11px;color:var(--text2);margin-top:1px}
.dropdown-item{display:flex;align-items:center;gap:9px;padding:8px 12px;border-radius:var(--r-sm);
  font-size:13px;color:var(--text);transition:background .12s;width:100%;text-align:left;cursor:pointer}
.dropdown-item:hover{background:var(--surface2)}
.dropdown-item.danger{color:var(--red)}
.dd-divider{height:1px;background:var(--border);margin:4px 0}

/* ── Buttons ── */
.btn{display:inline-flex;align-items:center;gap:7px;padding:9px 20px;border-radius:30px;
  font-size:13px;font-weight:600;font-family:var(--font-ui);border:none;cursor:pointer;
  transition:opacity .15s,transform .15s;white-space:nowrap}
.btn:active{transform:scale(.97)}
.btn-primary{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#08111a}
.btn-primary:hover{opacity:.88}
.btn-outline{background:var(--surface2);border:1px solid var(--border);color:var(--text)}
.btn-outline:hover{border-color:var(--accent);color:var(--accent)}
.btn-ghost{background:transparent;color:var(--text2)}
.btn-ghost:hover{color:var(--text);background:var(--surface2)}
.btn-danger{background:rgba(244,63,94,.12);border:1px solid rgba(244,63,94,.3);color:var(--red)}
.btn-sm{padding:6px 14px;font-size:12px}
.btn-icon{padding:8px;border-radius:var(--r-sm)}

/* ── Form fields ── */
.field{margin-bottom:18px}
.field label{display:block;font-size:11px;font-weight:600;color:var(--text2);
  letter-spacing:.7px;text-transform:uppercase;margin-bottom:7px}
.inp,.sel,.tarea{width:100%;padding:11px 14px;border-radius:var(--r-sm);
  border:1px solid var(--border);background:var(--surface2);color:var(--text);
  font-size:14px;font-family:var(--font-ui);transition:border-color .2s}
.inp:focus,.tarea:focus,.sel:focus{border-color:var(--accent)}
.tarea{resize:vertical;line-height:1.75}
.sel{appearance:none;cursor:pointer}
.field-error{font-size:12px;color:var(--red);margin-top:5px;display:none}
.field-error.show{display:block}

/* ── Cards ── */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden}
.card-hover{transition:transform .2s,box-shadow .2s,border-color .2s;cursor:pointer}
.card-hover:hover{transform:translateY(-3px);box-shadow:0 16px 48px rgba(0,0,0,.45);border-color:var(--accent)}

/* Cover gradients */
.cg-0{background:linear-gradient(160deg,#0c1445,#1a2a6c,#b21f1f)}
.cg-1{background:linear-gradient(160deg,#0f0c29,#302b63,#24243e)}
.cg-2{background:linear-gradient(160deg,#1a0533,#3a0a5e,#7b2ff7)}
.cg-3{background:linear-gradient(160deg,#0d1b2a,#1b4332,#40916c)}
.cg-4{background:linear-gradient(160deg,#1a0000,#3d0000,#c0392b)}
.cg-5{background:linear-gradient(160deg,#0a1628,#1e3a5f,#2980b9)}
.cg-6{background:linear-gradient(160deg,#1c0030,#4a0060,#9b59b6)}
.cg-7{background:linear-gradient(160deg,#001a2c,#003d5b,#0077b6)}
.cg-8{background:linear-gradient(160deg,#1a1200,#3d2c00,#d4a017)}
.cg-9{background:linear-gradient(160deg,#001414,#003333,#00897b)}
.cg-10{background:linear-gradient(160deg,#14001e,#380050,#6a0dad)}
.cg-11{background:linear-gradient(160deg,#0a1a00,#1f4500,#2d7a00)}

/* ── Tags ── */
.tag{display:inline-block;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:500;
  background:var(--surface2);border:1px solid var(--border);color:var(--text2);white-space:nowrap}
.tag-blue{background:rgba(56,189,248,.12);border-color:rgba(56,189,248,.3);color:var(--accent)}
.tag-complete{background:rgba(16,185,129,.12);border-color:rgba(16,185,129,.35);color:var(--green)}
.tag-ongoing{background:rgba(245,158,11,.1);border-color:rgba(245,158,11,.3);color:var(--gold)}

/* ── Stats ── */
.stats-row{display:flex;align-items:center;gap:14px}
.stat{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--text3)}

/* ── Toast ── */
#toast-container{position:fixed;bottom:24px;right:24px;z-index:9998;display:flex;flex-direction:column;gap:10px}
.toast{padding:13px 18px;border-radius:var(--r);font-size:13px;font-weight:500;
  max-width:320px;animation:fadeUp .3s ease;box-shadow:var(--shadow)}
.toast-success{background:rgba(16,185,129,.18);border:1px solid rgba(16,185,129,.4);color:var(--green)}
.toast-error{background:rgba(244,63,94,.16);border:1px solid rgba(244,63,94,.4);color:var(--red)}
.toast-info{background:rgba(56,189,248,.14);border:1px solid rgba(56,189,248,.35);color:var(--accent)}

/* ── Section heading ── */
.sec-head{display:flex;align-items:center;gap:10px;margin-bottom:20px}
.sec-title{font-family:var(--font-display);font-size:18px;font-weight:700}

/* ── Story grid ── */
.story-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:16px}

/* ── Story card ── */
.story-card{display:flex;flex-direction:column}
.story-card .cover{height:176px;position:relative;overflow:hidden;flex-shrink:0}
.story-card .cover img{width:100%;height:100%;object-fit:cover}
.story-card .cover-overlay{position:absolute;inset:0;
  background:linear-gradient(to top,rgba(0,0,0,.7) 0%,transparent 55%);
  display:flex;align-items:flex-end;padding:12px;justify-content:space-between}
.story-card .body{padding:13px 14px;flex:1;display:flex;flex-direction:column;gap:9px}
.story-card .title{font-family:var(--font-display);font-weight:700;font-size:14px;
  line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.story-card .author-row{display:flex;align-items:center;gap:6px}
.story-card .author-row img{width:17px;height:17px;border-radius:50%;background:var(--surface3)}
.story-card .author-name{font-size:11px;color:var(--text2);font-weight:500}
.story-card .fandom{font-size:11px;color:var(--text3)}
.story-card .summary{font-size:13px;color:var(--text2);line-height:1.65;flex:1;
  font-family:var(--font-body);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.story-card .card-footer{display:flex;gap:12px;padding-top:8px;border-top:1px solid var(--border)}

/* ── Modal ── */
.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.75);z-index:500;
  display:none;align-items:center;justify-content:center;backdrop-filter:blur(4px)}
.modal-backdrop.open{display:flex}
.modal{background:var(--surface);border:1px solid var(--border2);border-radius:var(--r-xl);
  padding:32px;width:100%;max-width:480px;box-shadow:var(--shadow);animation:scalein .25s ease}
.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}
.modal-title{font-family:var(--font-display);font-size:20px;font-weight:700}

/* ── Offline banner ── */
.offline-banner{display:none;align-items:center;gap:10px;padding:10px 16px;
  background:rgba(244,63,94,.1);border-bottom:1px solid rgba(244,63,94,.25);
  font-size:13px;color:var(--red)}
.offline-banner.show{display:flex}

/* ── Page wrapper ── */
.page{max-width:1280px;margin:0 auto;padding:0 24px 80px}
.page-sm{max-width:860px;margin:0 auto;padding:0 24px 80px}
.page-header{padding:32px 0 24px}
.page-title{font-family:var(--font-display);font-size:24px;font-weight:700;margin-bottom:6px}
.page-sub{font-size:14px;color:var(--text2)}

/* ── Spinner ── */
.spinner{width:36px;height:36px;border:3px solid var(--border2);
  border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite}

/* ── Empty state ── */
.empty-state{text-align:center;padding:64px 24px;color:var(--text2)}
.empty-state svg{margin:0 auto 16px;opacity:.4}
.empty-state h3{font-family:var(--font-display);font-size:18px;color:var(--text);margin-bottom:8px}
.empty-state p{font-size:14px;line-height:1.6}

/* ── Back link ── */
.back-link{display:inline-flex;align-items:center;gap:5px;font-size:13px;
  color:var(--accent);font-weight:500;margin-bottom:20px;cursor:pointer}
.back-link:hover{opacity:.8}

/* ── Responsive ── */
@media(max-width:768px){
  .navbar{padding:0 16px}
  .nav-link span{display:none}
  .page,.page-sm{padding:0 16px 60px}
  .story-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}
}
