/*
Theme Name: Doujin Codex Catalog
Theme URI: https://doujincodex.com/
Author: ny
Description: Independent all-genre doujin catalog theme.
Version: 1.0.0
Requires at least: 6.0
Requires PHP: 7.4
Text Domain: doujincodex-catalog
*/
@font-face{font-family:Kanit;src:url("assets/kanit-regular.ttf") format("truetype");font-weight:400;font-display:swap}
@font-face{font-family:Kanit;src:url("assets/kanit-bold.ttf") format("truetype");font-weight:700;font-display:swap}
:root{--bg:#101116;--panel:#191a21;--panel-2:#22232c;--paper:#f3ede3;--ink:#19191f;--text:#f5f0e8;--muted:#a9a6ad;--line:rgba(255,255,255,.14);--rose:#ff4f87;--rose-dark:#d93268;--cyan:#69d6dc;--cream:#f3ede3;--shell:min(1180px,calc(100% - 30px));--shadow:0 18px 46px rgba(0,0,0,.28);--ease:180ms ease}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:Kanit,Tahoma,sans-serif;font-size:16px;line-height:1.7;overflow-x:hidden}img{display:block;max-width:100%;height:auto}a{color:inherit;text-decoration:none}button,input,select{font:inherit}button{cursor:pointer}svg{display:block;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.shell{width:var(--shell);margin-inline:auto}.skip-link{position:fixed;left:12px;top:-80px;z-index:100;padding:10px 14px;background:var(--cream);color:var(--ink)}.skip-link:focus{top:12px}:focus-visible{outline:3px solid var(--cyan);outline-offset:3px}
.site-header{position:sticky;top:0;z-index:40;background:rgba(16,17,22,.94);border-bottom:1px solid var(--line);backdrop-filter:blur(16px)}.header-row{min-height:68px;display:flex;align-items:center;gap:12px}.brand{display:inline-flex;align-items:center;gap:10px;min-height:44px;font-weight:700;letter-spacing:-.03em}.brand em{font-style:normal;color:var(--cyan)}.brand-mark{width:36px;height:36px;display:grid;place-items:center;border:1px solid var(--rose);color:var(--rose);font-size:.72rem;letter-spacing:.04em}.nav-toggle{width:44px;height:44px;margin-left:auto;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;background:transparent;color:var(--text)}.nav-toggle svg{width:22px}.site-nav{display:none;position:absolute;left:15px;right:15px;top:62px;padding:10px;background:#17181e;border:1px solid var(--line);box-shadow:var(--shadow)}.site-nav.is-open{display:grid}.site-nav a{min-height:46px;display:flex;align-items:center;padding:8px 12px;color:#d8d5d0}.site-nav a[aria-current="page"],.site-nav a:hover{color:var(--rose)}.header-search{display:none}
.hero{position:relative;min-height:670px;display:flex;align-items:end;isolation:isolate;overflow:hidden}.hero-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:64% center;z-index:-3}.hero-shade{position:absolute;inset:0;z-index:-2;background:linear-gradient(180deg,rgba(12,12,16,.14) 0%,rgba(12,12,16,.32) 30%,rgba(12,12,16,.94) 100%)}.hero-inner{padding-block:110px 42px}.hero-copy{max-width:690px}.hero-label,.overline{margin:0 0 8px;color:var(--cyan);font-size:.76rem;line-height:1.4;font-weight:700;letter-spacing:.13em;text-transform:uppercase}.hero-copy h1{margin:0;font-size:clamp(2.5rem,11vw,5.8rem);line-height:.98;letter-spacing:-.055em;text-wrap:balance}.hero-copy>p:not(.hero-label){max-width:58ch;margin:18px 0 22px;color:#e2ded8;font-size:1.02rem}.hero-search{display:grid;grid-template-columns:44px 1fr auto;align-items:center;width:min(640px,100%);background:var(--cream);color:var(--ink);border-radius:4px;overflow:hidden}.hero-search svg{width:20px;margin:auto;color:#6e6a70}.hero-search input{min-width:0;height:54px;border:0;background:transparent;color:var(--ink);font-size:1rem}.hero-search input:focus{outline:0}.hero-search button{height:46px;margin-right:4px;border:0;padding:0 17px;background:var(--rose);color:#fff;font-weight:700}.hero-tags{display:flex;gap:8px;overflow:auto;margin-top:14px}.hero-tags a{flex:none;min-height:44px;display:inline-flex;align-items:center;padding:6px 13px;border:1px solid rgba(255,255,255,.28);border-radius:999px;background:rgba(16,17,22,.48);backdrop-filter:blur(8px);font-size:.9rem}.hero-tags a:hover{border-color:var(--cyan);color:var(--cyan)}
.page-content{padding-block:52px 72px}.catalog-section{margin-bottom:64px}.catalog-head{display:flex;align-items:end;justify-content:space-between;gap:18px;margin-bottom:22px}.catalog-head h1,.catalog-head h2{margin:0;font-size:clamp(1.8rem,6vw,3rem);line-height:1.12;letter-spacing:-.04em}.catalog-head p:not(.overline){margin:7px 0 0;color:var(--muted)}.catalog-head.compact{margin-bottom:15px}.catalog-head.compact h2{font-size:clamp(1.55rem,5vw,2.2rem)}.text-link{min-height:44px;display:inline-flex;align-items:center;gap:7px;color:var(--rose);font-weight:700;white-space:nowrap}.text-link svg{width:19px}.cover-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 12px}.doujin-card{min-width:0}.cover-link{position:relative;display:block;overflow:hidden;background:#282832;border-radius:7px;box-shadow:0 10px 28px rgba(0,0,0,.25)}.cover-link img{width:100%;aspect-ratio:3/4;object-fit:cover;transition:transform 300ms ease,filter 300ms ease}.doujin-card:hover .cover-link img{transform:scale(1.025);filter:brightness(1.05)}.rating,.format{position:absolute;z-index:2;font-size:.73rem;font-weight:700;line-height:1;padding:7px 8px;background:rgba(16,17,22,.9);backdrop-filter:blur(6px)}.rating{top:8px;left:8px;color:var(--cyan)}.rating.adult{color:#fff;background:var(--rose-dark)}.format{right:8px;bottom:8px;color:#fff}.card-copy{padding-top:12px}.card-genre{margin:0;color:var(--rose);font-size:.82rem}.doujin-card h3{margin:4px 0 2px;font-size:1.05rem;line-height:1.35;letter-spacing:-.02em}.artist{margin:0;color:var(--muted);font-size:.86rem}.card-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}.card-tags span{padding:3px 7px;border:1px solid var(--line);border-radius:999px;color:#c8c5ca;font-size:.72rem}
.catalog-split{display:grid;gap:26px;margin-bottom:64px}.ranking,.tag-library{padding:22px;background:var(--panel);border:1px solid var(--line)}.rank-list{list-style:none;margin:0;padding:0}.rank-list li+li{border-top:1px solid var(--line)}.rank-list a{min-height:92px;display:grid;grid-template-columns:34px 54px 1fr;align-items:center;gap:12px;padding:11px 0}.rank-no{color:var(--rose);font-weight:700}.rank-list img{width:54px;aspect-ratio:3/4;object-fit:cover;border-radius:3px}.rank-list strong,.rank-list small{display:block}.rank-list strong{line-height:1.35}.rank-list small{margin-top:3px;color:var(--muted)}.tag-cloud{display:flex;flex-wrap:wrap;gap:9px}.tag-cloud a{min-height:45px;display:inline-flex;align-items:center;gap:10px;padding:7px 13px;border:1px solid var(--line);background:var(--panel-2);transition:border-color var(--ease),color var(--ease)}.tag-cloud a:hover{border-color:var(--cyan);color:var(--cyan)}.tag-cloud span{color:var(--muted);font-size:.8rem}.continue-strip{display:grid;gap:20px;padding:24px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.continue-strip h2{margin:0;font-size:clamp(1.55rem,5vw,2.25rem);line-height:1.18}.continue-strip>div>p:last-child{margin:6px 0 0;color:var(--muted)}.continue-work{display:grid;grid-template-columns:54px 1fr 36px;align-items:center;gap:12px;min-height:90px;padding:10px;background:var(--cream);color:var(--ink)}.continue-work img{width:54px;aspect-ratio:3/4;object-fit:cover}.continue-work strong,.continue-work small{display:block}.continue-work small{color:#68636a}.continue-work>svg{width:22px}.reading-progress{display:block;height:4px;margin-top:7px;background:#d7cfc4}.reading-progress i{display:block;height:100%;background:var(--rose)}
.site-footer{padding:38px 0 24px;border-top:1px solid var(--line);background:#0c0d11}.footer-grid{display:grid;gap:22px}.footer-grid p{max-width:52ch;color:var(--muted)}.footer-grid nav{display:flex;flex-wrap:wrap;gap:6px 20px}.footer-grid nav a{min-height:44px;display:inline-flex;align-items:center}.footer-bottom{margin-top:24px;padding-top:18px;border-top:1px solid var(--line);color:#807d84;font-size:.83rem}
.page-main{min-height:70vh;padding:34px 0 70px}.crumbs{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:20px;color:var(--muted);font-size:.9rem}.crumbs a{text-decoration:underline;text-underline-offset:3px}.page-title{margin-bottom:24px}.page-title h1{margin:0;font-size:clamp(2rem,7vw,4rem);line-height:1.05;letter-spacing:-.05em}.page-title p{max-width:60ch;color:var(--muted)}.toolbar{display:grid;gap:8px;margin-bottom:18px;padding:12px;background:var(--panel);border:1px solid var(--line)}.toolbar input,.toolbar select,.section-search input{width:100%;min-height:48px;border:1px solid var(--line);background:#24252d;color:var(--text);padding:10px 12px}.result-count{color:var(--muted)}.empty-state{padding:50px 18px;text-align:center;border:1px dashed rgba(255,255,255,.25);background:var(--panel)}.empty-state h2{margin:0}.empty-state p{max-width:46ch;margin:8px auto 18px;color:var(--muted)}.button{min-height:46px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:9px 16px;border:1px solid transparent;background:var(--rose);color:#fff;font-weight:700}.button.secondary{background:var(--cream);color:var(--ink)}.button.ghost{background:transparent;border-color:var(--line);color:var(--text)}.button svg{width:20px}.series-hero{display:grid;gap:22px}.series-cover img{width:min(100%,420px);aspect-ratio:3/4;object-fit:cover}.series-copy h1{margin:8px 0 12px;font-size:clamp(2rem,7vw,4.2rem);line-height:1.03;letter-spacing:-.05em}.series-copy .summary{max-width:64ch;color:#cbc7c2}.meta-chips{display:flex;flex-wrap:wrap;gap:7px}.meta-chips span{padding:5px 9px;border:1px solid var(--line);color:#d6d2cd;font-size:.82rem}.facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin:20px 0;background:var(--line)}.fact{padding:12px;background:var(--panel)}.fact span,.fact strong{display:block}.fact span{color:var(--muted);font-size:.8rem}.section-panel{margin-top:36px;padding:20px;background:var(--panel);border:1px solid var(--line)}.section-panel h2{margin:0}.section-panel>p{color:var(--muted)}.section-row{min-height:64px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;border-top:1px solid var(--line)}.section-row strong,.section-row small{display:block}.section-row small{color:var(--muted)}.section-row svg{width:20px}.reader-page{background:#090a0e}.reader-toolbar{position:sticky;top:0;z-index:30;background:rgba(9,10,14,.96);border-bottom:1px solid var(--line)}.reader-toolbar-inner{width:var(--shell);min-height:62px;margin:auto;display:grid;grid-template-columns:44px 1fr 44px;align-items:center;gap:8px}.reader-nav-button{width:44px;height:44px;display:grid;place-items:center;border:1px solid var(--line)}.reader-title{text-align:center;min-width:0}.reader-title h1{margin:0;font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reader-title span{display:block;color:var(--muted);font-size:.78rem}.reader-main{padding:14px 0 54px}.reader-options{width:var(--shell);margin:0 auto 14px;display:flex;justify-content:center;gap:7px;flex-wrap:wrap}.reader-options button,.reader-options a{min-height:44px;padding:7px 13px;border:1px solid var(--line);background:var(--panel);color:var(--text)}.reader-options .is-active{background:var(--rose);border-color:var(--rose)}.reader-strip{width:min(100%,820px);margin:auto;background:var(--cream)}.reader-strip.is-narrow{width:min(82%,680px)}.reader-strip img{width:100%}.reader-strip img+img{margin-top:3px}.reader-end{width:min(720px,calc(100% - 30px));margin:24px auto;padding:24px;text-align:center;background:var(--panel);border:1px solid var(--line)}.reader-end p{color:var(--muted)}.history-tabs{display:flex;gap:8px;margin-bottom:20px;border-bottom:1px solid var(--line)}.history-tabs button{min-height:48px;border:0;border-bottom:3px solid transparent;background:transparent;color:var(--muted);font-weight:700}.history-tabs button.is-active{color:var(--text);border-color:var(--rose)}.saved-list{display:grid;gap:12px}.saved-item{display:grid;grid-template-columns:72px 1fr;gap:13px;padding:12px;background:var(--panel);border:1px solid var(--line)}.saved-item img{width:72px;aspect-ratio:3/4;object-fit:cover}.saved-item h3{margin:0}.saved-item p{margin:3px 0;color:var(--muted)}.saved-actions{display:flex;gap:8px;margin-top:9px}.reading-progress{overflow:hidden}
[hidden]{display:none!important}@media(min-width:600px){:root{--shell:min(1180px,calc(100% - 48px))}.cover-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:34px 16px}.toolbar{grid-template-columns:2fr 1fr 1fr}.continue-strip{grid-template-columns:1fr minmax(330px,.8fr);align-items:center}.series-hero{grid-template-columns:minmax(260px,380px) 1fr;align-items:start}.saved-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(min-width:880px){.nav-toggle{display:none}.site-nav{position:static;display:flex;margin-left:auto;padding:0;background:transparent;border:0;box-shadow:none}.site-nav a{padding:8px 11px}.header-search{display:flex;width:min(250px,21vw);height:42px;background:var(--cream)}.header-search input{min-width:0;flex:1;border:0;padding:0 11px;background:transparent}.header-search button{width:42px;border:0;background:var(--cyan);color:var(--ink)}.header-search svg{width:18px;margin:auto}.hero{min-height:720px;align-items:center}.hero-shade{background:linear-gradient(90deg,rgba(10,10,14,.92) 0%,rgba(10,10,14,.7) 42%,rgba(10,10,14,.12) 76%),linear-gradient(0deg,rgba(10,10,14,.58),transparent 45%)}.hero-inner{padding-block:100px}.cover-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.catalog-split{grid-template-columns:1fr 1fr}.footer-grid{grid-template-columns:1.4fr 1fr}.footer-grid nav{justify-content:flex-end}.series-hero{grid-template-columns:360px 1fr}.section-panel{padding:24px}}
@media(max-width:430px){.catalog-head{align-items:flex-start;flex-direction:column}.hero-copy h1{font-size:2.75rem}.cover-grid{row-gap:30px}.facts{grid-template-columns:1fr}.reader-strip.is-narrow{width:94%}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
