/* Editorial journal: quiet paper, oversized type, and a personal art collage. */
:root{--journal-paper:#f4efe9;--journal-ink:#493643;--journal-muted:#82747b;--journal-line:#d6cacd;--journal-accent:#84576c}
body.is-entry,body:not(.is-entry){background:var(--journal-paper);color:var(--journal-ink)}
body .top-ribbon{display:none}
body.is-entry .site-header,body:not(.is-entry) .site-header{display:flex;width:calc(100% - 96px);max-width:1440px;height:100px;padding:0;margin:auto;border-radius:0;border-bottom:1px solid var(--journal-line);background:transparent;box-shadow:none}
.brand{font-family:var(--font-serif);font-size:23px;font-weight:600;gap:11px;color:var(--journal-ink)}
.brand-mark{background:none;transform:none;width:26px;color:var(--journal-accent);font-size:23px}.brand small{font:9px/1.4 var(--font-sans);color:var(--journal-muted);letter-spacing:.17em}
.main-nav{gap:28px;font-size:12px;font-weight:400;color:#6c5b65}.main-nav a{position:relative;padding:8px 0}.main-nav a.active{color:var(--journal-ink)}.main-nav a.active::after{position:absolute;bottom:0;height:1px;width:100%;background:var(--journal-accent)}
.header-heart{border:1px solid #bfaab5;background:transparent;color:var(--journal-accent);width:38px;height:38px}
body.is-entry .app{min-height:0}.journal-home{max-width:1440px;width:calc(100% - 96px);margin:auto}
.journal-hero{display:grid;grid-template-columns:1.08fr 1fr;gap:28px;min-height:650px;padding:62px 0 60px;align-items:center}
.journal-kicker{font:10px/1.6 var(--font-sans);letter-spacing:.14em;color:var(--journal-muted);margin:0;text-transform:uppercase;overflow-wrap:anywhere}.journal-kicker>span{display:inline-block;width:6px;height:6px;background:#9c657e;border-radius:50%;margin:0 9px 1px 0}
.journal-intro h1{font-family:var(--font-serif);font-size:clamp(49px,5.8vw,89px);line-height:1.2;letter-spacing:-.055em;font-weight:500;margin:28px 0 30px}.journal-intro h1 em{font-style:normal;color:#966d80}.title-flower{display:inline-block;font-family:var(--font-serif);color:#a786a4;font-size:.8em;margin-left:32px;vertical-align:5%;animation:flower-turn 35s linear infinite}.journal-intro-bottom{display:flex;align-items:end;justify-content:space-between;gap:20px;padding-right:16px}.journal-intro-bottom p{font-size:12px;line-height:2.1;margin:0;color:#78646f}.journal-cta{font-size:12px;white-space:nowrap;padding-bottom:9px;border-bottom:1px solid #937587}.journal-cta span{display:inline-block;margin-left:22px;font-size:22px;transition:transform .25s}.journal-cta:hover span{transform:translate(3px,-3px)}
.journal-collage{position:relative;height:518px;min-width:0}.collage-main{position:absolute;top:43px;right:3%;width:72%;height:377px;margin:0;transform:rotate(5deg);background:#ece2dc;padding:8px 8px 0;border:1px solid #cbbbba;box-shadow:4px 9px 15px #4936430b}.collage-main img{display:block;width:100%;height:calc(100% - 28px);object-fit:cover}.collage-main figcaption{display:flex;justify-content:space-between;font:7px/28px var(--font-sans);letter-spacing:.13em;color:#66555c}.collage-small{position:absolute;left:0;bottom:19px;width:45%;height:240px;background:#fcf9f3;margin:0;padding:9px 9px 0;transform:rotate(-9deg);box-shadow:4px 9px 20px #49364318}.collage-small img{width:100%;height:calc(100% - 38px);object-fit:cover;display:block}.collage-small figcaption{text-align:center;font:12px/38px var(--font-serif);letter-spacing:.13em}.collage-script{position:absolute;left:3%;top:2px;font:italic 34px/.96 var(--font-serif);color:#947885;transform:rotate(-9deg);z-index:2}.collage-seal{position:absolute;right:0;top:5px;border:1px solid #9d758a;border-radius:50%;width:100px;height:100px;background:#e8d9e0;display:flex;flex-direction:column;justify-content:center;align-items:center;font-size:12px;letter-spacing:.14em;line-height:1.6;transform:rotate(12deg);z-index:3}.collage-seal span{font-size:25px;line-height:1.1}.collage-character{position:absolute;right:8%;bottom:43px;width:160px;height:auto;filter:drop-shadow(1px 4px 2px #49364315)}.collage-note{position:absolute;right:2%;bottom:8px;font-size:10px;color:#917583;letter-spacing:.14em}
.journal-section-label{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:18px 0;border-top:1px solid var(--journal-line)}.journal-section-label h2{font-size:13px;font-weight:400;margin:0;letter-spacing:.06em}.journal-section-label>span{font:9px/1.5 var(--font-sans);letter-spacing:.1em;color:var(--journal-muted)}.chapter-grid{display:grid;grid-template-columns:repeat(4,1fr);padding:0 0 54px}.chapter-link{border-top:1px solid var(--journal-line);border-bottom:1px solid var(--journal-line);border-right:1px solid var(--journal-line);padding:22px 24px 20px;transition:background .25s}.chapter-link:first-child{padding-left:0}.chapter-link:last-child{border-right:0}.chapter-link:hover,.chapter-link:focus-visible{background:#eadfe4}.chapter-meta{display:flex;justify-content:space-between;align-items:center;gap:6px;font:8px/1.5 var(--font-sans);letter-spacing:.08em;color:#82727b}.chapter-arrow{font-size:20px;color:#795b6c;transition:transform .25s}.chapter-link:hover .chapter-arrow{transform:translate(3px,-3px)}.chapter-link h3{font:400 27px/1.3 var(--font-serif);letter-spacing:-.02em;margin:21px 0 8px}.chapter-link p{font-size:11px;color:#82727b;margin:0 0 23px}.chapter-count{font-size:9px;color:#876977;letter-spacing:.03em}
.journal-latest .journal-section-label{border-top:0;padding-top:16px;padding-bottom:27px}.journal-latest h2{font:400 25px/1.3 var(--font-serif);letter-spacing:0}.journal-latest h2 em{font:italic 19px var(--font-serif);color:#9c8391;margin-left:14px}.journal-latest-grid{display:grid;grid-template-columns:1.55fr 1fr;gap:7%;align-items:start}.journal-entry{display:grid;grid-template-columns:25px 1fr 18px;gap:19px;padding:26px 0;border-top:1px solid var(--journal-line);transition:color .2s}.journal-entry-index{font:italic 18px var(--font-serif);color:#b494a3}.journal-entry-category{font-size:10px;color:#8b7381}.journal-entry h3{font:400 22px/1.5 var(--font-serif);margin:9px 0}.journal-entry p{font-size:12px;line-height:1.9;color:#8b7882;margin:0;overflow-wrap:anywhere}.journal-entry:hover h3{color:#a16582}.journal-letter{position:relative;background:#e8dde3;padding:33px 35px 30px;overflow:hidden}.letter-star{position:absolute;right:24px;top:17px;font:58px var(--font-serif);color:#baa3b6}.journal-letter h3{font:400 32px/1.45 var(--font-serif);margin:26px 0 16px}.journal-letter p{font-size:12px;color:#78606f;line-height:2;margin:0 0 22px;overflow-wrap:anywhere}.journal-letter a{font-size:11px;border-bottom:1px solid #b9a0af;padding-bottom:6px}.journal-empty{font-size:14px;color:var(--journal-muted);padding:35px 0}.journal-search{margin:56px 0 0;max-width:640px}.journal-search .search-panel{background:transparent;padding:0;border:0;box-shadow:none}.journal-search .search-panel label{font-size:11px;color:#806b79;font-weight:400}.journal-search .search-field{background:#fcf8f5;border-radius:999px;border:1px solid #cbb5c2;padding:4px 18px;gap:11px}.journal-search .search-field input{font-size:12px;height:40px}.journal-search .search-results{background:#fcf8f5}.journal-signoff{padding:66px 0 70px;text-align:center}.journal-signoff p{font-size:11px;letter-spacing:.12em;color:#927989;margin:0 0 15px}.journal-signoff a{font:400 clamp(28px,3.5vw,46px)/1.5 var(--font-serif)}.journal-signoff a span{display:inline-block;margin-left:15px;color:#a27f92;transition:transform .25s}.journal-signoff a:hover span{transform:translate(5px,-5px)}.journal-signoff>span{display:block;font:8px/1.4 var(--font-sans);letter-spacing:.2em;color:#9d8291;margin-top:27px}
body.is-entry .site-footer,body:not(.is-entry) .site-footer{display:flex;background:transparent;backdrop-filter:none;border-top:1px solid var(--journal-line);padding:23px 48px;min-height:80px;font-size:10px;color:#8a727f}.site-footer span:first-child{color:#795e6e;font-weight:400}
a:focus-visible,button:focus-visible{outline:2px solid #8d5977;outline-offset:5px}
/* Carry the paper and fine rules through reading and guestbook pages. */
body:not(.is-entry) .container{max-width:1200px;padding-left:40px;padding-right:40px}body:not(.is-entry) .page{padding-top:45px}body:not(.is-entry) .page-head{border:0;border-bottom:1px solid var(--journal-line);border-radius:0;box-shadow:none;background:transparent;padding:0 0 30px;min-height:155px}body:not(.is-entry) .page-head::before,body:not(.is-entry) .page-head::after{display:none}.page-head h1{font-family:var(--font-serif);font-size:40px;font-weight:500}.page-head-art{opacity:.9}body:not(.is-entry) .paper-card{border:1px solid #ded1d7;border-radius:3px;box-shadow:none;background:#faf6f2}.post-top{background:#f0e7e9}.post-card::before,.topic::before{display:none}.side-note::before,.talk-side::before{display:none}.side-note{transform:none}.date-group-title,.date-group-title small{color:#785b6c;text-shadow:none}.search-panel{box-shadow:none;border-radius:3px;background:#f9f4f0}.btn{border-radius:3px;box-shadow:none}.btn:hover{box-shadow:none}.field{border-radius:3px}.about-content::before{height:2px}.post-card h2,.topic h3{font-family:var(--font-serif);font-weight:500}.post-card p,.topic>p{line-height:2}
@keyframes flower-turn{to{transform:rotate(360deg)}}
@media(min-width:1500px){.journal-hero{min-height:735px}.journal-collage{height:575px}.collage-main{height:430px}.collage-small{height:265px}}
@media(max-width:1000px){body.is-entry .site-header,body:not(.is-entry) .site-header,.journal-home{width:calc(100% - 56px)}.main-nav{gap:17px}.journal-hero{min-height:580px;padding:48px 0}.journal-intro h1{font-size:60px}.journal-intro-bottom{align-items:start;flex-direction:column}.journal-collage{height:450px}.collage-main{height:325px;right:2%;width:80%;top:47px}.collage-small{height:195px;width:48%;bottom:6px}.collage-character{width:130px;bottom:21px}.collage-seal{width:83px;height:83px;right:-6px}.collage-script{font-size:28px}.collage-note{bottom:-17px}.chapter-link{padding-left:17px;padding-right:17px}.chapter-link h3{font-size:23px}.journal-letter{padding:28px}.journal-entry{gap:13px}.journal-latest-grid{gap:5%}}
@media(max-width:700px){body.is-entry .site-header,body:not(.is-entry) .site-header{width:calc(100% - 36px);height:auto;padding:20px 0 12px;gap:18px}.brand{font-size:20px}.main-nav{order:3;padding:0;gap:0;justify-content:space-between;font-size:11px;overflow:visible}.main-nav a{padding:8px 0}.header-heart{margin-left:auto}.journal-home{width:calc(100% - 40px)}.journal-hero{grid-template-columns:1fr;gap:20px;padding:34px 0 39px;min-height:0}.journal-kicker{font-size:8px}.journal-intro h1{font-size:clamp(43px,10vw,68px);margin:23px 0 25px;line-height:1.25}.journal-intro h1 br:nth-of-type(2){display:initial}.journal-intro h1 em{white-space:nowrap}.title-flower{margin-left:16px;margin-right:10px;font-size:.66em}.journal-intro-bottom{flex-direction:row;align-items:end;padding:0;gap:12px}.journal-intro-bottom p{font-size:10px}.journal-cta{font-size:10px}.journal-cta span{margin-left:12px;font-size:18px}.journal-collage{height:410px;max-width:450px;width:100%;margin:15px auto 0}.collage-main{height:305px;top:37px;right:5%;width:71%}.collage-small{height:193px;bottom:8px;width:43%;left:4%}.collage-script{left:3%;font-size:27px}.collage-seal{right:1%;top:6px;width:80px;height:80px;font-size:10px}.collage-character{right:12%;bottom:20px;width:128px}.collage-note{right:4%;bottom:-6px;font-size:8px}.journal-section-label{gap:10px}.journal-section-label h2{font-size:12px}.journal-section-label>span{font-size:7px;letter-spacing:.02em}.chapter-grid{grid-template-columns:repeat(2,1fr);padding-bottom:28px}.chapter-link{padding:18px 16px}.chapter-link:first-child{padding-left:16px}.chapter-link:nth-child(2){border-right:0}.chapter-link:nth-child(n+3){border-top:0}.chapter-link h3{font-size:25px;margin:16px 0 7px}.chapter-link p{font-size:10px;margin-bottom:17px}.chapter-meta{font-size:7px}.journal-latest .journal-section-label{padding-bottom:20px}.journal-latest h2{font-size:21px}.journal-latest h2 em{font-size:15px;margin-left:8px}.journal-latest .journal-section-label>span{display:none}.journal-latest-grid{grid-template-columns:1fr;gap:24px}.journal-entry h3{font-size:21px}.journal-entry p{font-size:11px}.journal-letter{padding:29px}.journal-letter h3{font-size:30px}.journal-search{margin-top:32px}.journal-signoff{padding:45px 0 48px}body.is-entry .site-footer,body:not(.is-entry) .site-footer{padding:20px}body:not(.is-entry) .container{padding-left:20px;padding-right:20px}.page-head h1{font-size:31px}body:not(.is-entry) .page-head{padding:0 0 23px}.page-head-copy{max-width:calc(100% - 80px)}.page-head-art{width:85px;margin-right:0}}
@media(prefers-reduced-motion:reduce){.title-flower{animation:none}.journal-home *{transition:none!important}}
/* Home interactions and a dedicated chapter directory below the hero. */
body.is-entry .main-nav{display:none}
body.is-entry .site-header{height:88px}
button.journal-cta{background:transparent;border:0;border-bottom:1px solid #937587;color:inherit;padding:0 0 9px;font-family:inherit}
.mood-picker{margin-top:28px;padding-top:19px;border-top:1px solid var(--journal-line);max-width:430px}
.mood-label{font-size:11px;color:#806878}.mood-options{display:flex;gap:9px;margin-top:12px}.mood-options button{border:1px solid #d3bfc9;border-radius:30px;background:transparent;color:#795b6c;padding:7px 16px;font-size:11px;transition:background .2s,transform .2s}.mood-options button span{font-size:15px;margin-right:4px}.mood-options button:hover{background:#eee0e7;transform:translateY(-2px)}.mood-options button[aria-pressed="true"]{background:#805e73;color:#fff;border-color:#805e73}.mood-picker p{min-height:20px;margin:12px 0 0;font-size:11px;line-height:1.8;color:#896c7e}
.artwork-switch{display:block;position:relative;border:0;padding:0;background:none;width:100%;height:calc(100% - 28px);overflow:hidden}.collage-main .artwork-switch img{height:100%;transition:transform .5s}.artwork-switch:hover img{transform:scale(1.035)}.artwork-hint{position:absolute;top:14px;left:12px;background:#faf6f2ee;color:#684b5b;font-size:10px;padding:7px 12px;border-radius:30px;box-shadow:0 2px 8px #49364315}.character-greeting{padding:0;border:0;background:none;z-index:4;cursor:pointer}.character-greeting img{display:block;width:100%;height:auto}.character-greeting>span{display:block;position:absolute;right:8px;bottom:-5px;border:1px solid #d6c0cc;border-radius:20px;background:#faf6f2;color:#806176;padding:3px 10px;font-size:9px;transform:rotate(-5deg)}
.journal-chapters{scroll-margin-top:28px}.journal-chapters:focus{outline:none}.explore-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;border-top:1px solid var(--journal-line);padding:32px 0 28px}.explore-heading h2{font:400 30px/1.4 var(--font-serif);margin:8px 0}.explore-heading h2 em{font:italic 21px var(--font-serif);color:#a08293;margin-left:14px}.explore-heading p{font-size:11px;color:#89717f;margin:0}.random-note{background:#e8dce3;border:1px solid #d6c2ce;border-radius:30px;color:#715466;padding:11px 19px;white-space:nowrap;font-size:11px;transition:background .2s,transform .2s}.random-note>span{font-size:20px;vertical-align:middle;margin-right:7px;display:inline-block}.random-note:hover{background:#e0cfda;transform:translateY(-2px)}.random-note:hover>span{transform:rotate(20deg)}.random-note:disabled{opacity:.5;cursor:default}
@media(max-width:700px){body.is-entry .site-header{padding:15px 0;height:78px}.mood-picker{margin-top:23px;padding-top:16px;max-width:none}.mood-options button{padding:7px 17px}.explore-heading{align-items:flex-start;flex-direction:column;gap:18px;padding:25px 0}.explore-heading h2{font-size:27px}.explore-heading h2 em{font-size:18px;margin-left:9px}.random-note{padding:8px 15px}.collage-note{bottom:-12px}.character-greeting>span{right:0}}
/* A shared, navigation-free masthead and a layered opening sequence. */
body:not(.is-entry) .site-header{height:88px;flex-wrap:nowrap}
.opening-welcome{font:400 12px/1.7 var(--font-serif);letter-spacing:.2em;color:#99758a;margin:18px 0 -14px}
.opening-line{display:block}
.journal-hero{position:relative;isolation:isolate}
.journal-hero::before{content:'';position:absolute;z-index:-1;right:-2%;top:8%;width:62%;height:80%;background:radial-gradient(ellipse,#e5cddc80,transparent 68%);pointer-events:none}
button.journal-cta{display:inline-flex;align-items:center;gap:18px;background:#78546b;color:#fff;border:1px solid #78546b;border-radius:40px;padding:12px 19px;box-shadow:0 6px 18px #78546b18;transition:background .2s,transform .2s}
button.journal-cta span{margin:0;font-size:20px}button.journal-cta:hover{background:#644359;transform:translateY(-3px)}
.opening-invitation{display:flex;align-items:center;justify-content:space-between;width:100%;gap:18px;margin:0 0 27px;padding:18px 0;background:none;border:0;color:#806777;font-size:11px;text-align:left;letter-spacing:.06em}.opening-index{font:9px/1.5 var(--font-sans);letter-spacing:.16em;color:#aa91a0}.opening-down{display:grid;place-items:center;width:40px;height:40px;border:1px solid #c9b5c1;border-radius:50%;font-size:20px;transition:background .2s,transform .2s}.opening-invitation:hover .opening-down{background:#e8dce3;transform:translateY(4px)}
@media(prefers-reduced-motion:no-preference){
.journal-intro>.journal-kicker,.opening-welcome,.opening-line,.journal-intro-bottom,.mood-picker,.opening-invitation{animation:opening-rise .85s cubic-bezier(.16,1,.3,1) both}
.opening-welcome{animation-delay:.08s}.opening-line:nth-child(1){animation-delay:.14s}.opening-line:nth-child(2){animation-delay:.26s}.opening-line:nth-child(3){animation-delay:.38s}.journal-intro-bottom{animation-delay:.48s}.mood-picker{animation-delay:.58s}.opening-invitation{animation-delay:.7s}
.collage-main{animation:opening-photo 1.2s cubic-bezier(.16,1,.3,1) .15s both}.collage-small{animation:opening-small 1.2s cubic-bezier(.16,1,.3,1) .32s both}.collage-script,.collage-seal{animation:opening-ink 1s ease .5s both}.character-greeting{animation:opening-rise .9s cubic-bezier(.16,1,.3,1) .65s both}
}
@keyframes opening-rise{from{opacity:0;translate:0 28px}to{opacity:1;translate:0 0}}
@keyframes opening-photo{from{opacity:0;transform:translate(35px,45px) rotate(13deg) scale(.94)}to{opacity:1;transform:rotate(5deg)}}
@keyframes opening-small{from{opacity:0;transform:translate(-25px,40px) rotate(-17deg) scale(.94)}to{opacity:1;transform:rotate(-9deg)}}
@keyframes opening-ink{from{opacity:0}to{opacity:1}}
@media(max-width:700px){body:not(.is-entry) .site-header{height:78px;padding:15px 0}.opening-welcome{font-size:11px;margin:16px 0 -10px}.journal-hero::before{top:45%;right:0;width:100%;height:50%}button.journal-cta{padding:9px 13px;gap:10px}.opening-invitation{margin-bottom:15px;font-size:10px;gap:12px}.opening-index{font-size:7px;max-width:85px}.opening-down{width:34px;height:34px;flex-shrink:0}}
/* Paper transitions: a left-bound sheet, ruled edges and a moving fold shadow. */
.paper-transition{position:fixed;inset:0;z-index:50;perspective:1800px;pointer-events:none;overflow:hidden;contain:layout style}
.paper-transition[hidden]{display:none}
.turn-sheet{position:absolute;inset:-2px;transform-origin:left center;backface-visibility:hidden;background:linear-gradient(90deg,#c9b6bf 0,#e2d4d9 2%,#f4eee8 7%,#f7f1eb 65%,#e7dce2 100%);box-shadow:18px 0 65px #3e263750;will-change:transform;overflow:hidden}
.turn-sheet::before{content:'';position:absolute;inset:22px;border:1px solid #bca2b540;pointer-events:none}
.turn-sheet::after{content:'';position:absolute;inset:0;background:linear-gradient(105deg,transparent 45%,#846a7b0d 70%,#fff9 90%,#7b5b7626);pointer-events:none}
.turn-spine{position:absolute;left:3%;top:0;bottom:0;width:6px;background:linear-gradient(90deg,#ab8eaa35,#fff6,#ab8eaa15)}
.turn-copy{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:25px;padding:40px;text-align:center;color:#72526a}
.turn-copy>span,.turn-page-number{font:9px/1.5 var(--font-sans);letter-spacing:.25em;color:#a18a98}.turn-copy i{font:normal 70px/1 var(--font-serif);color:#b597ac}.turn-copy strong{font:400 clamp(25px,4vw,52px)/1.5 var(--font-serif);letter-spacing:.08em}.turn-copy small{font-size:11px;letter-spacing:.12em;color:#a18a98}.turn-page-number{position:absolute;bottom:40px;right:40px}
.paper-transition.is-reverse .turn-sheet{transform-origin:right center;background:linear-gradient(270deg,#c9b6bf 0,#e2d4d9 2%,#f4eee8 7%,#f7f1eb 65%,#e7dce2 100%)}.paper-transition.is-reverse .turn-spine{left:auto;right:3%}
.chapter-link{position:relative;overflow:hidden}.chapter-link::after{content:'';position:absolute;right:0;bottom:0;width:28px;height:28px;background:linear-gradient(135deg,#d5becb 49%,#f4efe9 51%);transform:translate(29px,29px);transition:transform .35s;box-shadow:-2px -2px 4px #60445610}.chapter-link:hover::after,.chapter-link:focus-visible::after{transform:none}
@media(prefers-reduced-motion:no-preference){.reveal-item{transition:opacity .65s ease var(--reveal-delay,0ms),translate .65s cubic-bezier(.2,.7,.2,1) var(--reveal-delay,0ms)}.reveal-pending{opacity:0;translate:0 24px}.reveal-pending:focus-within{opacity:1;translate:none}}
@media(max-width:700px){.paper-transition{perspective:1000px}.turn-copy{gap:20px;padding:30px}.turn-copy i{font-size:52px}.turn-page-number{right:25px;bottom:30px}}
@media(prefers-reduced-motion:reduce){.paper-transition{display:none!important}.reveal-pending{opacity:1;translate:none}.chapter-link::after{transition:none}}
/* Keep tilted entry artwork from creating a horizontal scrollbar mid-animation. */
body{overflow-x:clip}
/* Tactile title page: warm paper grain, a pressed binding and layered edges. */
.journal-intro{position:relative;isolation:isolate;min-width:0;padding:38px 30px 42px 48px;border:1px solid #d7c9bc;border-radius:5px 12px 12px 5px;background:radial-gradient(ellipse at 85% 12%,#fffdf399,transparent 65%),repeating-linear-gradient(0deg,#8a695006 0 1px,transparent 1px 4px),repeating-linear-gradient(93deg,#96735205 0 1px,transparent 1px 5px),linear-gradient(90deg,#d8c7b7 0,#eee1cf 12px,#faf2e3 30px,#f8efdf 90%,#ede0cc 100%);box-shadow:inset 2px 0 3px #fff9,inset -1px 0 3px #ae92742b,3px 3px 0 #eee3d3,4px 4px 0 #c7b6a5,6px 6px 0 #f7eddf,7px 7px 0 #cbbba9,10px 12px 0 -2px #c7afbc,14px 23px 32px -18px #69485355}
.journal-intro::before{content:'';position:absolute;inset:0 auto 0 15px;width:9px;background:linear-gradient(90deg,#94755e15,#fff8 42%,#94755e21 65%,transparent);border-left:1px solid #b6a28c42;pointer-events:none}
.journal-intro::after{content:'— 01 —';position:absolute;bottom:13px;left:0;right:0;text-align:center;font:italic 10px/1.5 var(--font-serif);color:#ac937d;letter-spacing:.2em;pointer-events:none}
.journal-intro h1{font-size:clamp(46px,4.7vw,73px);text-shadow:0 1px 0 #fff7}
.journal-intro .journal-kicker{font-size:8px;letter-spacing:.12em}.journal-intro .mood-picker{border-top-color:#cbb69c66}.journal-intro .mood-options button{background:#fff9eb44;border-color:#bfa89d80}.journal-intro .mood-options button[aria-pressed="true"]{background:#805e73;border-color:#805e73}
.journal-intro-bottom{align-items:center;min-height:112px;padding-right:0;gap:16px}
button.journal-cta{position:relative;isolation:isolate;flex:none;flex-direction:column;justify-content:flex-start;align-items:center;gap:12px;width:78px;min-height:110px;padding:19px 7px 28px;border:0;border-radius:0;background:none;color:#fff3e6;font-size:11px;letter-spacing:.06em;box-shadow:none;filter:drop-shadow(3px 6px 3px #57334535);transform:rotate(3deg);transform-origin:50% 0;transition:transform .3s,filter .3s}
button.journal-cta::before{content:'';position:absolute;inset:0;z-index:-1;clip-path:polygon(0 0,100% 0,100% 100%,50% 84%,0 100%);background:repeating-linear-gradient(90deg,#ffffff08 0 1px,transparent 1px 3px),linear-gradient(90deg,#604157,#97718c 13%,#805b75 38%,#946c88 77%,#5f3c55);border-top:3px solid #54364c;box-shadow:inset 0 4px 5px #43203c33}
button.journal-cta::after{content:'';position:absolute;top:7px;bottom:25px;left:6px;right:6px;border-left:1px dashed #e7cadb66;border-right:1px dashed #e7cadb66;pointer-events:none}
button.journal-cta span{font:25px/1 var(--font-serif);margin:0;color:#ecd9de}
button.journal-cta:hover{background:none;transform:rotate(0) translateY(4px);filter:drop-shadow(3px 8px 4px #57334540)}button.journal-cta:hover span{transform:translateY(2px)}button.journal-cta:focus-visible{outline:2px solid #80546e;outline-offset:5px}button.journal-cta:active{transform:translateY(7px)}
@media(min-width:701px) and (max-width:1000px){.journal-hero{grid-template-columns:1.2fr 1fr;gap:22px}.journal-intro{padding:30px 20px 38px 34px}.journal-intro h1{font-size:clamp(34px,4.6vw,46px)}.journal-intro-bottom{flex-direction:row;gap:10px}.journal-intro-bottom p{font-size:10px}.journal-intro .mood-options{gap:5px}.journal-intro .mood-options button{padding:6px 10px}}
@media(max-width:700px){.journal-intro{padding:30px 25px 38px 36px;border-radius:4px 9px 9px 4px}.journal-intro::before{left:11px;width:7px}.journal-intro h1{font-size:clamp(37px,9.2vw,62px)}.journal-intro-bottom{align-items:center;gap:12px;min-height:104px}.journal-intro-bottom p{font-size:10px}.journal-intro .mood-picker{margin-top:18px}.journal-intro .mood-options button{padding:7px 12px}.journal-intro .journal-kicker{font-size:7px}.journal-intro .mood-picker p{font-size:10px}button.journal-cta{width:70px;min-height:104px;padding:17px 5px 26px;font-size:10px;gap:11px}}
@media(max-width:370px){.journal-intro{padding-left:28px;padding-right:18px}.journal-intro h1{font-size:33px}.journal-intro-bottom p{font-size:9px}.journal-intro .mood-options button{padding:6px 9px}}
@media(prefers-reduced-motion:reduce){button.journal-cta{transition:none}button.journal-cta:hover,button.journal-cta:active{transform:rotate(3deg)}}
/* The public mood is a journal entry; only the signed-in owner gets an edit control. */
.mood-topline{display:flex;align-items:center;justify-content:space-between;gap:12px}.mood-label{font-size:12px;letter-spacing:.06em}.mood-edit{font-size:10px;color:#84576c;border-bottom:1px solid #b99cad;padding:4px 0}.mood-current{display:flex;align-items:center;gap:10px;margin-top:13px;color:#6e4d62}.mood-current-icon{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:#e8dbe2;font-size:20px}.mood-current strong{font:400 20px/1.3 var(--font-serif)}.mood-current time{font:10px/1.4 var(--font-sans);color:#9a8190;margin-left:auto}.mood-picker .mood-empty{color:#9b8691}
.mood-history{border-top:1px solid var(--journal-line);padding:22px 0 25px}.mood-history-heading{display:flex;align-items:end;justify-content:space-between;gap:15px}.mood-history-heading h2{font:400 23px/1.3 var(--font-serif);margin:5px 0 0}.mood-history-heading>span{font-size:10px;color:#9a8190}.mood-history-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-top:20px}.mood-history-item{position:relative;min-height:100px;padding:15px 16px;border:1px solid #dbcdd2;background:#f8f2ed}.mood-history-item time{display:block;font:10px/1.5 var(--font-sans);color:#9a8190}.mood-history-item strong{display:block;margin-top:9px;font:400 18px/1.35 var(--font-serif);color:#60485a}.mood-history-item strong span{color:#956e86}.mood-history-item p{font-size:10px;line-height:1.6;color:#8c7380;margin:8px 0 0;overflow-wrap:anywhere}.mood-history-item button{position:absolute;right:14px;top:12px;font-size:10px;color:#84576c;text-decoration:underline}.mood-history-empty{font-size:11px;color:#9a8190;margin:0;padding:5px 0}
@media(max-width:700px){.mood-history{padding:18px 0 23px}.mood-history-heading h2{font-size:21px}.mood-history-heading>span{font-size:9px}.mood-history-list{grid-template-columns:repeat(2,minmax(0,1fr))}.mood-current strong{font-size:18px}}

.collage-note{max-width:72%;text-align:right;line-height:1.6}
.collage-small img{height:calc(100% - 48px)}.collage-small figcaption{min-height:48px;padding:2px 3px;display:flex;align-items:center;justify-content:center;font:9px/1.45 var(--font-serif);letter-spacing:.03em}

.back-to-directory{display:inline-block;margin-bottom:15px;color:#967083;font-size:12px;line-height:1.5;text-decoration:none}.back-to-directory:hover{text-decoration:underline;color:#704b5e}.back-to-directory:focus-visible{outline:2px solid #967083;outline-offset:4px}

.journal-search .search-field{transition:background-color .25s,border-color .25s,transform .25s}.journal-search .search-field span{transition:transform .25s,color .25s}.journal-search .search-field:focus-within{background:#fffaf8;border-color:#8f6780;transform:translateY(-2px);box-shadow:0 0 0 3px #e9dce580}.journal-search .search-field:focus-within span{color:#80576f;transform:rotate(-12deg) scale(1.1)}@media(prefers-reduced-motion:reduce){.journal-search .search-field,.journal-search .search-field span{transition:none}}

.journal-search{position:relative;z-index:5}
.journal-search .search-panel{position:relative}
.journal-search .search-results:not(:empty){
  position:absolute;top:calc(100% + 10px);left:0;right:0;
  max-height:min(340px,45dvh);margin:0;padding:12px 16px;
  overflow-y:auto;border:1px solid #cdb4c2;border-radius:14px;
  background:linear-gradient(135deg,#d7b4c6 0 12px,transparent 12px) top left/24px 24px no-repeat,
    linear-gradient(315deg,#d7b4c6 0 12px,transparent 12px) bottom right/24px 24px no-repeat,
    rgba(255,250,252,.98);
  box-shadow:0 16px 38px rgba(80,48,68,.18),0 2px 0 #fff inset;
  backdrop-filter:blur(10px)
}
/* Saber holds the note at the height of her raised palms. */
.saber-scene{display:block;width:100%;margin:38px auto 0;padding:16px 0 0;border:0;background:none;color:#765a6b;text-align:center;cursor:pointer;-webkit-tap-highlight-color:transparent}
.saber-lift{display:flex;flex-direction:column;align-items:center;position:relative;transition:transform .45s cubic-bezier(.2,.8,.3,1);transform-origin:50% 90%}
.saber-frame{display:block;position:relative;z-index:2;width:min(100%,340px);padding:19px 24px;border:1px solid #c5a3b5;border-radius:4px;background:linear-gradient(135deg,#fffaf0,#f4e7e9);box-shadow:3px 4px 0 #e7d6dd,0 7px 16px #73526512;font:15px/1.9 var(--font-serif)}
.saber-frame::before{content:'';position:absolute;inset:6px;border:1px solid #ceb7b64d;pointer-events:none}
.saber-frame-label{display:block;margin-bottom:8px;color:#ad8693;font:8px/1.5 var(--font-sans);letter-spacing:.19em}
.saber-character{display:block;position:relative;z-index:1;width:240px;max-width:90%;height:auto;margin-top:-29px;filter:drop-shadow(0 6px 3px #6e52621a);user-select:none;-webkit-user-drag:none}
.saber-hint{display:block;margin-top:13px;font:11px/1.8 var(--font-sans);color:#9a7889}
.saber-spark{position:absolute;right:14px;top:10px;color:#bda06a;opacity:0;transition:opacity .25s}
.saber-scene[aria-pressed="true"] .saber-lift{transform:translateY(-14px) rotate(-3deg)}
.saber-scene[aria-pressed="true"] .saber-spark{opacity:1}
.saber-scene:focus-visible{outline:2px solid #967083;outline-offset:6px;border-radius:5px}
@media(hover:hover){.saber-scene:hover .saber-frame{border-color:#9a7389}.saber-scene:hover .saber-hint{color:#765368}}
@media(max-width:400px){.saber-frame{padding:18px 12px;font-size:13px}.saber-frame-label{font-size:7px}.saber-character{width:210px;margin-top:-25px}.saber-hint{font-size:10px}}
@media(prefers-reduced-motion:reduce){.saber-lift,.saber-spark{transition:none}.saber-scene[aria-pressed="true"] .saber-lift{transform:none}.saber-scene[aria-pressed="true"] .saber-frame{border-color:#967083;background:#f2e2e9}}
.greeting-scene{display:block;width:100%;padding:0;margin:0 0 28px;border:0;background:none;color:#80566f;text-align:center;cursor:pointer;-webkit-tap-highlight-color:transparent}
.greeting-perch{display:flex;flex-direction:column;align-items:center;transform-origin:50% 90%}
.greeting-perch img{position:relative;z-index:2;display:block;width:220px;max-width:100%;height:auto;margin-bottom:-23px;filter:drop-shadow(0 4px 2px #65405718);user-select:none;-webkit-user-drag:none}
.greeting-frame{display:block;position:relative;width:100%;max-width:300px;padding:31px 10px 15px;border:1px solid #c5a7bf;border-radius:5px;background:linear-gradient(135deg,#faf3f7,#eee3f1);box-shadow:3px 4px 0 #e4d7e4;transition:background .2s}
.greeting-copy{display:block;font:13px/1.8 var(--font-serif)}
.greeting-hint{display:block;margin-top:6px;color:#ab879e;font:10px/1.7 var(--font-sans)}
.greeting-scene:focus-visible{outline:2px solid #967083;outline-offset:6px;border-radius:5px}
.greeting-scene[aria-pressed="true"] .greeting-frame{background:#f7e5ed;border-color:#ab7b98}
@media(hover:hover){.greeting-scene:hover .greeting-frame{border-color:#966581}}
@media(prefers-reduced-motion:no-preference){.greeting-scene[aria-pressed="true"] .greeting-perch{animation:greeting-wave .7s ease-in-out both}}
@keyframes greeting-wave{0%,100%{transform:rotate(0)}25%{transform:translateY(-6px) rotate(-5deg)}55%{transform:translateY(-3px) rotate(4deg)}80%{transform:rotate(-2deg)}}
.study-companion{position:relative;align-self:start;padding-top:136px;min-width:0}
.study-runner{position:absolute;top:0;left:4px;z-index:2;width:180px;max-width:75%;padding:0;border:0;background:none;cursor:pointer;transform-origin:50% 100%;-webkit-tap-highlight-color:transparent}
.study-runner img{display:block;width:100%;height:auto;filter:drop-shadow(0 3px 2px #54446118);user-select:none;-webkit-user-drag:none}
.study-runner:focus-visible{outline:2px solid #967083;outline-offset:4px;border-radius:8px}
.study-companion .side-note{display:block}
.study-companion .runner-hint{display:block;margin-top:17px;padding-top:12px;border-top:1px solid #e5dbe7;color:#9b849f;font:10px/1.8 var(--font-sans)}

.modal .login-error{margin:9px 0 0;color:#a43e58;font-size:12px;line-height:1.6}.modal .field[aria-invalid="true"]{border-color:#b34d65}
.avatar{position:relative;overflow:hidden;aspect-ratio:1}
.avatar img{position:absolute;inset:0;display:block;width:100%;height:100%;min-width:0;min-height:0;border-radius:50%;object-fit:cover}
.profile-card .meta>div{overflow-wrap:anywhere}
.profile-card .meta .meta-detail{margin:7px 0 2px 0;padding-left:0;white-space:pre-wrap;line-height:1.7;color:#745c69}
.profile-hobbies{padding:4px 0 2px}
.hobby-label{margin-bottom:10px;color:#b48a9a;font-size:12px}
.hobby-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;padding:1px;border:1px solid #dcc6d0;border-radius:3px;background:#dcc6d0;overflow:hidden}
.hobby-cell{min-width:0;min-height:112px;padding:13px 12px;background:#fffaf8;text-align:left}
.hobby-cell:nth-child(4n+2),.hobby-cell:nth-child(4n+3){background:#faf4f6}
.profile-card .meta .hobby-cell-number{display:block;width:auto;color:#caa7b5;font:italic 11px/1 var(--font-serif)}
.hobby-cell strong{display:block;margin-top:8px;color:#735364;font:17px/1.35 var(--font-serif)}
.profile-card .hobby-cell p{margin:7px 0 0;color:#967c8b;font-size:11px;line-height:1.65;white-space:pre-wrap}
.hobby-cell-empty{grid-column:1/-1;min-height:60px;color:#a68c9a;font-size:12px}
.hobby-editor{margin:18px 0;padding:14px;border:1px solid #e6d2db;border-radius:4px}
.hobby-editor legend{padding:0 7px;color:#835d6a;font-size:13px;font-weight:700}
.hobby-editor>p{margin:0 0 10px}
.hobby-rows{display:grid;gap:12px}
.hobby-row{padding:12px;border:1px solid #ead9e0;border-radius:3px;background:#fffaf9}
.hobby-row-head{display:flex;align-items:center;justify-content:space-between;color:#8a6b7a;font-size:11px}
.hobby-row .field{margin-top:5px}
.modal #profile-form .hobby-row .hobby-detail{min-height:72px}
.hobby-add{margin-top:12px}
.avatar-preview{display:grid;place-items:center;width:80px;height:80px;margin:12px 0 18px;border-radius:50%;background:#f7d7e0;font-size:38px;overflow:hidden}
.avatar-preview{position:relative}
.avatar-preview img{position:absolute;inset:0;display:block;width:100%;height:100%;min-width:0;min-height:0;object-fit:cover}
.modal #profile-form{max-height:min(65vh,680px);overflow-y:auto;padding-right:5px}
.modal #profile-form textarea{min-height:90px}
.modal .form-error{color:#a43e58;font-size:12px;line-height:1.6}
.saber-quote-original,.saber-quote-translation,.saber-quote-source{display:block}
.saber-quote-original{font-size:15px;line-height:1.6}
.saber-quote-translation{margin-top:7px;color:#8d7180;font:11px/1.55 var(--font-sans)}
.saber-quote-source{margin-top:9px;color:#a48291;font:10px/1.4 var(--font-sans)}
.saber-frame{min-height:132px}

.admin-nav{display:flex;flex-wrap:wrap;gap:18px;align-items:center;max-width:1120px;margin:0 auto;padding:16px 20px;border-bottom:1px solid #ded1d7;font-size:12px;color:#805c74}.admin-nav strong{margin-right:auto}.admin-nav a:hover{text-decoration:underline}.admin-login{position:relative;display:block;margin:60px auto 100px;background:#fffaf7}.admin-login h1{font:400 30px/1.5 var(--font-serif)}.admin-site .site-header{gap:16px}

/* The two shelves keep today's notes in view and tuck older pages away by month. */
.study-index{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:28px 0 48px}
.study-index-link{display:flex;align-items:center;gap:20px;width:100%;min-height:105px;padding:20px 24px;border:1px solid #dcd0dd;border-radius:3px;background:#f8f3f6;color:#685269;text-align:left;cursor:pointer;transition:transform .2s,border-color .2s,background .2s}
.study-index-link:nth-child(2){background:#f7f1ed;border-color:#dfd4d1}
.study-index-link:hover{transform:translateY(-3px);border-color:#ad90b8}
.study-index-link:focus-visible,.study-calendar button:focus-visible{outline:2px solid #8e70a8;outline-offset:2px}
.study-index-number{font:italic 29px var(--font-serif);color:#b39bc4}
.study-index-link:nth-child(2) .study-index-number{color:#bb9d91}
.study-index-link strong,.study-index-link small{display:block}
.study-index-link strong{font:24px/1.3 var(--font-serif)}
.study-index-link small{margin-top:6px;color:#a08c9c;font-size:11px}
.study-index-link>span:last-child{margin-left:auto;font:23px var(--font-serif);color:#aa93ac}
.study-lane{scroll-margin-top:30px;margin:0 0 72px}
.study-lane-head{display:flex;align-items:center;gap:20px;padding:0 0 20px;border-bottom:1px solid #d9cbd5}
.study-lane-icon{display:grid;place-items:center;width:62px;height:62px;flex:none;border-radius:50%;background:#ece4f1;font-size:26px}
.study-lane-work .study-lane-icon{background:#eee5df}
.study-kicker{font:700 10px/1.5 var(--font-sans);letter-spacing:.2em;color:#a187ac}
.study-lane-work .study-kicker{color:#ae8d83}
.study-lane-head h2{margin:3px 0;color:#674b60;font:31px/1.3 var(--font-serif)}
.study-lane-head p{margin:0;color:#9c8795;font-size:12px}
.study-lane-head .btn{margin-left:auto;white-space:nowrap}
.study-today{display:grid;gap:18px;margin-top:28px}
.study-subhead{display:flex;align-items:center;justify-content:space-between;gap:15px;color:#7b6179;font-size:14px;font-weight:700}
.study-subhead time,.study-subhead small{color:#ad99a6;font-size:11px;font-weight:400}
.study-today-empty{padding:28px 30px;border:1px dashed #d9c9d5;border-radius:3px;background:#faf7f5;color:#a58e9b;font-size:13px}
.study-archive{margin-top:27px}
.study-archive-heading{display:flex;align-items:baseline;gap:13px;margin-bottom:13px;color:#7b6179}
.study-archive-heading strong{font-size:13px}
.study-archive-heading small{color:#ad99a6;font-size:10px}
.study-calendar-layout{display:flex;align-items:flex-start;gap:22px}
.study-calendar{width:292px;max-width:100%;flex:none;padding:15px 17px 17px;border:1px solid #ded2dc;border-radius:4px;background:#f9f5f7;box-shadow:0 4px 12px #80607708;animation:calendar-in .25s ease-out both}
.study-lane-work .study-calendar{background:#f9f5f2;border-color:#e1d6d1}
.study-calendar-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:11px}
.study-calendar-nav strong{font-size:12px;color:#715a70}
.study-calendar-nav button{width:26px;height:26px;padding:0;border:0;border-radius:50%;background:#efe6ef;color:#886a8b;font-size:22px;line-height:1;cursor:pointer;transition:transform .18s,background .18s}
.study-calendar-nav button:hover:not(:disabled){transform:scale(1.12);background:#e1d1e3}
.study-calendar-nav button:disabled{opacity:.3;cursor:default}
.study-calendar-weekdays,.study-calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;text-align:center}
.study-calendar-weekdays{margin-bottom:5px;color:#aa96a4;font-size:10px}
.study-calendar-weekdays span{line-height:25px}
.study-calendar-day{position:relative;display:grid;place-items:center;width:30px;height:30px;margin:auto;border:0;border-radius:50%;background:transparent;color:#a795a2;font:11px/1 var(--font-sans)}
button.study-calendar-day{color:#6f566e;cursor:pointer;transition:transform .18s,background .18s,color .18s}
button.study-calendar-day:hover{transform:scale(1.1);background:#ecdeec}
button.study-calendar-day[aria-pressed="true"]{background:#987c9e;color:#fff}
.study-lane-work button.study-calendar-day[aria-pressed="true"]{background:#ab897e}
.study-calendar-day i{position:absolute;bottom:3px;width:3px;height:3px;border-radius:50%;background:#bc829e}
.study-calendar-day[aria-pressed="true"] i{background:#fff}
.study-day-content{min-width:0;flex:1;animation:calendar-in .3s ease-out both}
.study-day-title{display:flex;justify-content:space-between;gap:10px;margin:3px 0 12px;color:#785e74;font-size:13px;font-weight:700}
.study-day-title small{color:#ad98a6;font-size:11px;font-weight:400}
.study-day-posts{display:grid;gap:16px}
.study-day-posts .post-card h2{margin-top:17px}
.study-archive-empty{display:inline-block;padding:15px 18px;border:1px dashed #ded0da;border-radius:3px;color:#a894a0;font-size:12px}
@keyframes calendar-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.study-calendar,.study-day-content{animation:none}.study-calendar-nav button,button.study-calendar-day{transition:none}}
.study-lane .post-card{width:100%}
.study-companion-compact{display:grid;grid-template-columns:145px minmax(0,300px);gap:8px;align-items:end;max-width:480px;margin:-24px auto 60px;padding:0}
.study-companion-compact .study-runner{position:relative;top:auto;left:auto;align-self:end;width:145px;max-width:100%}
.study-companion-compact .side-note{padding:21px 23px}
.study-companion-compact .side-note .emoji{font-size:23px}
.study-companion-compact .side-note h3{margin:3px 0 7px}
.reading-plan-card{scroll-margin-top:28px}
.reading-plan-heading{display:flex;align-items:center;gap:13px}
.reading-plan-heading .emoji{width:46px;height:46px;flex:none;font-size:22px}
.reading-plan-heading h3{font:23px/1.3 var(--font-serif)}
.reading-plan-card .reading-book{margin:17px 0 3px;color:#674b60;font:18px/1.45 var(--font-serif)}
.reading-plan-card .reading-author{margin:0 0 11px;color:#a08698;font-size:11px}
.reading-plan-card .reading-goal{display:flex;gap:8px;margin:11px 0;color:#846d80;font-size:12px}
.reading-goal span{color:#a48da0;white-space:nowrap}
.reading-progress-label{display:flex;justify-content:space-between;margin:15px 0 6px;color:#866e83;font-size:11px}
.reading-progress-label strong{color:#80618a}
.reading-plan-card progress{display:block;width:100%;height:7px;border:0;border-radius:9px;accent-color:#a183ae;overflow:hidden}
.reading-plan-card progress::-webkit-progress-bar{background:#e9dfeb;border-radius:9px}
.reading-plan-card progress::-webkit-progress-value{background:#a183ae;border-radius:9px}
.reading-plan-card .reading-note{margin:13px 0 0;color:#967e8f;font-size:11px;white-space:pre-wrap}
.reading-plan-card .reading-empty{margin:17px 0 0;color:#9e8998;font-size:12px}
.reading-plan-card .reading-edit{display:inline-block;margin-top:13px;font-size:11px}
@media(max-width:700px){.study-index{grid-template-columns:1fr;gap:10px;margin-bottom:40px}.study-index-link{min-height:82px}.study-lane{margin-bottom:55px}.study-lane-head{gap:13px}.study-lane-icon{width:48px;height:48px;font-size:21px}.study-lane-head h2{font-size:25px}.study-lane-head p{font-size:11px}.study-lane-head .btn{padding:8px 10px;font-size:10px}.study-calendar-layout{flex-direction:column;gap:17px}.study-day-content{width:100%}.study-companion-compact{grid-template-columns:100px minmax(0,1fr);margin:-16px auto 48px}.study-companion-compact .study-runner{width:100px}.study-companion-compact .side-note{padding:16px}.study-companion-compact .side-note p{margin:5px 0}}

/* 生活归档：开放的时间线、月份书签与圆形手写便笺。 */
.life-archive-layout{display:grid;grid-template-columns:200px minmax(0,1fr);gap:55px;margin-top:40px;align-items:start}
.life-archive-index{position:sticky;top:28px;padding-top:8px}
.life-archive-index h2{font:500 29px/1.5 var(--font-serif);color:#765463;margin:12px 0 8px}
.life-archive-index h2>span{display:inline-block;color:#b77b92;font-size:35px;margin-left:12px;transform:rotate(-14deg)}
.life-archive-index>p{font-size:12px;color:#9b818b;margin-bottom:28px}
.life-year-nav{display:grid;gap:6px;border-left:1px solid #d8bdc7;padding-left:16px}
.life-year-nav button{display:flex;justify-content:space-between;align-items:center;border:0;background:none;text-align:left;padding:10px 6px;color:#967d87;font-size:13px}
.life-year-nav button[aria-pressed=true]{color:#914e6c;font-weight:700}
.life-year-nav button[aria-pressed=true]::before{content:'';width:7px;height:7px;background:#a86280;border-radius:50%;position:absolute;left:-3px}
.life-year-nav small{font:italic 12px var(--font-serif);color:#ad919e}
.life-archive-note{margin:38px -3px 0;width:196px;min-height:194px;padding:27px 18px;text-align:center;background:#eadde0;border-radius:46% 54% 44% 56% / 55% 43% 57% 45%;transform:rotate(-5deg);color:#947181}
.life-archive-note>span{font-size:35px;line-height:1;color:#b17e91}
.life-archive-note p{font:14px/1.9 var(--font-serif);margin:12px 0 8px}
.life-archive-note small{font:italic 11px var(--font-serif)}
.life-month-nav{display:flex;gap:8px 20px;flex-wrap:wrap;border-bottom:1px solid #d9c6ce;padding-bottom:13px}
.life-month-nav button{position:relative;background:none;border:0;padding:7px 0;color:#947b87;font-size:12px}
.life-month-nav button[aria-pressed=true]{color:#884c68}
.life-month-nav button[aria-pressed=true]::after{content:'';position:absolute;bottom:-14px;left:0;right:0;height:3px;background:#a86280;border-radius:60% 40%}
.life-month-nav small{margin-left:5px;font:italic 10px var(--font-serif);opacity:.7}
.life-year-nav button:hover,.life-month-nav button:hover{color:#78425f}
.life-year-nav button:focus-visible,.life-month-nav button:focus-visible{outline:2px solid #a86280;outline-offset:4px;border-radius:2px}
.life-archive-summary{display:flex;justify-content:space-between;gap:14px;padding:21px 0 30px;font:14px var(--font-serif);color:#7e5d6d}
.life-archive-summary small{font:11px/1.6 var(--font-sans);color:#9e8792}
.life-timeline{position:relative}
.life-day{display:grid;grid-template-columns:86px minmax(0,1fr);gap:26px;position:relative;padding-bottom:40px}
.life-day::before{content:'';position:absolute;left:85px;top:16px;bottom:0;border-left:1px solid #d9c1cb}
.life-day:last-child::before{bottom:40px}
.life-date{position:relative;padding-top:1px}
.life-date::after{content:'';position:absolute;right:-4px;top:13px;width:7px;height:7px;border:1px solid #ae7c91;background:#f4efe9;border-radius:50%}
.life-date time{display:flex;flex-direction:column;align-items:flex-start;gap:6px;color:#a07b8b}
.life-date strong{font:italic 43px/1 var(--font-serif);color:#9c627e;letter-spacing:-.07em}
.life-date span{font:10px/1.4 var(--font-sans);letter-spacing:.04em}
.life-date small{font-size:10px;opacity:.8}
.life-day-entries{min-width:0}
body:not(.is-entry) .page-life .life-entry{padding:0 0 23px;border:0;border-bottom:1px solid #dfccd4;border-radius:0;background:transparent;box-shadow:none;overflow:visible}
.page-life .life-entry+.life-entry{margin-top:28px}
.page-life .life-entry .post-top{margin:0;padding:0;min-height:25px;border:0;background:transparent}
.page-life .life-entry .tag{padding:2px 0;border-radius:0;background:none;color:#a77d91;font-size:10px;letter-spacing:.12em}
.life-entry-star{color:#b98b9e;font:25px var(--font-serif);transform:rotate(12deg)}
.page-life .life-entry h2{margin:10px 0 14px;font-size:26px;line-height:1.5;color:#715060}
.page-life .life-entry p{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;line-height:2.1;color:#826b77}
.page-life .life-entry .post-foot{border:0;margin-top:17px;padding:0;color:#aa8a9a;font-size:10px}
.life-empty{padding:50px 15px;color:#9b7a8b;font:15px/2 var(--font-serif);text-align:center}
@media(max-width:850px){.life-archive-layout{grid-template-columns:155px minmax(0,1fr);gap:25px}.life-archive-note{width:150px;min-height:160px;padding:22px 10px}.life-day{grid-template-columns:67px minmax(0,1fr);gap:20px}.life-day::before{left:66px}.life-archive-index h2{font-size:23px}.life-archive-index h2>span{font-size:26px;margin-left:6px}}
@media(max-width:600px){.life-archive-layout{grid-template-columns:1fr;gap:22px;margin-top:25px}.life-archive-index{position:static;padding:0}.life-archive-index h2{margin:5px 0;font-size:26px}.life-archive-index>p{margin:5px 0 16px}.life-year-nav{display:flex;gap:18px;border-left:0;padding:0;flex-wrap:wrap}.life-year-nav button{gap:12px;padding:5px 0}.life-year-nav button[aria-pressed=true]::before{display:none}.life-year-nav button[aria-pressed=true]{text-decoration:underline;text-underline-offset:6px}.life-archive-note{display:none}.life-month-nav{gap:5px 16px}.life-archive-summary{padding:20px 0 25px;flex-wrap:wrap}.life-day{grid-template-columns:55px minmax(0,1fr);gap:18px;padding-bottom:30px}.life-day::before{left:54px}.life-date strong{font-size:35px}.life-date span{font-size:8px}.life-date small{font-size:9px}.page-life .life-entry h2{font-size:22px}.page-life .life-entry p{font-size:13px}.life-entry-star{font-size:20px}}

.education-editor,.github-editor{min-width:0;margin:22px 0;padding:14px 16px 8px;border:1px solid #e4d3dc;border-radius:16px;background:#fcf8fa}
.education-editor legend,.github-editor legend{padding:0 7px;color:#8b6177;font-weight:600;font-size:13px}
.education-editor>p,.github-editor>p{margin:0 0 14px;color:#9b7c8b;font-size:11px;line-height:1.8}
.github-editor>p{margin:0 0 8px}
.profile-card .meta .profile-education>span{width:auto}
.education-timeline{margin:14px 0 0 4px;padding-left:16px;border-left:1px solid #dbc0ce}
.education-timeline>div{position:relative;margin:0 0 15px}
.education-timeline>div::before{content:'';position:absolute;left:-20px;top:5px;width:6px;height:6px;background:#b17e98;border-radius:50%}
.education-timeline dt{color:#a37a8d;font-size:11px}
.education-timeline dd{margin:4px 0 0;line-height:1.8;white-space:pre-wrap;overflow-wrap:anywhere;color:#745c69}
.education-stage-editor{padding:0 0 10px;margin-bottom:14px;border-bottom:1px dashed #e5d7df}
.education-stage-editor .school-link-label{font-size:11px;font-weight:400;color:#9b7c8b}
.education-timeline .school-link{display:inline;margin-top:0;color:#9b627f;border-bottom:1px solid #d5b6c8;font-size:inherit;line-height:1.8;white-space:normal}
.education-timeline .school-link:hover{color:#73475f;border-bottom-color:currentColor}
.education-timeline .school-link:focus-visible{outline:2px solid #a86280;outline-offset:4px}
.school-link i{font-style:normal;margin-left:4px}
.profile-card .meta .contact-note{color:#a17e90;font-size:11px;line-height:1.8;white-space:pre-wrap;border-bottom:1px dashed #e0cad5;padding:0 0 14px;margin-top:-4px}
.profile-card .meta>.profile-hobbies{margin-top:8px}

/* 留言帖子像散落的对话气泡，内容在弹窗里展开。 */
.talk-bubble-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:26px 0;color:#947b89}
.talk-bubble-heading p{font-size:11px;margin:0}
.talk-bubbles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:36px 30px;padding:15px 0 24px;align-items:start}
.talk-bubble{position:relative;min-width:0;border-radius:32px 32px 32px 8px;background:#eadde5;box-shadow:0 6px 0 #d8c3d04d;transition:transform .2s}
.talk-bubble:nth-child(even){margin-top:38px;border-radius:32px 32px 8px 32px}
.talk-bubble::after{content:'';position:absolute;left:17px;bottom:-14px;border-top:18px solid #eadde5;border-right:19px solid transparent;transform:rotate(10deg)}
.talk-bubble:nth-child(even)::after{left:auto;right:17px;transform:scaleX(-1) rotate(10deg)}
.talk-bubble.bubble-tone-1{background:#e7e2ec}.talk-bubble.bubble-tone-1::after{border-top-color:#e7e2ec}
.talk-bubble.bubble-tone-2{background:#f0e2db}.talk-bubble.bubble-tone-2::after{border-top-color:#f0e2db}
.talk-bubble:hover{transform:translateY(-3px)}
.talk-bubble-open{display:block;width:100%;padding:28px 30px;border:0;border-radius:inherit;background:transparent;text-align:left;color:#78556b}
.talk-bubble-open:focus-visible{outline:2px solid #9e6688;outline-offset:5px}
.bubble-meta{display:flex;gap:12px;justify-content:space-between;font-size:10px;color:#9a7b8c}
.bubble-meta time{white-space:nowrap;font-size:9px}
.talk-bubble h2{font:500 25px/1.5 var(--font-serif);margin:15px 0 12px;overflow-wrap:anywhere}
.talk-bubble p{font-size:13px;line-height:1.9;margin:0;color:#8a7280;white-space:pre-wrap;overflow-wrap:anywhere}
.bubble-invitation{display:flex;justify-content:space-between;gap:12px;margin-top:24px;font-size:10px;color:#a17b91}
.bubble-admin{display:flex;justify-content:flex-end;gap:14px;padding:0 27px 18px}
.talk-new-invitation{text-align:center;margin:38px 0 0;padding:25px 0;color:#9d7a8f}
.talk-new-invitation>span{font:42px var(--font-serif);color:#b791a6}.talk-new-invitation p{font:17px var(--font-serif)}
.talk-empty{grid-column:1/-1;text-align:center;padding:45px 0;font-size:14px;color:#a17b91}
.modal:has(.conversation){border-radius:30px 30px 30px 10px;width:min(600px,calc(100vw - 28px));padding:28px;max-height:90dvh;overflow-y:auto;background:#fffafc}
.conversation>label{margin-top:15px}.conversation>h2{font-family:var(--font-serif);font-size:23px;margin:20px 0 16px;overflow-wrap:anywhere}
.conversation .field{border-radius:14px}
.conversation-scroll{max-height:32dvh;overflow-y:auto;overscroll-behavior:contain;padding:4px 10px 13px 1px;display:grid;gap:16px}
.conversation-message{margin-right:22px;padding:15px 18px;background:#f1e6ee;border-radius:19px 19px 19px 4px;min-width:0}
.conversation-message:nth-child(even){margin-left:22px;margin-right:0;background:#ece8f2;border-radius:19px 19px 4px 19px}
.conversation-original{background:#e7d8e2}
.conversation-meta{display:flex;justify-content:space-between;gap:10px;color:#9b7a90;font-size:10px}
.conversation-meta strong{overflow-wrap:anywhere}.conversation-meta time{flex-shrink:0;font-size:9px}
.conversation-message p{margin:7px 0 0;font-size:13px;color:#785e6e;line-height:1.85;white-space:pre-wrap;overflow-wrap:anywhere}
.conversation-empty{margin:5px 0;color:#a68b9b;font-size:12px;text-align:center}
.conversation-reply.reply-form{display:block;border-top:1px dashed #e1cdd9;padding-top:12px;margin-top:8px}
.conversation-reply label{font-size:11px;margin-bottom:5px}
.modal .conversation-reply textarea{min-height:76px;max-height:150px}
.conversation-reply small{display:block;font-size:10px;color:#a08696;margin-bottom:12px}
.conversation-reply .btn{border-radius:999px;padding:9px 22px}
.conversation-reply .form-error:empty{display:none}
.page-bottom-search{position:relative;margin:54px 0 0;padding:24px 0 0;border-top:1px solid #deccd6;max-width:640px}
.page-bottom-search .search-panel{padding:0;background:transparent;border:0;box-shadow:none}
.page-bottom-search .search-field{border-radius:999px;padding:4px 18px;background:#fcf8f5;border:1px solid #cbb5c2}
.page-bottom-search .search-field:focus-within{border-color:#8f6780;box-shadow:0 0 0 3px #e9dce580}
.page-bottom-search .search-results:not(:empty),.journal-search .search-results:not(:empty){position:absolute;bottom:calc(100% + 12px);top:auto;left:0;right:0;max-height:min(340px,45dvh);overflow-y:auto;padding:12px 16px;border:1px solid #d9c3d1;border-radius:18px;background:#fffafc;box-shadow:0 -8px 28px #69495e14}
@media(max-width:700px){.talk-bubbles{grid-template-columns:1fr;gap:30px;padding:8px 6px 24px}.talk-bubble:nth-child(even){margin-top:0;margin-left:18px}.talk-bubble:nth-child(odd){margin-right:18px}.talk-bubble-open{padding:23px}.talk-bubble h2{font-size:23px}.talk-bubble-heading{align-items:flex-start;flex-direction:column;gap:8px}.page-talk .page-head{align-items:flex-start;gap:14px;flex-wrap:wrap}.page-talk .page-head .btn{margin-top:10px}.modal:has(.conversation){padding:24px 20px}.page-bottom-search{margin-top:38px}.conversation-scroll{max-height:28dvh}.conversation-message{padding:12px 14px}}
@media(prefers-reduced-motion:reduce){.talk-bubble{transition:none}.talk-bubble:hover{transform:none}}
.talk-new-character{display:block;width:170px;margin:0 auto -14px;padding:0;border:0;background:none;transition:transform .2s}
.talk-new-character img{display:block;width:100%;height:auto;filter:drop-shadow(0 3px 2px #65405712)}
.talk-new-character:hover{transform:rotate(-3deg) translateY(-3px)}
.talk-new-character:focus-visible{outline:2px solid #a86280;outline-offset:4px;border-radius:50%}
@media(prefers-reduced-motion:reduce){.talk-new-character{transition:none}.talk-new-character:hover{transform:none}}

/* 从话题气泡轻轻转入对话，减少动态效果时直接展开。 */
.modal.conversation-entering{transform-origin:center center;will-change:transform,opacity}
.modal.conversation-entering::backdrop{animation:conversation-backdrop-in .42s ease-out both}
.conversation-entering .conversation-scroll{animation:conversation-content-in .28s .09s ease-out both}
.conversation-entering .conversation-reply{animation:conversation-content-in .28s .13s ease-out both}
@keyframes conversation-backdrop-in{from{background-color:rgba(80,45,58,0);backdrop-filter:blur(0)}to{background-color:rgba(80,45,58,.37);backdrop-filter:blur(3px)}}
@keyframes conversation-content-in{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.modal.conversation-entering::backdrop,.conversation-entering .conversation-scroll,.conversation-entering .conversation-reply{animation:none}}



/* 两本摊开的手帐，每个分类独占一页，卷角落在纸张外缘。 */
.journal-chapters{position:relative;isolation:isolate}
.journal-chapters .chapter-grid{display:grid;grid-template-columns:1fr;gap:28px;padding:0 0 18px}
.chapter-book{position:relative;isolation:isolate;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border:1px solid #d7c6bc;border-radius:5px 8px 10px 8px;background:linear-gradient(90deg,#f5ecdf,#fff9ed 5%,#faf2e5 46%,#e5d6c4 49.7%,#cbbba7 50%,#f8f0e4 51%,#fffaef 55%,#fbf4e7 96%,#ebdece);box-shadow:0 3px 0 -1px #f4e9db,0 5px 0 -1px #cdbcae,0 8px 0 -2px #eee1d2,0 10px 0 -2px #b9a59a,0 17px 25px -17px #72544366}
.chapter-book::before{content:'';position:absolute;z-index:2;left:calc(50% - 13px);top:5px;bottom:5px;width:26px;background:linear-gradient(90deg,transparent,#775e3e12 28%,#6d50302b 48%,#fffcf5a6 54%,transparent);border-radius:50%;pointer-events:none}
.journal-chapters .chapter-link{--chapter-accent:#a6758b;--chapter-wash:#e9ccd5;position:relative;isolation:isolate;display:flex;flex-direction:column;justify-content:center;min-height:205px;padding:22px 36px 38px;border:0;border-radius:5px 0 0 7px;overflow:hidden;background:transparent;transition:none}
.journal-chapters .chapter-link:nth-child(2){border-radius:0 7px 9px 0}
.journal-chapters .chapter-study{--chapter-accent:#9179a7;--chapter-wash:#ded2e8}
.journal-chapters .chapter-about{--chapter-accent:#a38b69;--chapter-wash:#e9ddc9}
.journal-chapters .chapter-talk{--chapter-accent:#789786;--chapter-wash:#d6e1d7}
.journal-chapters .chapter-link::before{content:'';position:absolute;z-index:-1;inset:0;border-radius:50%;background:radial-gradient(ellipse,color-mix(in srgb,var(--chapter-wash) 42%,transparent),transparent 74%);opacity:.7;transition:opacity .3s;pointer-events:none}
.journal-chapters .chapter-link::after{content:'';position:absolute;z-index:3;left:0;right:auto;top:auto;bottom:0;width:44px;height:44px;background:linear-gradient(225deg,#e2cfbb 0%,#fff6e7 43%,#bca48c 49%,#f4efe9 52%);box-shadow:3px -3px 7px #70523d15;transform:translate(-45px,45px);transform-origin:bottom left;transition:transform .42s cubic-bezier(.22,1,.36,1);pointer-events:none}
.journal-chapters .chapter-link:nth-child(2)::after{left:auto;right:0;background:linear-gradient(135deg,#e2cfbb 0%,#fff6e7 43%,#bca48c 49%,#f4efe9 52%);box-shadow:-3px -3px 7px #70523d15;transform:translate(45px,45px);transform-origin:bottom right}
.journal-chapters .chapter-link:hover::after,.journal-chapters .chapter-link:focus-visible::after{transform:translate(0,0)}
.journal-chapters .chapter-link:hover,.journal-chapters .chapter-link:focus-visible{background:transparent}
.journal-chapters .chapter-link:hover::before{opacity:1}
.journal-chapters .chapter-link:focus-visible{outline:2px solid var(--chapter-accent);outline-offset:-6px}
.journal-chapters .chapter-meta{font-size:8px;letter-spacing:.09em;color:var(--chapter-accent)}
.journal-chapters .chapter-arrow{font-size:23px;color:var(--chapter-accent);transition:transform .25s}
.journal-chapters .chapter-link h3{font-size:clamp(25px,2.8vw,37px);margin:13px 0 9px;letter-spacing:.02em}
.journal-chapters .chapter-link p{font-size:11px;line-height:1.8;margin:0 0 15px;color:#947f87}
.journal-chapters .chapter-count{font-size:10px;color:var(--chapter-accent)}
.journal-chapters .chapter-count::before{content:'—';margin-right:8px;opacity:.6}
.journal-chapters .book-page-number{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);color:#ae968b;font:italic 9px/1 var(--font-serif);letter-spacing:.1em;pointer-events:none}
@media(min-width:701px){
  .journal-chapters{min-height:100vh;min-height:100svh;box-sizing:border-box;display:flex;flex-direction:column;padding:clamp(24px,4svh,48px) 0 clamp(30px,5svh,55px);scroll-margin-top:0}
  .journal-chapters .explore-heading{flex:none;padding:0 8px 23px;border-top:0;align-items:center}
  .journal-chapters .explore-heading h2{font:400 clamp(34px,4vw,54px)/1.3 var(--font-serif);letter-spacing:.12em;margin:8px 0 10px}
  .journal-chapters .explore-heading h2::after{content:'Two little notebooks';display:inline-block;margin-left:22px;font:italic 18px/1.2 var(--font-serif);letter-spacing:0;color:#a98b98;transform:rotate(-5deg)}
  .journal-chapters .explore-heading .journal-kicker{font-size:9px;letter-spacing:.21em;color:#a18092}
  .journal-chapters .random-note{background:#fcf7ef;border:1px solid #d5c2cd;box-shadow:3px 4px 0 #e2d4dd;border-radius:48% 44% 47% 43%;padding:15px 22px;transform:rotate(3deg)}
  .journal-chapters .random-note:hover{transform:rotate(0) translateY(-2px)}
  .journal-chapters .chapter-grid{flex:1;min-height:440px}
}
@media(min-width:1200px){
  .journal-chapters .chapter-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:38px;align-items:center;min-height:400px}
  .chapter-book{min-height:360px}
  .chapter-book:nth-child(1){transform:rotate(-1deg)}.chapter-book:nth-child(2){transform:rotate(1deg)}
  .journal-chapters .chapter-link{padding:30px 24px 42px;min-height:360px}
  .journal-chapters .chapter-link h3{font-size:clamp(25px,2.1vw,33px)}
}
@media(max-width:700px){
  .journal-chapters .chapter-grid{gap:26px;padding-bottom:38px}
  .journal-chapters .chapter-link{min-height:200px;padding:20px 17px 36px}
  .journal-chapters .chapter-link h3{font-size:clamp(18px,4.5vw,26px);margin:11px 0 8px}
  .journal-chapters .chapter-link p{font-size:10px;margin-bottom:14px}
  .journal-chapters .chapter-meta{font-size:6px;letter-spacing:0}
  .journal-chapters .chapter-arrow{font-size:18px}
  .journal-chapters .chapter-count{font-size:9px}
}
@media(prefers-reduced-motion:reduce){.journal-chapters .chapter-link::before,.journal-chapters .chapter-link::after,.journal-chapters .chapter-arrow{transition:none}}

/* 最近碎片：纸条依次浮现，指向文章时轻轻抬起。 */
.journal-entry{position:relative;isolation:isolate;transform-origin:15% 50%;border-radius:4px}
.journal-entry::before{content:'';position:absolute;z-index:-1;inset:8px -12px;border-radius:10px;background:linear-gradient(115deg,#fff9f0b3,#eddfe784);opacity:0;box-shadow:0 12px 23px -19px #76526766;transition:opacity .3s;pointer-events:none}
.journal-entry h3{width:fit-content;max-width:100%;background-image:linear-gradient(#c69bb080,#c69bb080);background-size:0 1px;background-position:left bottom;background-repeat:no-repeat;transition:color .25s,background-size .4s}
.journal-entry-index{display:inline-block;transition:transform .35s,color .25s}
.journal-entry>span:last-child{display:inline-block;transition:transform .35s,color .25s}
.journal-entry:focus-visible{outline:2px solid #b98ca5;outline-offset:6px}
@media(prefers-reduced-motion:no-preference){
  .journal-entries .journal-entry{transition:opacity .65s ease var(--fragment-delay,0ms),translate .7s cubic-bezier(.22,1,.36,1) var(--fragment-delay,0ms),transform .35s cubic-bezier(.22,1,.36,1),color .25s}
  .journal-entry:nth-child(1){--fragment-delay:0ms}.journal-entry:nth-child(2){--fragment-delay:90ms}.journal-entry:nth-child(3){--fragment-delay:180ms}
  .journal-entries .journal-entry.reveal-pending{translate:0 32px;transform:rotate(-.7deg)}
  .journal-entry:active{transform:scale(.99)}
  .journal-letter .letter-star{transition:transform .65s cubic-bezier(.22,1,.36,1);transform-origin:center}
  .journal-letter:hover .letter-star{transform:rotate(70deg)}
}
@media(hover:hover) and (prefers-reduced-motion:no-preference){
  .journal-entry:hover{transform:translate(4px,-3px) rotate(-.25deg)}
  .journal-entry:hover .journal-entry-index{transform:translateY(-3px) rotate(-7deg);color:#a46585}
  .journal-entry:hover>span:last-child{transform:translate(4px,-4px);color:#a46585}
}
.journal-entry:hover::before,.journal-entry:focus-visible::before{opacity:1}
.journal-entry:hover h3,.journal-entry:focus-visible h3{color:#a16582;background-size:100% 1px}
@media(prefers-reduced-motion:reduce){.journal-entry,.journal-entry::before,.journal-entry h3,.journal-entry-index,.journal-entry>span:last-child,.journal-letter .letter-star{transition:none!important;animation:none!important}}

/* 等待收回动画完成后再关闭原生弹窗。 */
.modal.modal-leaving{pointer-events:none;will-change:transform,opacity}
.modal.modal-leaving::backdrop{animation:modal-backdrop-out .28s ease-in forwards}
@keyframes modal-backdrop-out{to{background-color:transparent;backdrop-filter:blur(0)}}
@media(prefers-reduced-motion:reduce){.modal.modal-leaving::backdrop{animation:none}}

/* 留言阅读与书写分区，滑动指示块位于按钮下方。 */
.conversation-switch{position:relative;display:grid;grid-template-columns:1fr 1fr;isolation:isolate;border:1px solid #dfcfda;border-radius:999px;padding:4px;margin:16px 0 20px;background:#f0e8ef}
.conversation-switch::before{content:"";position:absolute;z-index:-1;left:4px;top:4px;bottom:4px;width:calc(50% - 4px);border-radius:999px;background:#fffafc;box-shadow:0 2px 7px #74536518;transition:transform .28s cubic-bezier(.22,1,.36,1)}
.conversation-switch[data-mode="write"]::before{transform:translateX(100%)}
.conversation-switch button{border:0;border-radius:999px;background:transparent;padding:10px 8px;color:#947a8c;font:inherit;font-size:12px;cursor:pointer}
.conversation-switch button[aria-selected="true"]{color:#69465e;font-weight:600}
.conversation-switch button:focus-visible{outline:2px solid #98778e;outline-offset:-2px}
.conversation [role="tabpanel"][hidden]{display:none}
.conversation [role="tabpanel"]{animation:conversation-content-in .22s ease-out both}
.conversation #conversation-read .conversation-scroll{max-height:45dvh}
.conversation-compose-hint{font-size:12px;color:#907185;line-height:1.7}
.conversation #conversation-write .conversation-reply{border-top:0;margin-top:0;padding-top:0}
.modal .conversation-reply textarea{min-height:120px}
.modal-status{position:sticky;top:0;z-index:2;margin:0 24px 14px 0;padding:11px 16px;border:1px solid #cfc0d9;border-radius:16px;background:#f0e9f5;color:#654970;font-size:13px;line-height:1.6;box-shadow:0 3px 12px #60445c12}
.modal-status[hidden]{display:none}
@media(prefers-reduced-motion:reduce){.conversation-switch::before{transition:none}.conversation [role="tabpanel"]{animation:none}}

/* Shared interaction rhythm: quick feedback, soft arrivals, shorter departures. */
:root{--motion-ease:cubic-bezier(.22,1,.36,1);--motion-fast:160ms;--motion-enter:320ms}
@keyframes page-arrive{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}
@keyframes detail-arrive{from{opacity:0;translate:0 6px}to{opacity:1;translate:0 0}}
@media(prefers-reduced-motion:no-preference){
  body:not(.is-entry) #app>.container,body:not(.is-entry) #app>.admin-login{animation:page-arrive var(--motion-enter) var(--motion-ease) both}
  .life-timeline,.modal-status:not([hidden]),.hobby-row{animation:detail-arrive 240ms var(--motion-ease) both}
  :where(button,.btn,.quiet-button,.back-to-directory,.search-result,.contact-link){transition:color var(--motion-fast) ease,background-color var(--motion-fast) ease,border-color var(--motion-fast) ease,box-shadow 220ms ease,opacity var(--motion-fast) ease,scale var(--motion-fast) var(--motion-ease)}
  :where(button,.btn):active:not(:disabled){scale:.97}
  .field{transition:border-color 180ms ease,box-shadow 180ms ease,background-color 180ms ease}
  .field:focus-visible{box-shadow:0 0 0 3px #b899b024}
  .modal-close{transition:color 160ms ease,rotate 220ms var(--motion-ease),scale 160ms ease}
  .modal-close:hover{rotate:90deg}
  .toast{transition:opacity 200ms ease,transform 280ms var(--motion-ease)}
  .entry-search{transition-timing-function:var(--motion-ease)}
  .entry-search-reveal{transition:opacity 200ms ease,transform 320ms var(--motion-ease),visibility 0s 320ms}
  .random-note>span{transition:transform 240ms var(--motion-ease)}
}
.modal.conversation-entering::backdrop{animation-duration:280ms}
.modal.modal-leaving::backdrop{animation-duration:200ms}
/* Includes legacy decorative animations and newly added controls. */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
}

/* 年份圆点与月份书签在筛选时滑向新的位置。 */
.life-year-nav,.life-month-nav{position:relative}
.life-year-nav.filter-sliding button[aria-pressed=true]::before,.life-month-nav.filter-sliding button[aria-pressed=true]::after{visibility:hidden}
.life-filter-indicator{position:absolute;pointer-events:none;background:#a86280;border-radius:999px;transform-origin:0 0;z-index:1}
.life-month-nav{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:thin;scrollbar-color:#d2b6c5 transparent}
.life-month-nav button{flex-shrink:0;white-space:nowrap}
@media(max-width:600px){.life-year-nav{border-bottom:1px solid #d9c6ce;padding-bottom:9px}.life-year-nav button[aria-pressed=true]{text-decoration:none}.life-year-nav button[aria-pressed=true]::after{content:'';position:absolute;bottom:-9px;height:3px;background:#a86280;border-radius:999px;width:100%;left:0}.life-year-nav button{position:relative}.life-year-nav.filter-sliding button[aria-pressed=true]::after{visibility:hidden}.life-year-nav .life-filter-indicator{border-radius:999px}}

/* 新话题沿入口方向舒展开，遮罩与表单跟随渐入。 */
.modal.topic-composing-entering::backdrop{animation-duration:440ms}
.topic-composing-entering #topic-form{animation:conversation-content-in 300ms 90ms ease-out both}
@media(prefers-reduced-motion:reduce){.topic-composing-entering #topic-form{animation:none}}

/* 关于我以个人资料为主体，寄语作为页边点缀。 */
.page-about .about-layout{grid-template-columns:minmax(0,1fr) 190px;gap:28px;align-items:start}
.page-about .profile-card{min-width:0;position:relative;padding:46px 34px 34px;text-align:left}
.page-about .profile-identity{display:flex;align-items:center;gap:24px;margin:9px 0 24px}
.page-about .avatar{flex-shrink:0;width:90px;height:90px;margin:0;font-size:43px}
.page-about .profile-identity h2{font:500 34px/1.4 var(--font-serif);margin:0}
.page-about .profile-identity .handle{margin:4px 0 8px;font-size:12px}
.page-about .profile-identity p{margin:0;line-height:1.8}
.page-about .profile-bio{padding:20px 0 2px;border-top:1px solid #dfcfd7}
.page-about .profile-bio .journal-kicker{font-size:9px;color:#ad8599}
.page-about .profile-bio p{font-size:14px;line-height:2;white-space:pre-wrap;color:#806471;margin:12px 0}
.page-about .profile-card .meta{font-size:13px;gap:18px}
.page-about .profile-card .meta>div>span:first-child{width:84px}
.page-about .profile-card .meta>.profile-education>span{width:auto}
.page-about .education-timeline{margin-top:20px;padding-left:22px}
.page-about .education-timeline>div{margin-bottom:23px}
.page-about .education-timeline>div::before{left:-26px}
.page-about .education-timeline dd{font-size:14px}
.page-about .profile-hobbies{border-top:1px solid #dfcfd7;padding-top:24px}
.page-about .hobby-cell{padding:20px;min-height:140px}
.page-about .hobby-cell strong{font-size:21px}
.page-about .profile-card .hobby-cell p{font-size:12px;line-height:1.9}
.page-about .about-content{min-width:0;position:sticky;top:30px;padding:0 12px 12px;background:#fcf8f5;border:1px solid #dfd0d8;border-radius:12px;box-shadow:0 6px 18px #7557680a;overflow:hidden}
.page-about .about-content::before{display:none}
.page-about .about-content>.eyebrow{display:flex;align-items:center;gap:9px;font-size:8px;letter-spacing:.1em;color:#a18a97;margin:0 -12px;padding:10px 12px;background:#f0e7ec;border-bottom:1px solid #e4d6de}
.page-about .about-content>.eyebrow::before{content:'';width:5px;height:5px;border-radius:50%;background:#bf91a6;box-shadow:8px 0 #d7bdc9,16px 0 #e0ced7;margin-right:16px;flex-shrink:0}
.page-about .about-content>h2{font:400 13px/1.6 var(--font-serif);color:#9c7e8e;margin:12px 0 0;text-align:center}
.page-about .saber-scene{margin-top:10px;padding-top:0}
.page-about .saber-frame{padding:12px 10px;font-size:11px;line-height:1.85;box-shadow:2px 3px 0 #e7d6dd}
.page-about .saber-frame-label{display:none}
.page-about .saber-quote-translation,.page-about .saber-quote-source{font-size:10px}
.page-about .saber-character{width:105px;margin-top:-14px}
.page-about .saber-hint{font-size:9px;line-height:1.6;margin-top:8px}
@media(max-width:760px){.page-about .about-layout{grid-template-columns:minmax(0,1fr);gap:30px}.page-about .about-content{position:static;max-width:220px;width:100%;margin:0 auto;text-align:center;padding:0 12px 12px;box-sizing:border-box}.page-about .profile-card{padding:44px 24px 24px}.page-about .profile-identity{gap:18px}.page-about .profile-identity h2{font-size:30px}}
@media(max-width:400px){.page-about .profile-identity{align-items:flex-start;gap:14px}.page-about .avatar{width:70px;height:70px;font-size:34px}.page-about .profile-card{padding-left:18px;padding-right:18px}.page-about .hobby-cell{padding:14px}}


/* 寄语放在资料与搜索之间，像一张柔软的不规则纸笺。 */
.page-about .about-layout{display:block}
.page-about .profile-card{width:100%;box-sizing:border-box}
.page-about .about-content.quote-note{position:relative;top:auto;width:min(100%,680px);max-width:none;margin:32px 0 0;padding:20px 26px 16px;box-sizing:border-box;text-align:left;background:none;border:0;border-radius:0;box-shadow:none;overflow:visible}
.page-about .quote-note::before{content:'';display:block;position:absolute;inset:0;z-index:0;height:auto;background:linear-gradient(120deg,#ede0e7,#f5e9e7 58%,#eee6f1);border:1px solid #ddc9d6;border-radius:9% 4% 12% 5% / 18% 26% 16% 25%;transform:rotate(-.6deg);box-shadow:2px 6px 0 #e1d1da40;pointer-events:none}
.quote-note-label,.quote-note-body{position:relative;z-index:1}
.quote-note-label{display:flex;align-items:center;justify-content:space-between;gap:15px;color:#9a7189;font-size:12px}
.quote-note-label small{font:8px/1.5 var(--font-sans);letter-spacing:.16em;color:#b194a6}
.quote-note-body>h2{font:400 15px/1.7 var(--font-serif);color:#947284;margin:8px 0 0}
.page-about .quote-note .saber-scene{margin:8px 0 0;padding:0}
.page-about .quote-note .saber-lift{display:grid;grid-template-columns:minmax(0,1fr) 105px;gap:20px;align-items:center}
.page-about .quote-note .saber-frame{width:auto;padding:15px 20px;text-align:left;font-size:16px;background:#fffaf480;border:0;box-shadow:none;border-radius:38px 10px 42px 12px}
.page-about .quote-note .saber-frame::before{display:none}
.page-about .quote-note .saber-quote-translation,.page-about .quote-note .saber-quote-source{font-size:11px}
.page-about .quote-note .saber-character{width:105px;max-width:100%;margin:0;transform:rotate(4deg)}
.page-about .quote-note .saber-hint{font-size:9px;margin-top:9px;text-align:right;color:#a28496}
.page-about .quote-note .saber-scene[aria-pressed=true] .saber-lift{transform:translateY(-5px) rotate(-1deg)}
@media(max-width:600px){.page-about .about-content.quote-note{padding:20px 18px 16px;margin-top:26px}.quote-note-label small{font-size:7px;letter-spacing:.08em}.page-about .quote-note .saber-lift{grid-template-columns:minmax(0,1fr) 70px;gap:10px}.page-about .quote-note .saber-character{width:70px}.page-about .quote-note .saber-frame{font-size:14px;padding:14px}.page-about .quote-note .saber-hint{text-align:center}}
@media(prefers-reduced-motion:reduce){.page-about .quote-note .saber-scene[aria-pressed=true] .saber-lift{transform:none}}

/* 持续流动的浪花只作装饰，填充宽度对应真实阅读进度。 */
.reading-wave-track{height:25px;position:relative;overflow:hidden;isolation:isolate;border-radius:999px;background:#eee5f0;border:1px solid #ddcfe3;box-shadow:inset 0 2px 5px #7961840b}
.reading-wave-idle,.reading-wave-fill{position:absolute;inset:0;overflow:hidden;border-radius:inherit}
.reading-wave-idle{color:#ccb6d4;opacity:.4}
.reading-wave-fill{right:auto;color:#a184b3;background:linear-gradient(0deg,#ad8fbd 0%,#bca3c9 52%,transparent 53%);transition:width .65s cubic-bezier(.22,1,.36,1)}
.reading-wave{position:absolute;left:0;bottom:0;width:200%;height:100%;fill:currentColor;animation:reading-wave-drift 4s linear infinite;pointer-events:none}
.reading-wave-fill .reading-wave:first-child{color:#cfb7d9;opacity:.8;animation-duration:5.5s;animation-direction:reverse;bottom:3px}
.reading-wave-fill .reading-wave:last-child{opacity:.85;animation-delay:-2s}
@keyframes reading-wave-drift{to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.reading-wave{animation:none}.reading-wave-fill{transition:none}}


/* 扇页书库：纸张展开、选书抬升，日志保持清楚易读。 */
.reading-reflection{margin-top:18px;padding-top:15px;border-top:1px dashed #d9cadf}
.reading-reflection h4{margin:0 0 7px;color:#846487;font-size:12px;font-weight:500}
.reading-reflection p{font-size:12px;line-height:1.9;color:#927c90;white-space:pre-wrap;overflow-wrap:anywhere;max-height:150px;overflow:auto}
.reading-reflection .quiet-button{font-size:10px}
.reading-library{margin:32px 0 58px;padding-top:28px;border-top:1px solid #d9c9d6;scroll-margin-top:28px}
.reading-library-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:20px}
.reading-library-heading h2{font:500 30px/1.5 var(--font-serif);color:#77566c;margin:5px 0}
.reading-library-heading h2 i{font-style:normal;color:#baa0b5;font-size:26px;margin-left:8px}
.reading-library-heading p,.library-guide{font-size:12px;color:#9a8293;margin:0}
.library-controls{display:flex;flex-direction:column;align-items:flex-end;gap:10px;flex-shrink:0}
.reading-library-count{padding:8px 14px;border-radius:999px;background:#ebe1ed;color:#95779f;font-size:11px}
.library-toggle{font-size:11px}.library-guide{text-align:center;font-size:10px;letter-spacing:.06em;margin:10px 0}
.library-fan{--spread:clamp(42px,12vw,135px);position:relative;height:330px;isolation:isolate;perspective:1000px}
.library-fan::after{content:'';position:absolute;bottom:25px;left:12%;right:12%;height:20px;border-radius:50%;background:#a88b9b12;filter:blur(10px);z-index:-1}
.library-cover{position:absolute;left:50%;top:35px;width:180px;height:230px;border:1px solid #cfb7c9;border-radius:4px 14px 14px 4px;padding:19px 19px 18px 25px;background:linear-gradient(90deg,#b99db7 0 6px,#e9dce9 6px 10px,#eee3ef 10px 100%);box-shadow:3px 4px 0 #fff8f0,4px 6px 0 #cbb7c6,0 10px 22px #72536920;color:#70536d;text-align:left;cursor:pointer;display:flex;flex-direction:column;transform-origin:50% 110%;transform:translateX(calc(-50% + var(--position) * 8px)) rotate(calc(var(--position) * 2deg));transition:transform 650ms cubic-bezier(.22,1,.36,1),box-shadow 300ms;z-index:calc(10 + var(--stack));scroll-margin-top:80px}
.library-cover.cover-tone-1{background:linear-gradient(90deg,#b8b7a1 0 6px,#e1e2d4 6px 10px,#f0efdf 10px 100%);border-color:#c7c7b3;color:#727459}
.library-cover.cover-tone-2{background:linear-gradient(90deg,#c89f9f 0 6px,#eddbd6 6px 10px,#f4e4dc 10px 100%);border-color:#dbc1b7;color:#946d68}
.library-cover.cover-tone-3{background:linear-gradient(90deg,#a1b5c1 0 6px,#d5e1e5 6px 10px,#e4edf0 10px 100%);border-color:#b9cbd2;color:#657f8b}
.is-open .library-cover{transform:translateX(calc(-50% + var(--position) * var(--spread))) translateY(var(--rise)) rotate(var(--angle))}
.book-cover-top{display:flex;justify-content:space-between;gap:8px;font:7px/1.5 var(--font-sans);letter-spacing:.12em;opacity:.7}
.book-cover-title{display:block;font:500 23px/1.45 var(--font-serif);margin:18px 0 6px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow-wrap:anywhere}
.book-cover-author{font-size:10px;opacity:.7;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.book-cover-flower{position:absolute;bottom:43px;right:17px;font:44px/1 var(--font-serif);opacity:.16}
.book-cover-foot{margin-top:auto;padding-top:14px;border-top:1px solid #99849933;display:flex;justify-content:space-between;font-size:9px}
.is-open .library-cover:focus-visible,.is-open .library-cover:hover{z-index:30;transform:translateX(calc(-50% + var(--position) * var(--spread))) translateY(-25px) rotate(0deg);box-shadow:3px 5px 0 #fff8f0,4px 7px 0 #cbb7c6,0 20px 30px #72536928}
.library-cover:focus-visible{outline:2px solid #a47799;outline-offset:5px}
.library-empty-scene{display:flex;align-items:center;justify-content:center;gap:38px;min-height:230px;padding:30px;background:radial-gradient(ellipse at center,#ece1eb60,transparent 70%)}
.library-empty-pages{position:relative;flex-shrink:0;width:95px;height:125px;border:1px solid #d5c0cf;border-radius:3px 10px 10px 3px;background:#eee3eb;transform:rotate(-10deg);box-shadow:5px 4px #fff8ef,7px 6px #d9c6d2;display:grid;place-items:center;color:#b69bb0;font:18px var(--font-serif)}
.library-empty-pages::before{content:'';position:absolute;inset:0;border:1px solid #d6c7d0;border-radius:inherit;background:#f3e9dc;transform:rotate(20deg);transform-origin:bottom;z-index:-1}
.library-empty-scene h3{font:400 20px/1.6 var(--font-serif);color:#95788e}.library-empty-scene p{max-width:340px;font-size:12px;line-height:1.9;color:#a38a9b}
.modal:has(.reading-detail){width:min(660px,calc(100vw - 28px));border-radius:22px 22px 22px 6px;background:#fffaf6}
.reading-detail>h2{font-family:var(--font-serif);overflow-wrap:anywhere;margin-top:12px}
.reading-detail-byline{font-size:12px;color:#a0869a}
.reading-detail-reflection{margin:20px 0;padding:17px 20px;background:#f0e6ee;border-radius:4px 24px 20px 18px}
.reading-detail h3{font-size:14px;font-weight:500;color:#856480;margin:0 0 10px}
.reading-detail-reflection p{font-size:13px;line-height:1.9;white-space:pre-wrap;overflow-wrap:anywhere;color:#856e7f;max-height:220px;overflow:auto}
.reading-detail-reflection small{font-size:11px;color:#aa90a1}
.reading-log-heading{display:flex;justify-content:space-between;gap:12px}.reading-log-heading small{font-size:10px;font-weight:400;color:#ac95a6}
.reading-log-scroll{max-height:36dvh;overflow:auto;overscroll-behavior:contain;padding:4px 12px 4px 6px}
.reading-log-list{list-style:none;margin:0;padding:0 0 0 17px;border-left:1px solid #e1cbd9}
.reading-log-list li{position:relative;margin:0 0 24px}.reading-log-list li::before{content:'';position:absolute;left:-21px;top:5px;width:7px;height:7px;border-radius:50%;background:#b694ac}
.reading-log-top{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;color:#95738d;font-size:12px}.reading-log-top small,.reading-log-edited{font-size:10px;color:#ad97a7}
.reading-log-list p{font-size:12px;line-height:1.9;color:#8c7486;white-space:pre-wrap;overflow-wrap:anywhere;margin:8px 0}
.reading-log-quiet{font-size:12px;color:#b09baa}.reading-log-list .quiet-button{font-size:10px;margin-left:10px}
@media(max-width:600px){.library-fan{--spread:clamp(30px,10vw,56px);height:290px}.library-cover{width:130px;height:195px;padding:15px 12px 15px 18px}.book-cover-title{font-size:19px;margin-top:14px}.book-cover-top{font-size:6px;letter-spacing:0}.book-cover-foot{font-size:8px}.reading-library-heading h2{font-size:26px}.library-empty-scene{gap:22px;padding:20px 10px}.library-empty-scene h3{font-size:17px}.library-empty-pages{width:75px;height:110px}.reading-log-top{flex-direction:column;gap:4px}}
@media(prefers-reduced-motion:reduce){.library-cover{transition:none}}

/* 内页右上角的扇形滑动导航，围绕入口按钮释放和收回。 */
.fan-navigation{position:fixed;top:122px;right:max(24px,calc((100vw - 1120px)/2));width:46px;height:46px;z-index:65}
.fan-navigation[hidden],.fan-panel[hidden],.fan-preview[hidden]{display:none}
.fan-toggle{position:relative;z-index:3;width:54px;height:54px;left:-4px;top:-4px;padding:4px 0 0;border:1px solid #cbb5a4;border-radius:50% 50% 38% 38%;background:linear-gradient(145deg,#fffaf0,#edddd6);color:#88677b;box-shadow:inset 0 0 0 3px #fff9ed,0 5px 16px #765b7020;cursor:pointer;display:grid;place-content:center;gap:0;transition:background .2s,box-shadow .2s,transform .3s}
.fan-toggle-icon{width:35px;height:27px;overflow:visible;fill:#a68b76;transition:transform .45s cubic-bezier(.22,1,.36,1);transform-origin:50% 85%}
.mini-fan-paper{fill:#e5c7ce;stroke:#a98879;stroke-width:1}
.mini-fan-folds{fill:none;stroke:#b69389;stroke-width:.85}
.mini-fan-edge{fill:none;stroke:#fff4db;stroke-width:2}
.fan-toggle small{font:9px/1.5 var(--font-serif);letter-spacing:.18em;padding-left:.18em}
.fan-toggle:hover{transform:translateY(-2px);box-shadow:inset 0 0 0 3px #fff9ed,0 7px 20px #765b7030}
.is-open .fan-toggle{background:linear-gradient(145deg,#fff7e8,#e4cbd4);box-shadow:inset 0 0 0 3px #fff6e8,0 0 0 5px #f6f0eb99,0 5px 15px #785c7525}
.is-open .fan-toggle-icon{transform:rotate(-12deg)}
.fan-tassel{position:absolute;top:49px;left:39px;width:1px;height:21px;background:#b19078;transform-origin:50% 0;pointer-events:none;transform:rotate(-9deg);transition:transform .45s}
.fan-tassel::before{content:'';position:absolute;top:17px;left:-2px;width:5px;height:6px;border-radius:50%;background:#c09892;box-shadow:inset 0 1px #f4dfc4}
.fan-tassel::after{content:'';position:absolute;top:23px;left:-3px;width:7px;height:12px;border-radius:2px 2px 40% 40%;background:repeating-linear-gradient(90deg,#b88792 0 1px,#e1b9ba 1px 2px)}
.is-open .fan-tassel{transform:rotate(12deg)}
.fan-toggle:focus-visible,.fan-page:focus-visible,.fan-knob:focus-visible{outline:2px solid #a17b94;outline-offset:4px}
.fan-panel{position:absolute;right:23px;top:23px;width:300px;height:300px;transform-origin:100% 0;touch-action:none;user-select:none;isolation:isolate}
.fan-paper{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;filter:drop-shadow(-5px 8px 7px #80645123)}
.fan-paper-leaf{fill:url(#fan-silk);stroke:#d7b9aa;stroke-width:.35;transition:fill .3s;transform-origin:300px 0;animation:fan-fold-open .48s cubic-bezier(.22,1,.36,1) both}
.fan-paper-leaf.is-valley{fill:#ead6d8}
.fan-paper-leaf.is-selected{fill:#efd2d6}
.fan-paper-leaf.is-valley.is-selected{fill:#dfbcc8}
.fan-rib{fill:none;stroke:#b89e86;stroke-width:1.2;stroke-linecap:round;transform-origin:300px 0;animation:fan-fold-open .48s cubic-bezier(.22,1,.36,1) both}
.fan-rib.is-guard{stroke:#ad8e74;stroke-width:3}
.fan-paper-trim{fill:none;stroke:#c7a27d;stroke-width:1;opacity:.7}
.fan-pivot{fill:#ab8b71;stroke:#ead3b0;stroke-width:3}
.fan-blossoms{fill:#c790a1;opacity:.5}
.fan-blossoms>path{fill:none;stroke:#b28d7e;stroke-width:1}
.fan-navigation:not(.is-open) .fan-paper-leaf,.fan-navigation:not(.is-open) .fan-rib{animation:fan-fold-close .28s ease-in both}
@keyframes fan-fold-open{from{transform:rotate(calc(-1 * var(--rib-angle,0deg)));opacity:.35}to{transform:rotate(0deg);opacity:1}}
@keyframes fan-fold-close{from{transform:rotate(0deg);opacity:1}to{transform:rotate(calc(-1 * var(--rib-angle,0deg)));opacity:.2}}
.fan-arc{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:#b491795c;stroke-width:1;stroke-dasharray:1 5;pointer-events:none}
.fan-caption{position:absolute;right:36px;top:33px;color:#a88778;font:italic 13px var(--font-serif);transform:rotate(-12deg);letter-spacing:.15em}
.fan-help{position:absolute;right:27px;top:90px;margin:0;color:#a48389;font-size:9px;line-height:1.9;text-align:right;letter-spacing:.15em;pointer-events:none}
.fan-page{position:absolute;transform:translate(-50%,-50%);border:1px solid transparent;background:transparent;color:#77596d;font:13px/1.5 var(--font-serif);white-space:nowrap;padding:7px 10px;cursor:pointer;border-radius:45% 45% 35% 35%;transition:color .2s,background .2s,box-shadow .2s,border-color .2s;display:flex;flex-direction:column;align-items:center;gap:2px}
.fan-page small{font:italic 8px var(--font-serif);color:#b08d83;letter-spacing:.15em}
.fan-page[aria-current=page] span::after{content:'·';margin-left:2px}
.fan-page.is-selected{color:#72445e;background:#fff8e8d9;border-color:#c3a18d80;box-shadow:0 3px 8px #987a8d18}
.fan-knob{position:absolute;transform:translate(-50%,-23px);width:44px;height:64px;padding:0;border:0;border-radius:24px;background:transparent;cursor:grab;display:grid;place-items:center;transition:left .25s cubic-bezier(.22,1,.36,1),top .25s cubic-bezier(.22,1,.36,1);z-index:2;-webkit-tap-highlight-color:transparent}
.fan-charm{width:44px;height:64px;overflow:visible;pointer-events:none;filter:drop-shadow(0 3px 3px #76596e35);transition:filter .2s}
.charm-flower>path{fill:url(#fan-charm-jade);stroke:#b49379;stroke-width:.75}
.charm-veins{fill:none;stroke:#fffaee;stroke-width:1;stroke-linecap:round;opacity:.85}
.charm-heart{fill:#c1a070;stroke:#fff5d4;stroke-width:1}
.charm-glint{fill:#fff9df}
.charm-cord{fill:none;stroke:#ad8b72;stroke-width:1.1}
.charm-fringe{fill:#ba8fa0;stroke:#a77c8d;stroke-width:.6;transform-origin:22px 38px;transition:transform .3s}
.charm-threads{fill:none;stroke:#efd0cc;stroke-width:.7}
.charm-focus-ring{fill:none;stroke:#b9947f;stroke-width:.8;stroke-dasharray:1 4;opacity:0;transition:opacity .2s}
.fan-knob:focus-visible{outline:none}
.fan-knob:focus-visible .charm-focus-ring,.fan-knob:hover .charm-focus-ring{opacity:.85}
.fan-knob:hover .fan-charm,.fan-knob:focus-visible .fan-charm{filter:drop-shadow(0 3px 5px #9c6b864a)}
.fan-knob:hover .charm-fringe{transform:rotate(-10deg)}
.fan-knob:active{cursor:grabbing}
.fan-knob:active .charm-fringe{transform:rotate(12deg)}
#app{transition:filter 240ms ease,opacity 240ms ease}
.fan-previewing #app{filter:blur(8px);opacity:.24}
.fan-preview{position:fixed;inset:0;z-index:60;background:#f5efe8c9;pointer-events:none;overflow:hidden;display:flex;align-items:center;justify-content:center;padding:80px 40px 40px}
.fan-preview-copy{width:min(700px,100%);padding-right:100px;color:#826376}
.fan-preview-copy>span{font-size:10px;letter-spacing:.2em;color:#b18ba2}
.fan-preview-copy>h2{font:400 clamp(36px,6vw,64px)/1.4 var(--font-serif);margin:18px 0 8px}
.fan-preview-copy>p{font-size:13px;line-height:1.9;color:#a08495}
.fan-preview-stories{border-top:1px solid #d9c7d3;margin-top:30px}
.fan-preview-stories article{padding:14px 0;border-bottom:1px solid #ded0d9}
.fan-preview-stories h3{font:400 22px/1.6 var(--font-serif);margin:0 0 5px}
.fan-preview-stories p{font-size:12px;color:#a28a9a;line-height:1.9;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.fan-preview-copy>small{display:block;margin-top:25px;color:#b397a8;font-size:10px;letter-spacing:.12em}
@media(max-width:600px){.fan-navigation{top:106px;right:20px}.fan-panel{width:270px;height:270px}.fan-caption{font-size:11px;right:27px;top:27px}.fan-help{right:23px;top:79px;font-size:8px}.fan-page{font-size:11px;padding:5px 7px}.fan-page small{font-size:7px}.fan-preview{padding:200px 26px 35px;align-items:flex-start}.fan-preview-copy{padding:60px 0 0}.fan-preview-stories{margin-top:16px}.fan-preview-stories article:nth-child(n+2){display:none}}
@media(prefers-reduced-motion:reduce){.fan-toggle,.fan-toggle-icon,.fan-tassel,.fan-knob,.fan-charm,.charm-fringe,.charm-focus-ring,.fan-paper-leaf,#app{transition:none}.fan-paper-leaf,.fan-rib{animation:none!important}}

.hobby-detail-link{color:#90647e;text-decoration:none;border-bottom:1px solid #c5a3b6;padding-bottom:1px;overflow-wrap:anywhere}.hobby-detail-link i{font:11px/1 var(--font-sans);margin-left:4px;color:#b78da4}.hobby-detail-link:hover{color:#70465f;border-bottom-color:currentColor}.hobby-detail-link:focus-visible{outline:2px solid #b78da4;outline-offset:3px;border-radius:2px}

/* 页面虚化由父层负责，避免内页的二次淡入遮住虚化过程。 */
body.page-blur-transition #app>.container{animation:none}
body.page-blur-transition #app{transition:none}
.post-images, .image-drafts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin: 16px 0; }
.post-images a { display: block; min-width: 0; }
.post-images img { display: block; width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: 6px; }
.image-draft { position: relative; min-width: 0; }
.image-draft img { display: block; width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: 6px; }
.image-draft button { position: absolute; right: 4px; top: 4px; width: 30px; height: 30px; border: 1px solid #ccc; border-radius: 50%; background: white; color: #333; cursor: pointer; font-size: 22px; }
.image-draft button[data-crop-image] { right: auto; left: 4px; }
.image-crop-dialog { box-sizing: border-box; width: min(600px, calc(100% - 24px)); max-height: calc(100dvh - 24px); padding: 20px; border: 1px solid #ccc; border-radius: 8px; color: #333; background: #fff; overflow-y: auto; }
.image-crop-dialog::backdrop { background: rgb(0 0 0 / 55%); }
.image-crop-dialog h2 { margin: 0 0 14px; font-size: 20px; }
.crop-stage { width: 100%; height: min(400px, 48dvh); background: #eee; overflow: hidden; }
.crop-stage > img { display: block; max-width: 100%; }
.crop-tools, .crop-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.crop-tools label { display: flex; gap: 8px; align-items: center; margin-right: auto; }
.crop-tools button { width: 36px; height: 36px; font-size: 22px; }
.crop-tools button, .crop-tools select, .crop-actions button { border: 1px solid #bbb; border-radius: 4px; background: #fff; color: #333; cursor: pointer; }
.crop-tools select, .crop-actions button { min-height: 36px; padding: 6px 12px; }
.crop-actions { justify-content: flex-end; }
.crop-actions .btn { background: #76596c; color: white; }
.image-crop-dialog button:disabled, .image-crop-dialog select:disabled { opacity: .45; cursor: default; }
.page-about .meta a.contact-external-link { color: #9b627f; text-decoration: underline; text-underline-offset: 4px; text-decoration-thickness: 1px; }
.page-about .meta a.contact-external-link:hover { color: #73475f; }
.contact-external-link i { margin-left: 4px; font-style: normal; text-decoration: none; display: inline-block; }
.contact-external-link:focus-visible { outline: 2px solid #a86280; outline-offset: 4px; }
