/* Study Library - dual-mode premium design */
:root{
  --bg:#faf8f5;--bg2:#f3f0ea;--card:#ffffff;--ink:#23272f;--ink-soft:#5a6270;
  --accent:#1f4e79;--accent-2:#2f6db3;--line:rgba(31,78,121,.14);
  --shadow:0 1px 2px rgba(31,42,68,.06),0 8px 24px rgba(31,42,68,.08);
  --shadow-lg:0 12px 40px rgba(31,42,68,.14);
  --radius:14px;--font:"Manrope",system-ui,"Segoe UI",Roboto,sans-serif;
  --glow:none;--fog:none;
}
body.devil{
  --bg:#07030a;--bg2:#0d0510;--card:#150710;--ink:#ffd9d9;--ink-soft:#e4b4b4;
  --accent:#ff1a2e;--accent-2:#ff5566;--line:rgba(255,26,46,.22);
  --shadow:0 1px 2px rgba(0,0,0,.5),0 8px 30px rgba(255,10,30,.12);
  --shadow-lg:0 12px 46px rgba(255,10,30,.22);
  --glow:0 0 18px rgba(255,20,40,.5);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:var(--font);color:var(--ink);
  background:var(--bg);
  background-image:radial-gradient(1100px 500px at 80% -10%,rgba(47,109,179,.08),transparent 60%),
                   radial-gradient(900px 480px at 0% 0%,rgba(31,78,121,.06),transparent 55%);
  background-attachment:fixed;
  transition:background-color .5s,color .5s}
body.devil{
  background-image:radial-gradient(1000px 520px at 85% -10%,rgba(255,26,46,.16),transparent 60%),
                   radial-gradient(900px 500px at 5% 0%,rgba(120,10,25,.22),transparent 55%),
                   linear-gradient(180deg,#0a0308,#07030a);
}
/* devil fog layers */
body.devil::before,body.devil::after{content:"";position:fixed;pointer-events:none;z-index:0;
  width:60vmax;height:38vmax;border-radius:50%;filter:blur(90px);opacity:.16;background:#ff1a2e}
body.devil::before{left:-15vmax;top:20vh}
body.devil::after{right:-18vmax;bottom:-6vh;opacity:.10}
@keyframes fogA{from{transform:translate(0,0) scale(1)}to{transform:translate(9vw,-6vh) scale(1.15)}}
@keyframes fogB{from{transform:translate(0,0) scale(1.1)}to{transform:translate(-8vw,-8vh) scale(.95)}}
::selection{background:var(--accent);color:#fff}
/* custom scrollbar */
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:rgba(31,78,121,.35);border-radius:8px;border:2px solid transparent;background-clip:content-box}
body.devil ::-webkit-scrollbar-thumb{background:rgba(255,26,46,.45);border:2px solid transparent;background-clip:content-box}

main,.site-header,.top-nav{position:relative;z-index:1}
.site-header{padding:1.2rem 1rem .2rem;text-align:center}
.hero-panel{max-width:880px;margin:0 auto;padding:2.6rem 1.6rem 2.2rem;
  background:linear-gradient(150deg,rgba(255,255,255,.92),rgba(244,240,233,.86));
  border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow-lg);
  backdrop-filter:blur(8px);
  background-image:radial-gradient(600px 220px at 85% -20%,rgba(47,109,179,.14),transparent 65%),
                   radial-gradient(500px 200px at 5% 110%,rgba(31,78,121,.10),transparent 60%)}
.hero-kicker{margin:0 0 .4rem;font-size:.78rem;font-weight:800;letter-spacing:.18em;text-transform:uppercase;
  color:var(--accent-2);animation:riseIn .7s ease both}
.site-header h1{margin:0;font-size:clamp(1.9rem,4.6vw,2.9rem);letter-spacing:-.02em;color:var(--ink);
  animation:riseIn .7s ease both}
body.devil .site-header h1{font-family:"Cinzel",serif;font-weight:800;letter-spacing:.12em;color:#ffdddd;
  text-shadow:0 0 24px rgba(255,26,46,.65),0 0 60px rgba(255,26,46,.3)}
.tagline{margin:.6rem auto 0;color:var(--ink-soft);max-width:560px;animation:riseIn .7s .08s ease both}
.hero-stats{display:flex;justify-content:center;gap:1.6rem;margin:1.1rem 0 0;color:var(--ink-soft);
  font-size:.86rem;animation:riseIn .7s .16s ease both}
.hero-stats b{color:var(--accent);font-weight:800;margin-right:.25rem}
body.devil .hero-stats b{color:var(--accent-2);text-shadow:var(--glow)}
@keyframes riseIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

.top-nav{position:sticky;top:0;z-index:30;display:flex;justify-content:space-between;align-items:center;
  gap:1rem;padding:.7rem clamp(1rem,4vw,2.4rem);
  background:rgba(250,248,245,.82);backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line)}
.top-nav .brand{font-weight:800;letter-spacing:-.01em;color:var(--accent);font-size:1.02rem;white-space:nowrap}
.top-nav .nav-links{display:flex;gap:1.3rem;flex-wrap:wrap;align-items:center}
.top-nav a,.top-nav button{color:var(--accent);font-weight:700;text-decoration:none;background:none;border:0;
  font-size:.95rem;padding:.35rem .2rem;cursor:pointer;position:relative;font-family:var(--font)}
.top-nav a::after,.top-nav button::after{content:"";position:absolute;left:0;bottom:-2px;height:2px;width:0;
  background:var(--accent);transition:width .25s ease}
.top-nav a:hover::after,.top-nav button:hover::after{width:100%}
body.devil .top-nav a,body.devil .top-nav button{color:var(--accent-2)}
body.devil .top-nav a::after,body.devil .top-nav button::after{background:var(--accent);box-shadow:0 0 8px var(--accent)}

.search-section{display:flex;justify-content:center;padding:.8rem 1rem 1.4rem;animation:riseIn .7s .24s ease both}
#search{width:min(92vw,640px);padding:.95rem 1.2rem;font-size:1rem;border:1.5px solid var(--line);
  border-radius:999px;background:var(--card);color:var(--ink);box-shadow:var(--shadow);
  transition:box-shadow .25s,border-color .25s;font-family:var(--font)}
#search:focus{outline:none;border-color:var(--accent);box-shadow:var(--shadow-lg)}
body.devil #search{border-color:var(--line)}
body.devil #search:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(255,26,46,.18),var(--glow)}

main{max-width:960px;margin:0 auto;padding:0 1rem 3rem}
section h2{font-size:1.35rem;letter-spacing:-.01em;margin:1.6rem 0 .8rem;color:var(--ink)}
body.devil section h2{font-family:"Cinzel",serif;letter-spacing:.08em;color:#ffcccc;text-shadow:var(--glow)}

/* subject cards */
#subject-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.8rem;margin:.4rem 0 1rem}
.subject-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:1rem .9rem;box-shadow:var(--shadow);cursor:pointer;text-align:left;
  transition:transform .22s ease,box-shadow .22s ease,border-color .22s;position:relative;overflow:hidden;
  font-family:var(--font)}
.subject-card::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:var(--sc,var(--accent))}
.subject-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg);border-color:var(--sc,var(--accent))}
.subject-card .sc-icon{font-size:1.35rem;line-height:1}
.subject-card .sc-name{display:block;font-weight:800;margin:.45rem 0 .1rem;color:var(--ink)}
.subject-card .sc-count{font-size:.78rem;color:var(--ink-soft)}
body.devil .subject-card:hover{box-shadow:0 12px 40px rgba(255,10,30,.28)}
body.devil .subject-card .sc-name{color:#ffdede}

/* quick access chips */
#quick-access{display:flex;gap:.5rem;flex-wrap:wrap;margin:.2rem 0 1.2rem}
.chip{border:1px solid var(--line);background:var(--card);color:var(--accent);border-radius:999px;
  padding:.4rem .9rem;font-size:.82rem;font-weight:700;cursor:pointer;box-shadow:var(--shadow);
  transition:transform .18s,box-shadow .18s;font-family:var(--font)}
.chip:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}
body.devil .chip{color:var(--accent-2)}

/* collapsible subject groups */
.subject-group{margin:.5rem 0;border:1px solid var(--line);border-radius:var(--radius);
  background:var(--card);overflow:hidden;box-shadow:var(--shadow)}
.subject-group>summary{cursor:pointer;font-weight:800;padding:.95rem 1.1rem;list-style:none;
  display:flex;justify-content:space-between;align-items:center;color:var(--ink)}
.subject-group>summary::-webkit-details-marker{display:none}
.subject-group>summary::after{content:"+";font-weight:400;font-size:1.2rem;color:var(--accent);transition:transform .25s}
.subject-group[open]>summary::after{transform:rotate(45deg)}
body.devil .subject-group>summary::after{color:var(--accent);text-shadow:var(--glow)}
.subject-group .result-card{border:0;border-top:1px solid var(--line);border-radius:0;margin:0;box-shadow:none}

.result-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:.95rem 1.1rem;margin:.6rem 0;display:flex;justify-content:space-between;gap:1rem;
  align-items:center;box-shadow:var(--shadow);transition:transform .18s,box-shadow .18s}
.result-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.result-card strong{font-weight:700}
.result-card small{color:var(--ink-soft)}
.result-card a{color:var(--accent);white-space:nowrap;flex-shrink:0;font-weight:700;text-decoration:none;
  border:1.5px solid var(--line);border-radius:999px;padding:.35rem .9rem;transition:background .18s,color .18s}
.result-card a:hover{background:var(--accent);color:#fff}
body.devil .result-card a{color:var(--accent-2)}
body.devil .result-card a:hover{background:var(--accent);color:#fff;box-shadow:var(--glow)}
.badge{font-size:.75rem;background:var(--accent);color:#fff;border-radius:999px;padding:.15rem .6rem;white-space:nowrap}
#no-results{color:var(--ink-soft);text-align:center;padding:1.4rem}

/* premium */
#premium-list .result-card button{white-space:nowrap}
button{background:var(--accent);color:#fff;border:0;border-radius:10px;padding:.65rem 1.1rem;cursor:pointer;
  font-weight:700;font-family:var(--font);transition:transform .15s,box-shadow .2s,opacity .2s}
button:hover:not(:disabled){transform:translateY(-1px);box-shadow:var(--shadow-lg)}
button:disabled{opacity:.55;cursor:not-allowed}
body.devil button{background:linear-gradient(160deg,#ff1a2e,#a30e1e);box-shadow:0 6px 20px rgba(255,10,30,.3)}
.error{color:#c00}

/* reader */
#reader{margin-top:1rem;border:1.5px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-lg)}
.reader-toolbar{display:flex;justify-content:space-between;align-items:center;background:var(--card);padding:.55rem .9rem}
#reader-canvas-wrap{max-height:72vh;overflow:auto;background:#333;display:flex;justify-content:center;align-items:flex-start}
#reader-canvas-wrap canvas{margin:8px 0}
.reader-loading{color:#fff;padding:1rem}
#reader-pager{gap:.5rem;flex-wrap:wrap}
#reader-pager button{padding:.3rem .7rem}
#reader-page-label{color:var(--ink-soft);font-size:.85rem;white-space:nowrap}
#reader-jump{width:4.2rem;padding:.25rem .4rem;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:8px}

/* chat */
#chat-fab{position:fixed;right:1.2rem;bottom:1.2rem;width:56px;height:56px;border-radius:50%;font-size:1.4rem;
  box-shadow:var(--shadow-lg);z-index:20}
body.devil #chat-fab{box-shadow:0 0 22px rgba(255,26,46,.6)}
#chat-panel{position:fixed;right:1rem;bottom:5.2rem;width:min(92vw,370px);height:62vh;background:var(--card);
  border:1.5px solid var(--line);border-radius:18px;display:flex;flex-direction:column;z-index:21;overflow:hidden;
  box-shadow:var(--shadow-lg)}
body.devil #chat-panel{background:rgba(21,7,16,.86);backdrop-filter:blur(14px);box-shadow:0 0 40px rgba(255,10,30,.28)}
.chat-header{display:flex;justify-content:space-between;align-items:center;padding:.65rem .9rem;
  border-bottom:1px solid var(--line);font-weight:800}
body.devil .chat-header{font-family:"Cinzel",serif;letter-spacing:.1em;color:#ffcccc;text-shadow:var(--glow)}
#chat-close{background:none;color:var(--ink-soft);font-size:1rem;padding:.2rem .5rem;box-shadow:none}
#chat-log{flex:1;overflow:auto;padding:.65rem;display:flex;flex-direction:column;gap:.45rem}
.msg{max-width:85%;padding:.55rem .75rem;border-radius:12px;font-size:.92rem;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;
  animation:msgIn .25s ease both}
@keyframes msgIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.msg.user{align-self:flex-end;background:var(--accent);color:#fff}
.msg a{color:var(--accent);text-decoration:underline;overflow-wrap:anywhere}
a.tutor-handoff{display:inline-block;background:var(--accent);color:#fff;text-decoration:none;padding:.45rem .8rem;border-radius:10px;font-weight:600}
.msg.user a{color:#fff}
.msg.bot{align-self:flex-start;background:var(--bg2);color:var(--ink)}
body.devil .msg.bot{background:#2a070d;color:var(--ink)}
#chat-form{display:flex;gap:.4rem;padding:.55rem;border-top:1px solid var(--line)}
#chat-input{flex:1;padding:.6rem;border-radius:10px;border:1.5px solid var(--line);background:var(--bg);
  color:var(--ink);font-family:var(--font)}
#chat-input:focus{outline:none;border-color:var(--accent)}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* devil fx canvas + cursor */
#cursor-glow{position:fixed;width:22px;height:22px;border-radius:50%;pointer-events:none;z-index:98;
  background:radial-gradient(circle,rgba(255,40,60,.55),transparent 70%);transform:translate(-50%,-50%);
  display:none}
body.devil #cursor-glow{display:block}

/* activation overlay */
#activation-overlay{position:fixed;inset:0;z-index:99;pointer-events:none;visibility:hidden}
#activation-overlay.on{visibility:visible}
#ov-dark{position:absolute;inset:0;background:#000;opacity:0}
#ov-red{position:absolute;inset:0;opacity:0;
  background:radial-gradient(circle at 50% 50%,rgba(255,26,46,.9),rgba(120,5,15,.6) 45%,transparent 72%);
  transform:scale(.2)}
#ov-pulse{position:absolute;top:0;bottom:0;width:120px;left:-160px;opacity:0;
  background:linear-gradient(90deg,transparent,rgba(255,80,90,.85),transparent);filter:blur(6px)}
body.activating main,body.activating .site-header,body.activating .top-nav{animation:glitch .5s steps(2) 2}
@keyframes glitch{
  0%{clip-path:inset(0 0 0 0);transform:translate(0)}
  20%{clip-path:inset(12% 0 62% 0);transform:translate(-6px,2px)}
  40%{clip-path:inset(58% 0 8% 0);transform:translate(5px,-2px)}
  60%{clip-path:inset(28% 0 40% 0);transform:translate(-4px,1px)}
  80%{clip-path:inset(70% 0 4% 0);transform:translate(6px,-1px)}
  100%{clip-path:inset(0 0 0 0);transform:translate(0)}}
.reveal-item{animation:riseIn .6s ease both}

body.devil 
[hidden]{display:none!important}
footer{text-align:center;padding:1.4rem;color:var(--ink-soft);font-size:.85rem;position:relative;z-index:1}

@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  body.devil::before,body.devil::after{display:none}
}
@media (max-width:600px){
  .top-nav{flex-wrap:wrap;justify-content:center;row-gap:.2rem}
  .top-nav .nav-links{justify-content:center}
        .result-card{flex-direction:column;align-items:flex-start;gap:.5rem}
  .hero-stats{flex-wrap:wrap;gap:.6rem 1.2rem}
  #subject-cards{grid-template-columns:repeat(2,1fr)}
}

/* latest editions */
.h2-sub{font-size:.8rem;font-weight:700;color:var(--accent-2);vertical-align:middle;
  border:1px solid var(--line);border-radius:999px;padding:.1rem .6rem;margin-left:.4rem}
#latest-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:.7rem}
.latest-card{margin:0;animation:riseIn .5s ease both}
.subject-card{animation:riseIn .5s ease both}
.ink-soft{color:var(--ink-soft)}
/* devil-mode counterparts for new chrome */
body.devil .top-nav{background:rgba(10,3,8,.82);border-bottom-color:var(--line)}
body.devil .top-nav .brand{font-family:"Cinzel",serif;letter-spacing:.1em;color:#ffcccc;text-shadow:var(--glow)}
body.devil .hero-panel{background:linear-gradient(150deg,rgba(21,7,16,.92),rgba(13,5,16,.86));
  background-image:radial-gradient(600px 220px at 85% -20%,rgba(255,26,46,.14),transparent 65%),
                   radial-gradient(500px 200px at 5% 110%,rgba(120,10,25,.16),transparent 60%)}
body.devil .site-header h1{color:#ffdddd}
body.devil .hero-kicker{color:var(--accent-2);text-shadow:var(--glow)}
body.devil .h2-sub{color:var(--accent-2);border-color:var(--line)}

/* devil subject cards: dark glass with red edge, not solid red */
body.devil .subject-card{background:linear-gradient(160deg,#210a11,#14060c);border-color:rgba(255,26,46,.32);
  box-shadow:0 8px 26px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,90,110,.12)}
body.devil .subject-card .sc-count{color:#d89a9a}

/* reliable svg subject icons */
.subject-card .sc-icon{display:block;width:26px;height:26px;color:var(--sc,var(--accent))}
/* devil contrast pass */
body.devil #search{color:#ffd9d9}
body.devil #search::placeholder{color:#b47f7f}
body.devil .chip{background:#241016;color:#ff9aa8;border-color:rgba(255,26,46,.3)}
body.devil .result-card small{color:#d89a9a}

/* bat swarm (one-shot, self-removing) */
#bats-layer{position:fixed;inset:0;z-index:60;pointer-events:none;overflow:hidden}
.bat{position:absolute;color:#ffabb5;opacity:0;filter:drop-shadow(0 0 3px #530719) drop-shadow(0 0 8px rgba(255,45,75,.8))}
.bat svg{display:block;width:100%;height:auto}

/* richer devil detailing (static) */
body.devil .site-header{border-bottom:1px solid rgba(255,45,45,.35);box-shadow:0 1px 24px rgba(255,45,45,.12)}
body.devil h1,body.devil h2{letter-spacing:.06em;text-shadow:0 0 18px rgba(255,45,45,.25)}
body.devil h2::after{content:"";display:block;width:64px;height:2px;margin:.5rem auto 0;background:linear-gradient(90deg,transparent,var(--accent-2),transparent)}
body.devil .result-card,body.devil .subject-card,body.devil .latest-card{border-color:rgba(255,45,45,.30);box-shadow:inset 0 0 22px rgba(120,0,0,.18),0 2px 14px rgba(0,0,0,.45)}
body.devil .top-nav a{letter-spacing:.04em}
body.devil{background-image:radial-gradient(ellipse 80% 50% at 50% -10%,rgba(120,10,10,.25),transparent)}

/* Fix: author display:flex on #chat-panel was overriding the UA [hidden] rule,
   so the close button could never hide the panel. */
#chat-panel[hidden]{display:none}

#reader{scroll-margin-top:84px}
#chat-fab{font-family:'Noto Color Emoji','Apple Color Emoji','Segoe UI Emoji',sans-serif}

/* Reader must clear wrapped mobile navigation. */
@media(max-width:600px){#reader{scroll-margin-top:150px}.reader-toolbar{gap:.6rem;align-items:flex-start}#reader-title{min-width:0;overflow-wrap:anywhere}#reader-close{flex:none}#reader-pager{align-items:center}}

/* Book-specific index: scrolling stays inside the dialog on small screens. */
#book-index {box-sizing:border-box;width:min(720px,calc(100% - 24px));max-height:85dvh;padding:24px;border:1px solid #893a46;border-radius:18px;background:#19141c;color:#fff;box-shadow:0 24px 90px #000a;}
#book-index::backdrop {background:#08060cc9;backdrop-filter:blur(5px);}
.book-index-head {display:flex;align-items:flex-start;justify-content:space-between;gap:16px;}
.book-index-eyebrow {font-size:11px;letter-spacing:.16em;color:#f4a4ae;margin:0 0 7px;}
#book-index-title {font-size:21px;line-height:1.3;margin:0;}
#book-index-close {flex:none;position:sticky;top:0;min-height:44px;padding:9px 16px;cursor:pointer;border-radius:10px;background:#e74e63;color:#fff;border:1px solid #fa8292;font-weight:700;}
#book-index-note {font-size:13px;line-height:1.6;color:#c9c1cd;margin:18px 0;}
.book-index-scroll {overflow:auto;max-height:53dvh;}
#book-index table {width:100%;border-collapse:collapse;font-size:14px;line-height:1.5;}
#book-index th {text-align:left;font-size:12px;color:#f6b0ba;background:#291c28;position:sticky;top:0;}
#book-index td,#book-index th {padding:11px 10px;border-bottom:1px solid #ffffff18;vertical-align:top;}
#book-index td:last-child,#book-index th:last-child {text-align:right;white-space:nowrap;}
#book-index td:first-child {color:#d19aa5;width:30px;}
@media(max-width:480px){#book-index{padding:18px 14px;}#book-index-title{font-size:17px;}#book-index table{font-size:12px;}#book-index td,#book-index th{padding:10px 6px;}.book-index-head{gap:10px;}}
/* Class-first redesign: same reading and access controls, clearer study paths. */
:root{--bg:#f6f8fc;--bg2:#ecf1f8;--card:#fff;--ink:#162b48;--ink-soft:#68788d;--accent:#315fb4;--accent-2:#5278bd;--line:#dfe6ef;--radius:18px;}
body.dark:not(.devil){--bg:#111b2c;--bg2:#17243a;--card:#1d2b40;--ink:#e7edf7;--ink-soft:#acb8c9;--accent:#a2bfff;--accent-2:#a2bfff;--line:#34435a;}
[hidden]{display:none!important;}
body{background-image:none;}
.top-nav{max-width:none;padding:15px max(24px,calc((100vw - 1180px)/2));background:var(--card);gap:20px;box-shadow:none;backdrop-filter:none;}
.top-nav .brand{display:flex;gap:11px;align-items:center;color:var(--ink);font-size:16px;letter-spacing:-.03em;}
.top-nav .brand::after{display:none;}.brand-symbol{display:grid;place-items:center;width:32px;height:36px;background:var(--accent);color:var(--card);border-radius:9px 9px 14px 9px;font-weight:800;font-size:20px;}
.top-nav button{min-height:44px;font-size:13px;}.nav-actions{display:flex;align-items:center;gap:20px;}#nav-bot{background:var(--accent);border-radius:10px;padding:10px 15px;color:var(--card);}.top-nav #nav-bot::after{display:none;}
#site-menu{position:fixed;top:78px;left:max(16px,calc((100vw - 1180px)/2));width:270px;z-index:50;background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow-lg);border-radius:16px;padding:12px;}
#site-menu a{display:block;padding:13px 14px;color:var(--ink);text-decoration:none;border-radius:8px;font-size:14px;}#site-menu a:hover{background:var(--bg2);}
.site-header{padding:65px 24px 0;text-align:left;}.hero-panel{max-width:1120px;padding:0 0 30px;background:none;background-image:none;border:0;border-radius:0;box-shadow:none;backdrop-filter:none;}
.hero-kicker,.eyebrow{font-size:10px;font-weight:800;letter-spacing:.16em;color:var(--accent);margin:0 0 14px;}.site-header h1{font-size:clamp(32px,4.3vw,55px);line-height:1.18;letter-spacing:-.045em;max-width:800px;font-weight:800;}.tagline{margin:18px 0 28px;line-height:1.8;font-size:14px;max-width:580px;}
.class-picker{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:32px 0 20px;max-width:780px;}.class-picker a{padding:25px 28px;background:#243e66;color:#fff;text-decoration:none;border-radius:19px;display:flex;flex-direction:column;gap:12px;box-shadow:0 10px 25px #17325c15;}.class-picker a:nth-child(2){background:#e7edf8;color:#213d69;}.class-picker a>span{font-size:9px;letter-spacing:.14em;opacity:.75;font-weight:800;}.class-picker strong{font-size:28px;letter-spacing:-.03em;}.class-picker i{float:right;font-style:normal;font-weight:400;}.class-picker small{font-size:12px;opacity:.8;}.hero-stats{justify-content:flex-start;gap:24px;font-size:9px;font-weight:700;letter-spacing:.08em;margin:22px 0 0;}.hero-stats span+span:before{content:'·';margin-right:24px;}
main{max-width:1168px;padding:0 24px 45px;}.search-section{background:var(--card);border:1px solid var(--line);border-radius:13px;padding:4px 8px 4px 18px;display:flex;align-items:center;gap:10px;max-width:none;margin:20px 0 36px;}.search-section>span{font-size:28px;color:var(--ink-soft);}#search{border:0;box-shadow:none;padding:13px 4px;background:none;width:100%;min-width:0;border-radius:8px;font-size:13px;}#search:focus{box-shadow:none;}#search-submit{border:0;background:var(--bg2);color:var(--ink);border-radius:9px;padding:12px 18px;min-height:44px;cursor:pointer;}
.class-section{margin:0 0 50px;}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:20px;}.section-heading .eyebrow{margin:0 0 6px;}.section-heading h2{font-size:26px;margin:0;letter-spacing:-.03em;}.text-link{font-size:12px;font-weight:700;color:var(--accent);text-decoration:none;}.subject-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;}.subject-card{padding:22px 20px;border:1px solid var(--line);border-radius:15px;text-decoration:none;display:flex;flex-direction:column;box-shadow:0 4px 12px #17325c03;min-width:0;}.subject-card::before{display:none;}.sc-icon{display:block;width:34px;height:34px;color:var(--sc);margin-bottom:10px;}.sc-icon svg{width:100%;height:100%;}.subject-card .sc-name{font-size:15px;font-weight:800;margin:2px 0 9px;line-height:1.4;}.sc-description{font-size:11px;color:var(--ink-soft);line-height:1.7;min-height:38px;}.subject-card .sc-count{font-size:10px;margin-top:17px;}.sc-action{font-size:11px;color:var(--accent);font-weight:800;margin-top:9px;}.section-note{font-size:12px;color:var(--ink-soft);}
.breadcrumbs{display:flex;flex-wrap:wrap;gap:9px;font-size:12px;line-height:1.7;margin-bottom:24px;}.breadcrumbs a{color:var(--accent);text-decoration:none;}.breadcrumbs .current{color:var(--ink-soft);}.back-link{display:inline-block;color:var(--accent);font-size:12px;text-decoration:none;min-height:34px;}.dashboard-head{margin:14px 0 32px;}.dashboard-head .eyebrow{margin:0 0 9px;}.dashboard-head h1{font-size:35px;letter-spacing:-.04em;margin:0 0 12px;line-height:1.3;}.dashboard-head>p:last-child{color:var(--ink-soft);font-size:13px;line-height:1.8;margin-bottom:0;}
.category-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;}.category-card{display:block;text-decoration:none;background:var(--card);border:1px solid var(--line);padding:24px;border-radius:16px;color:var(--ink);transition:transform .18s,border-color .18s;}.category-card:hover{transform:translateY(-3px);border-color:var(--accent);}.category-num{font-size:10px;font-weight:800;letter-spacing:.1em;color:var(--accent);}.category-card h2{font-size:18px;margin:18px 0 9px;line-height:1.45;}.category-card p{font-size:12px;color:var(--ink-soft);line-height:1.8;}.category-count{font-size:11px;font-weight:700;color:var(--accent);display:block;margin-top:25px;}.coverage-note{font-size:12px;color:var(--ink-soft);line-height:1.9;padding:18px 20px;border:1px solid var(--line);border-radius:12px;background:var(--bg2);margin:24px 0;}.year-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;}.year-card{padding:25px 15px;text-align:center;border:1px solid var(--line);border-radius:14px;background:var(--card);color:var(--accent);font-size:18px;font-weight:800;text-decoration:none;}.resource-row{display:flex;align-items:center;justify-content:space-between;gap:25px;padding:22px 24px;border:1px solid var(--line);background:var(--card);border-radius:13px;margin:12px 0;}.resource-row>div{min-width:0;}.resource-row h3{font-size:14px;margin:8px 0;line-height:1.7;overflow-wrap:anywhere;}.resource-meta{font-size:9px;letter-spacing:.1em;color:var(--accent);font-weight:800;margin:0;}.resource-source{font-size:11px;color:var(--ink-soft);overflow-wrap:anywhere;margin:0;}.resource-open{flex-shrink:0;font-size:11px;font-weight:800;padding:13px 16px;border-radius:8px;background:var(--bg2);color:var(--accent);text-decoration:none;min-height:44px;}
footer{border-top:1px solid var(--line);background:var(--card);padding-top:15px;position:relative;z-index:1;}footer section{max-width:1168px!important;margin:auto!important;padding:24px 24px 100px!important;}footer h2{font-size:20px;}footer p{font-size:12px;color:var(--ink-soft);line-height:1.9;max-width:800px;}
body.devil .hero-panel{background:none!important;box-shadow:none;border:0;}body.devil .class-picker a{background:linear-gradient(135deg,#691526,#360c1c);color:#ffe4e6;border:1px solid #ad2945;box-shadow:0 10px 35px #ff153020;}body.devil .class-picker a:nth-child(2){background:#230e1c;color:#ffd5da;}body.devil .top-nav{background:#140a13;}body.devil .category-card:hover,body.devil .subject-card:hover{box-shadow:0 8px 25px #ff153020;}body.devil .category-card h2,body.devil .dashboard-head h1{color:#ffcccc;}body.devil .sc-icon{color:var(--accent-2);}body.devil .section-heading h2{font-size:24px;letter-spacing:.03em;}body.devil #nav-bot{color:#fff;background:#b81731;}body.devil .brand-symbol{background:#d81837;color:white;}
body.dark:not(.devil) .class-picker a:nth-child(2){background:#2d4265;color:#e7eeff;}body.dark:not(.devil) #nav-bot{background:#32588f;color:white;}
body.devil::before,body.devil::after{filter:none;opacity:.06;background:radial-gradient(ellipse,#ff1a2e,transparent 65%);}
body.devil #cursor-glow{will-change:transform;}
#activation-overlay{pointer-events:none;}#ov-red{will-change:transform,opacity;}
@media(max-width:900px){.subject-grid{grid-template-columns:repeat(3,minmax(0,1fr));}.top-nav{padding:12px 20px;gap:14px;}.top-nav .brand{font-size:14px;}.nav-actions{gap:10px;}.category-grid{grid-template-columns:repeat(2,minmax(0,1fr));}.year-grid{grid-template-columns:repeat(3,minmax(0,1fr));}}
@media(max-width:600px){.top-nav{padding:9px 16px;gap:10px;}.top-nav .brand{font-size:12px;gap:7px;}.brand-symbol{width:25px;height:29px;font-size:17px;}.menu-label{display:none;}.top-nav #menu-toggle{font-size:22px;padding:5px 0;min-width:30px;}.nav-actions{gap:9px;}.top-nav #theme-toggle{font-size:11px;padding:3px;}#nav-bot{display:none;}.site-header{padding:35px 20px 0;}.hero-panel{padding-bottom:10px;}.site-header h1{font-size:32px;letter-spacing:-.05em;}.hero-kicker{font-size:8px;letter-spacing:.13em;}.tagline{font-size:12px;line-height:1.9;margin:15px 0 22px;}.class-picker{gap:11px;margin:24px 0 18px;}.class-picker a{padding:20px 15px;border-radius:14px;gap:13px;}.class-picker a>span{font-size:7px;letter-spacing:.08em;}.class-picker strong{font-size:23px;}.class-picker small{font-size:9px;line-height:1.6;}.hero-stats{gap:12px;flex-wrap:wrap;font-size:7px;line-height:1.7;}.hero-stats span+span:before{margin-right:12px;}.search-section{margin:22px 0 30px;padding-left:12px;}#search{font-size:11px;}#search-submit{font-size:10px;padding:10px;}.search-section>span{font-size:23px;}main{padding:0 20px 30px;}.subject-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;}.subject-card{padding:18px 14px;}.subject-card .sc-name{font-size:13px;}.sc-description{font-size:10px;min-height:51px;}.sc-icon{width:29px;height:29px;margin-bottom:7px;}.subject-card .sc-count{font-size:9px;margin-top:13px;}.sc-action{font-size:10px;}.section-heading h2{font-size:23px;}.text-link{font-size:10px;}.section-heading .eyebrow{font-size:8px;}.class-section{margin-bottom:36px;}.dashboard-head h1{font-size:29px;}.dashboard-head>p:last-child{font-size:12px;}.category-grid{gap:11px;}.category-card{padding:18px 14px;}.category-card h2{font-size:15px;margin-top:13px;}.category-card p{font-size:11px;}.category-count{font-size:10px;line-height:1.6;margin-top:18px;}.resource-row{display:block;padding:18px;}.resource-row h3{font-size:13px;}.resource-open{display:inline-block;margin-top:15px;}.year-grid{grid-template-columns:repeat(2,minmax(0,1fr));}.year-card{font-size:16px;padding:22px 10px;}.breadcrumbs{font-size:10px;gap:7px;}.coverage-note{font-size:11px;padding:15px;}.section-note{display:none;}body.devil .site-header h1{font-size:29px;letter-spacing:.025em;}body.devil .section-heading h2{font-size:21px;}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto;}*,*::before,*::after{animation:none!important;transition:none!important;}}
/* Remove the old intentional glitch cut-outs from the new smooth transition. */
body.activating main,body.activating .site-header,body.activating .top-nav{animation:none!important;}
body.devil .top-nav #menu-toggle,body.devil .top-nav #theme-toggle{background:none;box-shadow:none;color:var(--accent-2);}
body.devil .top-nav .brand{color:#ffd9df;font-size:16px;letter-spacing:-.01em;font-family:var(--font);text-transform:none;}
#nav-premium{font-size:11px!important;white-space:nowrap;}
#chat-fab{font-family:'Noto Color Emoji','Apple Color Emoji','Segoe UI Emoji',sans-serif;}
@media(max-width:600px){#nav-premium{display:none;}body.devil .top-nav .brand{font-size:12px;}.top-nav,.top-nav.devil{justify-content:space-between;flex-wrap:nowrap;}.nav-actions{flex-wrap:nowrap;}}
#chat-fab{display:grid;place-items:center;}
body.dark:not(.devil) .hero-kicker,body.dark:not(.devil) .eyebrow{color:#b1c9ff;}
body.dark:not(.devil) .tagline,body.dark:not(.devil) .sc-description,body.dark:not(.devil) .hero-stats,body.dark:not(.devil) .sc-count{color:#b8c6d9;}
.class-picker strong{display:flex;justify-content:space-between;align-items:center;gap:6px;white-space:nowrap;}.class-picker i{float:none;flex:none;}
@media(max-width:360px){.class-picker strong{font-size:20px;}body.devil .class-picker strong{font-size:19px;}.class-picker a{padding:18px 12px;}}

/* Source status stays with each chapter, including on phones. */
.resource-actions{display:flex;flex-direction:column;gap:12px;flex-shrink:0}.resource-row>div:first-child{min-width:0}.resource-row .coverage-note{margin:10px 0;max-width:65ch}.book-group-title{margin:30px 0 12px;font-size:22px}.resource-actions a{min-height:44px;white-space:normal;text-align:center}
@media(max-width:650px){.resource-row{flex-direction:column;align-items:stretch}.resource-actions{width:100%}.resource-actions a{display:flex;justify-content:center;align-items:center}.resource-row h3{overflow-wrap:anywhere}}

/* reader: bottom pager, slider, full screen */
#reader-slider{flex:1 1 7rem;min-width:6rem;accent-color:var(--accent,#c0392b)}
#reader-pager{border-top:1px solid var(--line)}
#reader:fullscreen,#reader.reader-full{display:flex;flex-direction:column;background:#222;border-radius:0;margin:0}
#reader.reader-full{position:fixed;inset:0;z-index:9999;max-height:none}
#reader:fullscreen #reader-canvas-wrap,#reader.reader-full #reader-canvas-wrap{flex:1 1 auto;max-height:none;min-height:0}
#reader:-webkit-full-screen{display:flex;flex-direction:column;background:#222}
#reader:-webkit-full-screen #reader-canvas-wrap{flex:1 1 auto;max-height:none}
@media(max-width:600px){
#reader-pager{justify-content:space-between;row-gap:.5rem}
#reader-prev{order:1}#reader-page-label{order:2;flex:1;text-align:center}#reader-next{order:3}
#reader-slider{order:4;flex:1 1 100%;min-width:0;margin:.2rem 0}
#reader-jump{order:5}#reader-zoom{order:6;margin-left:auto}#reader-fs{order:7}
}
body.reader-open #chat-fab{display:none}
.reader-toolbar #reader-fs-top{margin-left:auto;margin-right:.5rem;flex:none}
#reader-fs-top{padding:.3rem .7rem}

/* normal-mode homepage extension (hidden in Devil mode, which keeps its own layout) */
.home-extra{margin-top:8px;}
body.devil .home-extra{display:none!important;}
.home-info{margin:0 0 50px;}
.info-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;}
.info-card{background:var(--card);border:1px solid var(--line);border-radius:15px;padding:22px 20px;min-width:0;}
.info-card h3{font-size:15px;margin:0 0 12px;letter-spacing:-.01em;}
.info-list{list-style:none;margin:0;padding:0;}.info-list li{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-top:1px solid var(--line);font-size:13px;}.info-list li:first-child{border-top:0;}.info-list b{color:var(--accent);}
.info-steps{margin:0;padding-left:18px;font-size:13px;line-height:1.6;color:var(--ink-soft);}.info-steps li{margin-bottom:8px;}
.info-note{font-size:11px;line-height:1.5;color:var(--ink-soft);margin:12px 0 0;}
@media(max-width:900px){.info-grid{grid-template-columns:1fr;}}

/* VYROX branding + doubt photo UI */
.hero-chips{margin:.4rem 0 0;color:var(--accent);font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
.devil-only-chip{display:none}
body.devil .devil-only-chip{display:inline}
.devil-unlocked-badge{display:none;margin-top:.6rem;color:#ff4d4d;font-weight:800;letter-spacing:.18em;font-size:.8rem;text-shadow:0 0 12px rgba(255,26,46,.7)}
body.devil .devil-unlocked-badge{display:block}
#chat-photo-btn{background:none;border:none;font-size:1.05rem;cursor:pointer;padding:.2rem;flex:none}
#chat-photo-chip{padding:.35rem .65rem;font-size:.78rem;color:var(--ink-soft);border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:.5rem;align-items:center}
#chat-photo-chip button{background:none;border:none;color:var(--accent);cursor:pointer;font-size:.8rem;padding:0}
#site-menu a.devil-only-chip{display:none}
body.devil #site-menu a.devil-only-chip{display:block}

.deliver-form{max-width:100%}
.deliver-row{display:flex;gap:.4rem;margin-bottom:.45rem}
.deliver-row input{flex:1;min-width:0;padding:.45rem .6rem;border:1px solid var(--line,#444);border-radius:8px;font-size:.9rem;background:var(--bg,#fff);color:var(--ink,#111)}
.deliver-row button{padding:.45rem .9rem;border:0;border-radius:8px;background:var(--accent);color:#fff;font-size:.9rem;cursor:pointer}
.deliver-form .tutor-handoff{font-size:.82rem}
