@font-face{font-family:Editorial;src:url(editorial.otf) format("opentype");font-display:swap}
@font-face{font-family:Editorial;src:url(editorial-italic.otf) format("opentype");font-style:italic;font-display:swap}
:root{
  --forest:#193C33;--deep:#101A1B;--paper:#F7F3EA;--ivory:#FFFBF4;--sage:#BECFBA;--moss:#547761;
  --gold:#C7AD78;--red:#A53237;--ink:#20312B;--soft:#4a6053;--line:#cecfc2;--mist:#dbe4d5;
  --serif:Editorial,Georgia,serif;--sans:system-ui,-apple-system,"Segoe UI",sans-serif;
  --wrap:min(1160px,calc(100% - 3rem));
}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font:1rem/1.7 var(--sans)}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-underline-offset:.25em}
button{font:inherit}
:focus-visible{outline:2px solid currentColor;outline-offset:4px}
[hidden]{display:none!important}
.wrap{width:var(--wrap);margin-inline:auto}
h1,h2,h3,p,figure,blockquote{margin:0}
h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.02;text-wrap:balance}
h1{font-size:clamp(3.1rem,6vw,6.2rem);letter-spacing:-.047em}
h2{font-size:clamp(2.7rem,5vw,4.8rem);letter-spacing:-.045em}
h3{font-size:clamp(1.9rem,3.2vw,2.8rem);letter-spacing:-.03em}
p{max-width:65ch}
.label,.badge,.caption{font-size:.72rem;line-height:1.45;font-weight:650;letter-spacing:.16em;text-transform:uppercase}
.label{display:flex;align-items:center;gap:.65rem;color:var(--soft)}
.label::before{content:"";display:inline-block;width:1.6rem;height:1px;background:currentColor}
.label+p,.label+h1,.label+h2,.label+h3{margin-top:1rem}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.skip{position:absolute;top:.5rem;left:.75rem;z-index:10;transform:translateY(-200%);padding:.75rem 1rem;background:var(--paper);color:var(--forest)}
.skip:focus{transform:none}
.site-header,.site-footer{background:var(--forest);color:var(--ivory)}
.site-header{position:relative;z-index:2;border-bottom:1px solid #ffffff32}
.bar{min-height:78px;display:flex;align-items:center;justify-content:space-between;gap:1rem}
.brand{display:inline-flex;align-items:center;gap:.8rem;min-height:44px;text-decoration:none;flex-shrink:0}
.brand-name{font:1.62rem/1 var(--serif);letter-spacing:-.035em}
.brand-mark{display:grid;place-items:center;border:1px solid #c7ad78aa;border-radius:50%;width:34px;height:34px;color:var(--gold)}
.brand-mark svg{width:18px;height:18px}
nav ul{list-style:none;padding:0;margin:0;display:flex;gap:clamp(.75rem,2.3vw,2rem)}
nav a,.site-footer a{display:inline-flex;align-items:center;min-height:44px;text-decoration:none}
nav a{font-size:.9rem;white-space:nowrap;position:relative}
nav a[aria-current="page"]::after{content:"";position:absolute;left:0;right:0;bottom:.38rem;height:1px;background:var(--gold)}
nav a:hover,.site-footer a:hover{text-decoration:underline}
.menu{display:none;background:transparent;border:1px solid #ffffff55;color:var(--ivory);min-height:44px;padding:.35rem .65rem;gap:.5rem;align-items:center;font-size:.8rem}
.menu svg{width:17px;height:17px}
.hero{background:var(--forest);color:var(--ivory);position:relative;overflow:hidden}
.hero::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 72% 28%,#54776155,transparent 66%),radial-gradient(ellipse at 7% 92%,#101a1b50,transparent 60%)}
.hero .label,.dark .label,.site-footer .label{color:var(--gold)}
.hero-grid{position:relative;display:grid;grid-template-columns:minmax(0,1.22fr) minmax(0,.78fr);gap:clamp(2.5rem,7vw,7rem);align-items:center;padding-block:clamp(3.6rem,7vw,7rem) clamp(3rem,5.5vw,5rem)}
.hero-copy .label{margin-bottom:1.7rem}
.hero h1{text-wrap:initial}
.hero h1 em{font-weight:400;color:#e6d5ae}
.hero-copy>p:not(.label){margin-top:1.55rem;color:#e1e8dd;font-size:clamp(1rem,1.6vw,1.14rem)}
.actions{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:1.85rem}
.button{min-height:46px;display:inline-flex;align-items:center;justify-content:center;gap:.65rem;padding:.65rem 1.12rem;border:1px solid transparent;text-decoration:none;font-size:.875rem;font-weight:650;line-height:1.25}
.button-primary{background:var(--forest);color:var(--ivory)}
.button-primary:hover{background:#254c3f}
.hero .button-primary{background:var(--ivory);color:var(--forest)}
.hero .button-primary:hover{background:#e9ddbd}
.button-ghost{color:var(--ivory);border-color:#ffffff7a}
.button-ghost:hover{background:#ffffff19}
.arrow{width:16px;height:16px;flex:none}
.portrait{width:min(100%,380px);justify-self:center;position:relative}
.portrait-frame{padding:.6rem;border:1px solid #c7ad78a8;position:relative}
.portrait-frame::after{content:"";position:absolute;inset:.45rem -.5rem -.5rem .45rem;border:1px solid #c7ad7859;pointer-events:none}
.portrait-frame img{width:100%;aspect-ratio:4/5;object-fit:cover;object-position:center 36%}
.portrait .caption{color:#efdfbb;margin-top:1rem;display:flex;justify-content:space-between;gap:1rem}
.section{padding-block:clamp(3.6rem,7vw,7rem)}
.section-head{margin-bottom:clamp(1.5rem,4vw,3rem)}
.section-head>p:not(.label){margin-top:1.05rem;color:var(--soft)}
.worlds{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.15rem}
.world{display:grid;grid-template-columns:minmax(0,1fr) 25%;position:relative;isolation:isolate;overflow:hidden;min-height:260px;align-items:center;gap:1rem;padding:clamp(1.3rem,3.6vw,2.7rem);background:#dce5d6;border:1px solid #c6d4c3}
.world-dark{background:var(--deep);color:var(--ivory);border-color:#293c38}
.world::before{content:"";position:absolute;z-index:-1;right:-12%;bottom:-65%;width:70%;aspect-ratio:1;border:1px solid #54776166;border-radius:50%;box-shadow:0 0 0 22px #54776120,0 0 0 46px #54776115,0 0 0 70px #5477610c;pointer-events:none}
.world-dark::before{border-color:#c7ad7855;box-shadow:0 0 0 22px #c7ad7819,0 0 0 46px #c7ad7810,0 0 0 70px #c7ad7809}
.world .label{font-size:.66rem;letter-spacing:.12em}
.world-dark .label{color:var(--gold)}
.world h3{margin-top:.55rem}
.world p:not(.label){margin-top:.75rem;font-size:.9rem}
.world img{width:100%;box-shadow:0 12px 24px #0c15184a}
.text-link{display:inline-flex;gap:.6rem;align-items:center;min-height:44px;font-size:.88rem;font-weight:650;text-decoration:none}
.text-link:hover{text-decoration:underline}
.world .text-link{margin-top:.55rem}
.shelf{background:var(--ivory);border-block:1px solid var(--line)}
.book-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(1rem,3vw,2rem)}
.card{border:1px solid var(--line);background:var(--ivory);min-width:0;display:flex;flex-direction:column}
.cover-stage{display:grid;place-items:center;min-height:275px;padding:1.25rem;background:radial-gradient(ellipse at 50% 42%,#f0f4ed,#c6d6c2)}
.cover-stage.thriller{background:radial-gradient(ellipse at 50% 42%,#44524b,#25332d)}
.cover-stage.horror{background:radial-gradient(ellipse at 50% 42%,#3d5251,#1d2a2d)}
.cover-stage img{height:clamp(205px,22vw,280px);width:100%;object-fit:contain;filter:drop-shadow(0 9px 14px #0c15184d)}
.card-copy{padding:clamp(1.1rem,2.5vw,1.8rem);display:flex;flex-direction:column;align-items:flex-start;flex:1}
.badge{display:inline-block;width:fit-content;padding:.38rem .6rem;background:#e1e9dc;color:#284539;border:1px solid #b6c9b3;letter-spacing:.085em}
.badge-thriller,.badge-horror{background:#f3ebd8;color:#5b4927;border-color:#ddcca4}
.card-copy .label{margin:.9rem 0 .48rem;font-size:.66rem;letter-spacing:.12em}
.card-copy h3{font-size:clamp(1.9rem,2.65vw,2.6rem)}
.card-copy p:not(.label){margin:.8rem 0 .6rem;font-size:.92rem}
.card-links{margin-top:auto;display:flex;flex-wrap:wrap;column-gap:1rem}
.about-teaser{display:grid;grid-template-columns:minmax(0,.74fr) minmax(0,1fr);gap:clamp(2rem,8vw,7rem);align-items:center}
.about-teaser img{width:100%;aspect-ratio:1.15;object-fit:cover;object-position:center 35%}
.about-teaser .text-link{margin-top:1rem}
.prose{font-size:1.05rem}
.prose p+p{margin-top:1rem}
.prose h2+p{margin-top:1.25rem}
.closing{border-top:1px solid var(--line);background:#ede9dc;padding-block:3.2rem;text-align:center}
.closing h2{font-size:clamp(2.5rem,4.5vw,4rem)}
.closing .text-link{margin-top:.65rem}
.site-footer{padding-block:2rem}
.footer-grid{display:flex;justify-content:space-between;align-items:center;gap:.6rem 2rem;flex-wrap:wrap}
.footer-links{display:flex;flex-wrap:wrap;gap:0 1.45rem}
.footer-links a{font-size:.85rem}
.subhead{padding-block:clamp(3.2rem,7vw,6.5rem);border-bottom:1px solid var(--line)}
.subhead h1{margin-bottom:1.15rem}
.subhead p:not(.label){font-size:1.1rem}
.sage{background:radial-gradient(ellipse at 78% 32%,#f1f4ec,#c5d5c0);color:var(--forest)}
.dark{background:var(--deep);color:var(--ivory)}
.dark .subhead{background:radial-gradient(ellipse at 70% 10%,#29403a,transparent 75%);border-color:#c7ad784a}
.dark .subhead p:not(.label){color:#e0dbce}
.book-layout{display:grid;grid-template-columns:minmax(0,.84fr) minmax(0,1.16fr);gap:clamp(2rem,7vw,6rem);align-items:start}
.book-layout .prose{margin-top:1.4rem}
.book-layout .book-heading{margin-top:.7rem}
.book-layout .badge+.label{margin-top:1rem}
.detail-cover{display:grid;place-items:center;padding:clamp(1.1rem,4vw,3.2rem);background:#dce5d6;border:1px solid #bfccba}
.detail-cover img{max-height:540px;width:100%;height:auto;object-fit:contain;filter:drop-shadow(0 16px 15px #0c15184d)}
.dark .detail-cover{background:radial-gradient(ellipse at 50% 40%,#344840,#1b2727);border-color:#c7ad7855}
.dark .badge{background:#252b26;color:#ecdbb4;border-color:#917d52}
.dark .book-layout+.book-layout{margin-top:clamp(3rem,7vw,6rem);padding-top:clamp(3rem,7vw,6rem);border-top:1px solid #c7ad7855}
.dark .prose{color:#e8e1d5}
.book-quote{font:italic clamp(1.8rem,4vw,3rem)/1.18 var(--serif);color:#ecdab5;margin:1.5rem 0 .8rem}
.jump{display:flex;flex-wrap:wrap;gap:.5rem 1.4rem;margin-top:1.1rem}
.jump a{border-bottom:1px solid #c7ad787f}
.tags{list-style:none;display:flex;flex-wrap:wrap;gap:.45rem;margin:1.4rem 0 0;padding:0}
.tags li{padding:.25rem .65rem;border:1px solid #a8bea6;background:#e6ede0;font-size:.82rem}
.extras{background:#e3eadd;border-top:1px solid #b7c9b3}
.extras h2,.legal h2{font-size:clamp(2.1rem,4vw,3rem)}
.extras p{margin-top:.8rem}
.bio{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(2rem,7vw,6rem);align-items:start}
.bio figure img{width:100%;border:1px solid var(--line)}
.bio figure figcaption{margin-top:.75rem;color:var(--soft)}
.bio .prose p:first-child{font-family:var(--serif);font-size:clamp(1.8rem,3.2vw,2.6rem);line-height:1.12}
.contact{min-height:51vh;background:radial-gradient(ellipse at 95% 90%,#d8e2d2,transparent 62%)}
.reading{max-width:760px}
.contact h1,.legal h1{margin-bottom:1.35rem}
.note{padding:1rem 1.25rem;border-left:2px solid var(--moss);background:#e5ece1;margin-top:1.6rem}
.legal .prose{margin-top:2rem}
.legal .prose h2{margin-top:1.75rem}
.legal .prose h2+p{margin-top:.6rem}
@media(max-width:880px){
 .hero-grid{gap:2rem}
 .world{grid-template-columns:minmax(0,1fr) 23%;gap:.7rem;padding:1.25rem}
 .cover-stage{min-height:0}
}
@media(max-width:700px){
 :root{--wrap:calc(100% - 2rem)}
 .bar{min-height:66px;flex-wrap:wrap;gap:0 1rem}
 .menu:not([hidden]){display:inline-flex}
 nav{width:100%;padding-block:.25rem .8rem}
 nav ul{display:grid;gap:0}
 nav a{width:100%}
 nav a[aria-current="page"]::after{right:auto;width:2rem}
 .hero-grid,.worlds,.book-grid,.about-teaser,.book-layout,.bio{grid-template-columns:minmax(0,1fr)}
 .hero-grid{padding-block:3.3rem 2.8rem;gap:2.1rem}
 .hero h1{font-size:clamp(2.75rem,11vw,4.55rem)}
 .hero-copy .label{margin-bottom:1rem}
 .portrait{width:min(88%,355px)}
 .world{min-height:205px;grid-template-columns:minmax(0,1fr) 24%}
 .cover-stage img{height:240px}
 .detail-cover{max-width:415px;width:100%;margin-inline:auto}
 .detail-cover img{max-height:390px}
 .bio figure{max-width:370px}
 .about-teaser img{aspect-ratio:1.4}
}
@media(max-width:360px){
 .brand-name{font-size:1.42rem}
 .button{font-size:.8rem;padding-inline:.75rem}
}
@media(prefers-reduced-motion:no-preference){
 .button,.text-link{transition:background-color .18s ease,color .18s ease}
 .world img{transition:transform .24s ease}
 .world:focus-within img,.world:hover img{transform:translateY(-4px)}
}
