:root{font-family:Inter,-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;color:#f3ecdf;background:#090f1d;color-scheme:dark;font-synthesis:none;--muted:#adbccd;--line:#a6bed625;--accent:#e7c99a}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:30px;scrollbar-gutter:stable}
body{margin:0;position:relative;isolation:isolate}
body::before{content:"";position:absolute;inset:0 0 auto;height:980px;z-index:-2;background:linear-gradient(180deg,#06101c10 0%,#090f1d18 45%,#090f1d 98%),url(assets/sky-night.webp) calc(50% + var(--sky-pan,0px)) top / cover no-repeat;transition:background-position 1.1s cubic-bezier(.2,.75,.2,1)}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;cursor:pointer}
a,button{-webkit-tap-highlight-color:transparent}
:focus-visible{outline:2px solid var(--accent);outline-offset:6px}
button:disabled{cursor:default}
.skip{position:fixed;top:-80px;left:20px;z-index:20;background:white;padding:12px}
.skip:focus{top:12px}
.header{height:90px;max-width:1440px;margin:auto;padding:0 5%;display:flex;align-items:center;justify-content:space-between;gap:24px}
.brand{font-size:26px;letter-spacing:-1px;font-weight:650;display:flex;align-items:center}
.brand-dot{color:var(--accent)}
.paw{font-size:31px;font-weight:400;margin-right:11px;color:#7c9989;transform:rotate(-18deg)}
.header nav{display:flex;gap:32px;font-size:13px}
.header nav a{padding:10px 0;position:relative}
.header nav a::after{content:"";position:absolute;height:3px;width:3px;background:var(--accent);bottom:0;left:50%;border-radius:50%;opacity:0}
.header nav a:hover::after,.header nav a:focus-visible::after{opacity:1}
.preview-label{font-size:10px;color:var(--muted);display:flex;align-items:center;gap:7px;letter-spacing:1px}
.preview-label i{width:5px;height:5px;background:#84a28b;border-radius:50%}
.world{position:relative;height:min(740px,calc(100svh - 105px));min-height:570px;max-width:1440px;margin:0 auto;isolation:isolate;overflow:hidden}
#water{position:absolute;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none}
.water-glow{position:absolute;inset:8% 9% 5%;z-index:-2;border-radius:50%;background:radial-gradient(ellipse,#e3efea80 0%,#e4eeeb50 38%,#f9faf800 70%)}
.intro{position:absolute;left:50%;top:46%;transform:translate(-50%,-50%);text-align:center;width:55%;pointer-events:none}
.small-note{font-size:9px;letter-spacing:2.3px;color:#7a8c81;margin:0 0 23px}
h1{font-size:clamp(30px,3.3vw,48px);font-weight:500;letter-spacing:-1.4px;line-height:1.35;margin:0 0 19px}
h1 span{font-family:Georgia,"Times New Roman",serif;font-style:italic;font-size:1.13em;letter-spacing:-2px}
.intro-copy{font-size:14px;line-height:1.9;color:#77877e;margin:0 0 25px;letter-spacing:1px}
.wander{font-size:11px;display:inline-flex;gap:18px;align-items:center;pointer-events:auto;border-bottom:1px solid #8c9d8f50;padding:0 0 8px}
.wander:hover{color:var(--accent)}
.wander span{font-size:18px}
.character{position:absolute;left:var(--x);top:var(--y);transform:translate(calc(-50% + var(--dx,0px)),calc(-50% + var(--dy,0px)));width:clamp(85px,10vw,135px);padding:0;background:none;border:0;touch-action:none;user-select:none;z-index:2;cursor:grab}
.character::before{content:"";position:absolute;inset:75% 15% 0;background:#81968a21;border-radius:50%;filter:blur(9px);transform:scaleY(.4)}
.float{display:block;animation:bob 6s ease-in-out infinite;animation-delay:var(--delay);transition:filter .2s}
.character img{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:contain;transform:rotate(var(--angle));filter:drop-shadow(0 10px 7px #55756512);pointer-events:none}
.name{position:absolute;left:50%;bottom:-24px;white-space:nowrap;transform:translateX(-50%);font-size:10px;letter-spacing:.2px;color:#64786b;opacity:0;transition:opacity .2s}
.character:hover .name,.character:focus-visible .name,.character.hello .name{opacity:1}
.character:hover .float,.character:focus-visible .float{filter:brightness(1.04)}
.character.dragging{cursor:grabbing;z-index:4}
.character.dragging .float{animation-play-state:paused}
.character.hello .float{filter:drop-shadow(0 0 10px #d9b58445)}
.scene-hint{position:absolute;left:5%;bottom:24px;font-size:10px;letter-spacing:1px;color:#8a958b;margin:0}
.scene-hint span{display:inline-block;margin-right:7px;font-size:18px;transform:rotate(-15deg)}
.scene-controls{position:absolute;right:5%;bottom:25px;display:flex;gap:12px;align-items:center;color:#89938a;font-size:10px}
.scene-controls button{padding:10px 0;background:none;border:0;font-size:10px}
.scene-controls button:hover{color:#314c3d}
.paused .float{animation-play-state:paused}
@keyframes bob{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-12px) rotate(2deg)}}
.notebook{max-width:1080px;margin:50px auto 0;padding:0 40px}
.notebook-top{display:flex;align-items:center;justify-content:space-between;color:#879083;font-size:11px;letter-spacing:1px;border-bottom:1px solid var(--line);padding:0 0 22px}
.tiny-paw{font-size:22px;color:#a2b19d}
.content-grid{display:grid;grid-template-columns:230px 1fr;gap:90px;padding-top:65px}
.section-kicker{font-size:10px;color:#879083;letter-spacing:1px;margin:0 0 28px}
.about h2{font-size:28px;line-height:1.55;letter-spacing:-.8px;font-weight:500;margin:0 0 25px}
.about>p:not(.section-kicker){font-size:13px;line-height:2.1;color:#788278;margin:0 0 20px}
.text-link{display:block;width:fit-content;font-size:12px;line-height:2.6;text-decoration:underline;text-underline-offset:4px;text-decoration-color:#bbc5b7}
.text-link:hover{color:var(--accent)}
.dog-note{display:flex;align-items:center;gap:13px;margin-top:40px}
.dog-note img{width:65px;height:75px;object-fit:contain;transform:rotate(-9deg)}
.dog-note span{font-size:10px;line-height:1.9;color:#939b8b}
.entries section{scroll-margin-top:35px;margin-bottom:52px}
.section-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:18px}
.section-heading h2{font-size:17px;letter-spacing:.3px;font-weight:500;margin:0}
.section-heading a,.subtle{font-size:10px;color:#8c9689}
.section-heading a:hover{color:var(--accent)}
.article-row{display:block;padding:24px 0 25px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.article-meta{display:flex;gap:14px;align-items:center;font-size:10px;color:#98a08f;margin-bottom:15px}
.article-meta span::before{content:"·";margin-right:14px}
h3{font-weight:500}
.article-row h3{font-size:19px;line-height:1.6;letter-spacing:-.3px;margin:0 0 10px}
.article-row h3 span{display:inline-block;font-size:16px;color:#91a087;transition:transform .2s}
.article-row:hover h3{color:var(--accent)}
.article-row:hover h3 span{transform:translate(2px,-2px)}
.article-row p{font-size:12px;line-height:1.9;color:#838c7e;margin:0 0 18px;max-width:490px}
.tags{display:flex;gap:15px;font-size:10px;color:#7b8d73}
.tags span::before{content:"#";margin-right:4px;color:#a5b19c}
.simple-row{display:flex;align-items:center;gap:18px;border-top:1px solid var(--line);padding:21px 0}
.row-number{font-family:Georgia,serif;font-style:italic;color:#a3ac9c;font-size:16px}
.simple-row h3{font-size:14px;margin:0 0 7px}
.simple-row p{font-size:11px;color:#8a9483;margin:0;line-height:1.7}
.status{margin-left:auto;flex-shrink:0;font-size:10px;color:#97a18d}
.section-description{font-size:11px;color:#8a9483;line-height:1.8;margin:-3px 0 20px}
.bookmark{display:flex;align-items:center;gap:15px;padding:16px 0;border-top:1px solid var(--line)}
.bookmark-icon{display:flex;align-items:center;justify-content:center;width:35px;height:35px;background:#e4eee9;color:#557a6b;font-family:Georgia,serif;font-size:21px;border-radius:9px;flex-shrink:0}
.penn{background:#eeece4;color:#8d8b6d;font-size:16px}
.bookmark h3{font-size:13px;margin:0 0 6px}
.bookmark p{font-size:11px;color:#8a9483;margin:0;line-height:1.6}
.bookmark>span:last-child{margin-left:auto;font-size:14px;color:#9aa590}
.bookmark:hover h3{color:var(--accent)}
.empty-friends{display:flex;align-items:center;gap:21px;border-top:1px solid var(--line);padding:26px 0}
.empty-friends>span{font-size:35px;font-weight:300;color:#a6b39b}
.empty-friends h3{font-size:13px;margin:0 0 8px}
.empty-friends p{font-size:11px;color:#8a9483;line-height:1.8;margin:0}
footer{max-width:1000px;margin:15px auto 0;padding:30px 0 40px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:25px}
footer .brand{font-size:20px}
footer p{text-align:center;font-size:11px;color:#879083;line-height:2;margin:0}
footer small{font-size:9px;color:#9ba394}
footer>a:last-child{font-size:21px;padding:10px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.scene-stage{position:absolute;inset:0;isolation:isolate;transform:translate(var(--camera-x,0px),var(--camera-y,0px)) scale(var(--camera-zoom,1));transition:transform 900ms cubic-bezier(.2,.75,.2,1)}
.scene-stage .character,.scene-stage .intro{transition:opacity .5s}
.scene-stage.focused .character:not(.selected),.scene-stage.focused .intro{opacity:.12}
.scene-stage.focused .float{animation-play-state:paused}
.character .name{opacity:1;font-size:11px}
.character.selected .name{font-size:12px;color:#385d4d}
#jump-stars{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:8}
body:has(#portal[open]){overflow:hidden}
#portal{position:fixed;inset:0 0 0 auto;margin:0;width:min(780px,62vw);max-width:none;max-height:none;height:100dvh;border:0;border-radius:0;color:inherit;padding:0;overflow:hidden}
#portal[open]{display:flex;flex-direction:column;animation:panel-in .65s cubic-bezier(.2,.75,.2,1) both}
#portal::backdrop{background:#f5f8f31a}
.portal-bar{display:flex;align-items:center;justify-content:space-between;padding:21px 25px;border-bottom:1px solid var(--line);gap:16px;font-size:11px;color:#7e8e80;flex-shrink:0}
.portal-bar button{border:0;background:transparent;font-size:11px;padding:7px 0}
.portal-bar button span{font-size:21px;margin-left:12px;vertical-align:middle}
.portal-content{overflow:auto;padding:36px;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#b8c6b4 transparent}
.portal-content section{margin:0}.portal-content .about{max-width:420px}.portal-content .section-heading h2{font-size:23px}.portal-content .about h2{font-size:35px}
@keyframes panel-in{from{opacity:0;transform:translate(45px,12px)}to{opacity:1;transform:none}}
.bookshelf{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:27px;padding:32px 18px 20px;position:relative;isolation:isolate}
.bookshelf::before{content:"";position:absolute;left:0;right:0;top:225px;height:12px;background:linear-gradient(#eee9df,#d8d1c2);box-shadow:0 10px 13px #8e867c1c;z-index:-1;border-radius:2px}
.book{display:flex;flex-direction:column;align-items:center;min-width:0;text-align:center;perspective:800px}
.book-object{height:190px;width:128px;position:relative;display:block;background:var(--book-color);transform:rotateY(-15deg) rotateZ(var(--book-angle));transform-style:preserve-3d;transition:transform .45s cubic-bezier(.2,.75,.2,1);border-radius:2px 4px 4px 2px;box-shadow:7px 12px 15px #303d302b}
.book-object::before{content:"";position:absolute;inset:3px -8px 3px auto;width:8px;background:repeating-linear-gradient(0deg,#f5f0e6 0px,#f5f0e6 1px,#d5d0c4 1px,#d5d0c4 2px);transform:rotateY(55deg);transform-origin:left;border:1px solid #d8d0c0}
.book-object::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#00000025,transparent 4%,#ffffff38 6%,transparent 10%);border-radius:inherit;pointer-events:none}
.book-object img{display:block;width:100%;height:100%;object-fit:cover;border-radius:inherit}
.book:first-child .book-object img{object-fit:contain;background:white}
.book:hover .book-object,.book:focus-visible .book-object{transform:translateY(-12px) rotateY(0) rotateZ(0)}
.book strong{font-size:12px;font-weight:500;margin:30px 0 7px;line-height:1.7}
.book small{font-size:10px;color:#82907d;line-height:1.6}
.shelf-note,.local-note{font-size:10px;line-height:1.8;color:#82907d;margin:15px 0 0}
.quiet-button{background:transparent;border:0;padding:7px 0;font-size:11px;color:#667d62;white-space:nowrap}
.collection-tools{display:flex;align-items:center;gap:12px;margin:18px 0 13px}
input{font:inherit;color:inherit;min-width:0}
.collection-tools input{width:100%;border:1px solid var(--line);border-radius:7px;background:#ffffff80;padding:12px;font-size:12px}
#bookmark-count{font-size:11px;color:#82907d;white-space:nowrap}
.filter-tags{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 23px}
.filter-tags button{border:1px solid #e0e7dc;border-radius:20px;background:transparent;font-size:11px;padding:7px 12px;color:#718369}
.filter-tags button[aria-pressed=true]{background:#344e3f;border-color:#344e3f;color:#fff}
.filter-tags button:hover{border-color:#7f9875}
.bookmark-entry{display:flex;align-items:center;gap:10px;border-top:1px solid var(--line)}
.bookmark-entry .bookmark{flex:1;min-width:0;border:0;padding:20px 0}
.bookmark-entry .bookmark>div{min-width:0}.bookmark-entry h3{font-size:14px}.bookmark-entry p{font-size:12px;color:#74836d;overflow-wrap:anywhere}
.bookmark-url{display:block;font-size:10px;color:#9aa591;margin:5px 0 8px;overflow-wrap:anywhere}
.bookmark-labels{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px;font-size:10px;color:#8b9b81}
.edit-bookmark{border:0;background:transparent;font-size:10px;color:#879a7c;padding:12px 0 12px 8px}
#bookmark-form{padding:20px;background:#eff3eb;border-radius:10px;margin:18px 0}
#bookmark-form h3{font-size:15px;margin:0 0 18px}
#bookmark-form label{display:block;font-size:12px;margin:12px 0;color:#617458}
#bookmark-form input{display:block;width:100%;padding:10px 12px;border:1px solid #d9e2d0;border-radius:5px;background:#fff;font-size:14px;margin-top:7px}
.form-actions{display:flex;align-items:center;gap:13px;margin-top:20px}
.form-actions button{padding:10px 14px;border:1px solid #c8d5c0;background:transparent;border-radius:5px;font-size:12px}
.form-actions button[type=submit]{background:#344e3f;color:white;border-color:#344e3f}
#remove-bookmark{margin-left:auto;color:#b36952}
#bookmark-empty{padding:20px 0;font-size:13px;color:#788b6e}
.article-row p,.about>p:not(.section-kicker){font-size:14px;color:#677660}
.section-description{font-size:13px;color:#75866b}
.article-meta,.tags,.status,.section-heading a,.subtle{font-size:11px}
.header{position:relative;z-index:3;text-shadow:0 1px 12px #0006}
.paw,.tiny-paw{color:#e0cfae}.preview-label i{background:#e1c992}
.skip{background:#17273c}
.water-glow{background:radial-gradient(ellipse,#759ed315 0%,#31527b13 35%,transparent 70%)}
.intro{text-shadow:0 2px 24px #010814b3}.small-note{color:#d9d4c6}.intro-copy{color:#c1ccda}.wander{border-bottom-color:#c9d5e64d}
.character::before{background:#a9ceff33}.character img{filter:drop-shadow(0 10px 10px #04091580)}
.name,.character.selected .name{color:#e3e6e9;text-shadow:0 2px 5px #010815,0 0 14px #000b}
.scene-hint,.scene-controls,.section-kicker,.notebook-top,.dog-note span,footer p{color:#aebed0}
.scene-controls button:hover,.quiet-button:hover{color:#f5dfba}
.article-row p,.about>p:not(.section-kicker),.simple-row p,.empty-friends p,.section-description,.bookmark-entry p{color:#acbdce}
.article-meta,.tags,.status,.section-heading a,.subtle,.book small,.bookmark-labels,.shelf-note,.local-note,.bookmark-url,.edit-bookmark,#bookmark-count,footer small{color:#99aec4}
.text-link{text-decoration-color:#849ab4}.row-number{color:#b8c3cf}.empty-friends>span{color:#b8c8d9}
#portal{background:linear-gradient(100deg,#0c1728e8,#0c1728fc 35%);box-shadow:none}
#portal::backdrop{background:#02091738}.portal-bar{color:#c2d0e0}.portal-content{scrollbar-color:#486480 transparent}
.bookshelf::before{background:linear-gradient(#536376,#25364b);box-shadow:0 10px 16px #0005}.book-object{box-shadow:8px 12px 20px #0008}
.quiet-button{color:#d9c19a}.bookmark-icon{background:#1b2b42;color:#d9c5a2}
.collection-tools input,#bookmark-form input{background:#07111e;border-color:#476282;color:#e6edf4}input::placeholder{color:#92a4b9}
.filter-tags button{border-color:#405570;color:#bac9dc}.filter-tags button[aria-pressed=true]{background:#dbcca9;border-color:#dbcca9;color:#172335}.filter-tags button:hover{border-color:#cfbc99}
#bookmark-form{background:#152339}#bookmark-form label{color:#c4d0df}.form-actions button{border-color:#51637c}.form-actions button[type=submit]{background:#dbcca9;color:#172335;border-color:#dbcca9}#remove-bookmark{color:#e7aa95}#bookmark-empty{color:#b7c9dc}
.owner{width:clamp(100px,11vw,145px)}
.small-note{font-size:11px;letter-spacing:3px}
.notebook-top,.article-row,.simple-row,.bookmark-entry,.empty-friends,.portal-bar{border:0}
.article-row{padding-top:10px;padding-bottom:15px}.simple-row{padding:20px 0;align-items:flex-start}.simple-row p{font-size:13px;line-height:1.9}.row-number{padding-top:2px}
.entries section{margin-bottom:70px}.section-heading{margin-bottom:23px}.notebook-top{padding-bottom:5px}
.portal-bar{padding:26px 36px}.portal-content{padding:28px 45px 55px}.portal-content .section-heading h2{font-size:26px}
.profile-portrait{display:block;width:110px;height:125px;object-fit:contain;margin:0 0 25px;filter:drop-shadow(0 12px 14px #0004)}
.profile-details{margin:30px 0 25px}.profile-details summary{font-size:12px;color:#d5c7ae;cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:10px;padding:10px 0}.profile-details summary::-webkit-details-marker{display:none}.profile-details[open] summary span{transform:rotate(45deg)}
.profile-details h3{font-size:16px;margin:32px 0 15px}.profile-details p,.experience dd{font-size:13px;color:#acbdce;line-height:2}.experience{margin:0}.experience dt{font-size:13px;line-height:1.8;margin-top:23px}.experience dd{margin:7px 0 0}.experience small{display:block;font-size:10px;color:#90a3bb;margin-top:6px}.profile-details .profile-note{font-size:11px;color:#8298b2}
.portal-content .profile-portrait{width:105px;height:115px;float:right;margin:0 0 15px 25px}.portal-content .about{max-width:none}.portal-content .profile-details{clear:both}.portal-content .profile-details summary{font-size:13px}.portal-content .about>p{max-width:470px}
.bookmark-entry{padding:2px 0 8px}.bookmark-icon{background:transparent;font-family:Georgia,serif;font-size:25px;color:#dac6a3}.filter-tags button{border-color:transparent;border-radius:3px}.filter-tags button[aria-pressed=true]{background:#d9c9a618;color:#f0dbb1;border-color:transparent}.collection-tools input{border:0;border-bottom:1px solid #9cb7d633;border-radius:0;background:transparent;padding-left:0}
@media(min-width:1450px){.world{height:760px}}
@media(max-width:850px){.content-grid{grid-template-columns:170px 1fr;gap:30px}.notebook{padding:0 30px}.header nav{gap:22px}.preview-label{display:none}footer{margin-left:30px;margin-right:30px}.character{width:105px}.small-note{font-size:8px;letter-spacing:1.5px}.bookshelf{gap:15px;padding-left:4px;padding-right:4px}.book-object{width:85px;height:126px}.bookshelf::before{top:161px}.book strong{font-size:11px}#portal{width:65vw}.portal-content{padding:27px}.portal-content .section-heading h2{font-size:19px}}
@media(max-width:600px){
  body::before{height:830px;background-position:calc(40% + var(--sky-pan,0px)) top}
  .header{height:75px;padding:0 20px;gap:12px}.brand{font-size:23px}.paw{font-size:25px;margin-right:6px}.header nav{gap:15px;font-size:12px}
  .world{height:640px;min-height:0}.intro{width:85%;top:41%}.small-note{font-size:7px;letter-spacing:1.3px;margin-bottom:16px}h1{font-size:30px;letter-spacing:-1px;margin-bottom:14px}.intro-copy{font-size:12px;line-height:1.9;margin-bottom:16px}.wander{font-size:10px}
  .character{width:86px}.sam{--x:16%!important;--y:17%!important}.jensen{--x:84%!important;--y:17%!important}.owner{--x:50%!important;--y:12%!important;width:96px}.dario{--x:84%!important;--y:59%!important}.demis{--x:68%!important;--y:81%!important}.andrej{--x:28%!important;--y:80%!important}.puppy{--x:16%!important;--y:59%!important;width:83px}
  .water-glow{inset:15% 0 10%}.name{font-size:9px;bottom:-17px}.scene-hint{left:24px;bottom:8px;font-size:8px;letter-spacing:0}.scene-controls{right:24px;bottom:4px;gap:8px}.scene-controls button{font-size:9px}
  .notebook{margin-top:36px;padding:0 26px}.notebook-top{font-size:9px;letter-spacing:.3px}.content-grid{display:block;padding-top:35px}.about{padding-bottom:35px;margin-bottom:35px;border-bottom:1px solid var(--line);position:relative}.section-kicker{margin-bottom:15px}.about h2{font-size:25px;line-height:1.5;margin-bottom:16px}.about>p:not(.section-kicker){font-size:12px;max-width:280px;margin-bottom:15px}.text-link{display:inline-block;margin-right:18px;font-size:11px}.dog-note{position:absolute;right:0;top:0;margin-top:0}.dog-note span{display:none}.dog-note img{width:59px;height:70px}.article-row h3{font-size:17px}.section-heading h2{font-size:16px}.entries section{margin-bottom:42px}.article-row p{font-size:11px}.simple-row{gap:13px}.simple-row p{font-size:10px}.status{font-size:9px}.empty-friends p{font-size:10px}footer{margin:0 26px;padding:25px 0;align-items:flex-start;flex-wrap:wrap;gap:12px}footer p{order:3;flex-basis:100%;text-align:left}footer small{font-size:8px}footer>a:last-child{padding:0}
  .small-note{font-size:8px;letter-spacing:1px}.scene-hint{font-size:10px;bottom:10px}.scene-controls button{font-size:10px;min-height:44px}.scene-controls{bottom:0;right:20px}.character .name{font-size:11px}
  .about>p:not(.section-kicker),.article-row p,.simple-row p,.empty-friends p{font-size:13px;line-height:1.9}.status,.article-meta,.tags,.section-kicker,.section-heading a,.subtle{font-size:11px}.section-description{font-size:12px}
  .bookshelf{gap:15px;padding:25px 4px 15px}.book-object{width:80px;height:122px}.bookshelf::before{top:149px;height:9px}.book strong{font-size:11px;margin-top:26px}.book small{font-size:10px}.shelf-note,.local-note{font-size:11px}.book-object::before{width:6px;right:-6px}
  .collection-tools input{font-size:16px}.filter-tags button{padding:8px 12px;min-height:38px}.bookmark-entry .bookmark{gap:11px}.bookmark-icon{width:29px;height:32px}.bookmark-entry p{font-size:12px}.edit-bookmark{font-size:11px;min-height:44px}#bookmark-form input{font-size:16px}
  #portal{inset:196px 0 0;width:100%;height:calc(100dvh - 196px);border-radius:24px 24px 0 0;background:#0c1728f7}.portal-bar{padding:9px 22px;font-size:10px}.portal-bar button{font-size:11px;min-height:44px}.portal-content{padding:24px}.portal-content .section-heading h2{font-size:19px}.portal-content .about{margin:0;padding:0;border:0}.portal-content .about h2{font-size:28px}.portal-content .section-heading{gap:9px}.portal-content .bookshelf{gap:10px}
  .about{border-bottom:0}.profile-portrait{width:88px;height:100px}.portal-content .profile-portrait{width:86px;height:105px;margin-left:10px}.small-note{font-size:10px;letter-spacing:2px}.entries section{margin-bottom:54px}.portal-content section{margin:0}.profile-details p,.experience dd{font-size:13px}.profile-details{margin-top:20px}.dog-note{top:20px}.portal-content .dog-note{display:none}
  footer small{font-size:10px}.notebook-top{font-size:11px;letter-spacing:0}
}
@media(max-width:360px){.header{padding:0 15px}.header nav{gap:12px;font-size:11px}.paw{display:none}.scene-hint{left:15px;font-size:9px}.scene-controls{right:15px;gap:6px}.book-object{width:71px;height:110px}.bookshelf::before{top:137px}.book strong{font-size:10px}.book small{font-size:9px}.portal-content{padding:22px 16px}}
@media(max-height:500px) and (min-width:601px){.header{height:62px}.world{height:460px;min-height:460px}.character{width:85px}.intro h1{font-size:29px}.intro-copy{font-size:12px;margin-bottom:13px}.small-note{margin-bottom:14px}.name{bottom:-16px}.scene-hint{bottom:8px}.scene-controls{bottom:0}.scene-controls button{min-height:44px}#portal{inset:12px 16px 12px auto;height:calc(100dvh - 24px);width:64vw}.portal-bar{padding:8px 20px}.portal-bar button{min-height:35px}.portal-content{padding:24px}.bookshelf{padding-top:20px}.bookshelf::before{top:149px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.float{animation:none}*,*::before,*::after{transition:none!important;animation:none!important}.scene-stage{transform:none!important}}

/* Quiet reading typography; the illustrated sky remains outside the page. */
@font-face{font-family:"Danny Reading";src:url(assets/reading-400.ttf) format("truetype");font-weight:400;font-display:swap}
@font-face{font-family:"Danny Reading";src:url(assets/reading-500.ttf) format("truetype");font-weight:500;font-display:swap}
:root{--reading-font:"Danny Reading","Songti SC","Noto Serif CJK SC",SimSun,Georgia,serif}
.section-heading h2,.about h2,.profile-details h3,.article-row h3{font-family:var(--reading-font);font-weight:500;letter-spacing:0}
.portal-content>section,.portal-content>.about{max-width:640px;margin-inline:auto}
.portal-content .section-heading h2{font-size:26px;line-height:1.55}
.portal-content .about>p:not(.section-kicker){font-size:16px;line-height:1.9;max-width:32em;margin-bottom:24px}
.portal-content .profile-details p,.portal-content .experience dd{font-size:15px;line-height:1.9}
.portal-content .profile-details h3{margin-top:40px;font-size:20px}
.portal-content .simple-row p,.portal-content .article-row p{font-size:15px;line-height:1.85}
.tags .letter-invitation{margin-left:auto;color:#e2cfa9}.tags .letter-invitation::before{content:none}
.letter-reading{margin-top:24px}
.letter-paper{background:#e6d7b8 url(assets/letter-paper.webp) center / 100% 100%;color:#333a3c;padding:40px 44px 32px;box-shadow:0 15px 45px #0004,1px 2px 0 #b0a083;transform-origin:top center;font-family:var(--reading-font)}
#letter-view[open] .letter-paper{animation:unfold-letter .65s cubic-bezier(.2,.75,.2,1) both}
.letter-dateline{display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;font-size:11px;line-height:1.8;color:#636255;letter-spacing:.4px}
.letter-paper h3{font-size:clamp(23px,2.2vw,30px);font-weight:500;line-height:1.65;margin:32px 0 26px;letter-spacing:1px}
.letter-paper p{font-size:16px;line-height:2.05;margin:0 0 21px;overflow-wrap:anywhere}
.letter-signature{display:flex;justify-content:flex-end;align-items:center;gap:14px;margin-top:30px;font-family:Georgia,serif;font-style:italic;font-size:23px}
.letter-signature img{object-fit:contain;filter:sepia(.5);opacity:.7}
.letter-signoff{display:block;font-family:var(--reading-font);font-size:11px;font-style:normal;letter-spacing:1px;margin-top:6px}
.letter-summary{padding:36px 4px 8px;max-width:36em}
.letter-summary .section-kicker{font-size:13px;letter-spacing:1px;color:#e2d5bb;margin:0 0 20px}
.letter-summary ol{padding-left:22px;margin:0 0 20px;color:#abbaca}
.letter-summary li{padding-left:5px;font-size:14px;line-height:1.9;margin-bottom:13px}
.letter-summary strong{font-weight:500;color:#e3e6e9}
.letter-summary .text-link{font-size:13px}
.letter-source{font-size:11px;line-height:1.9;color:#96a7bc;margin:17px 0 0}
@keyframes unfold-letter{from{opacity:0;transform:translateY(15px) rotateX(-6deg)}to{opacity:1;transform:none}}
@media(max-width:850px){.letter-paper{padding:30px 28px}.portal-content .section-heading h2{font-size:23px}}
@media(max-width:600px){.portal-content .section-heading h2{font-size:22px}.letter-reading{margin-top:18px}.letter-paper{padding:27px 22px 26px}.letter-paper h3{font-size:24px;line-height:1.6;margin:25px 0 23px}.letter-paper p{font-size:16px;line-height:1.95}.letter-dateline{font-size:10px;gap:6px}.letter-summary{padding-top:30px}.tags{flex-wrap:wrap}.tags .letter-invitation{margin-left:0}.portal-content .about>p:not(.section-kicker){font-size:15px}.portal-content .profile-details p,.portal-content .experience dd{font-size:14px}}

/* Full-window reading room: book spines stay still while the letter scrolls. */
body:has(#letter-view[open]){overflow:hidden}
#letter-view{--rail:132px;inset:0;margin:0;padding:0 0 0 var(--rail);width:100%;height:100dvh;max-width:none;max-height:none;border:0;color:#313c43;background:linear-gradient(155deg,#e5dce9 0%,#cbdbe6 52%,#acc5d2 100%);color-scheme:light;overflow:hidden}
#letter-view[open]{display:block;animation:reading-in .6s cubic-bezier(.2,.75,.2,1) both}
#letter-view::backdrop{background:#111a29b3}
#letter-view:focus-visible{outline:none}
#close-letter{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:52px;min-height:72px;border:0;background:none;color:#293e4c;padding:8px 0}
#close-letter>span{display:block;font-size:30px;transition:transform .25s}
#close-letter small{display:block;font-size:11px;margin-top:5px}
#close-letter:hover>span{transform:translateX(-5px)}
.reading-spines{position:absolute;left:76px;top:0;bottom:0;display:flex;gap:0}
.reading-spines span{writing-mode:vertical-rl;padding:32px 5px;width:24px;letter-spacing:2px;font-size:10px;color:#435462;background:#a9bacb;box-shadow:inset -2px 0 4px #243b4c13}
.reading-spines span:nth-child(2){background:#c3b8c8;width:19px}.reading-spines span:nth-child(3){background:#d4c8ad;width:13px;padding-inline:1px;letter-spacing:4px}
.reading-scroll{height:100%;overflow:auto;overscroll-behavior:contain;padding:44px max(30px,calc((100% - 680px)/2)) 80px;scrollbar-color:#718694 transparent;scrollbar-width:thin}
.reading-heading{display:flex;justify-content:space-between;font-size:11px;letter-spacing:2px;color:#526776;margin:0 0 32px}
#letter-view .letter-reading{margin:0}
#letter-view .letter-paper{box-shadow:0 16px 40px #33455126,1px 2px 0 #b0a083;padding:48px 54px 36px}
#letter-view .letter-summary .section-kicker{color:#354e60}
#letter-view .letter-summary ol{color:#4b5c65}
#letter-view .letter-summary strong{color:#273f4e}
#letter-view .letter-source{color:#526775}
#letter-view .text-link{text-decoration-color:#768c96}
#letter-view a:hover{color:#173c53}
@keyframes reading-in{from{opacity:0;transform:translateX(35px)}to{opacity:1;transform:none}}
@media(max-width:850px){#letter-view{--rail:100px}.reading-spines{left:64px}.reading-spines span{width:16px;padding-inline:1px}.reading-spines span:nth-child(2){width:12px}.reading-spines span:nth-child(3){width:8px;font-size:0}.reading-scroll{padding:30px 28px 55px}#close-letter{left:5px}#letter-view .letter-paper{padding:35px 32px}}
@media(max-width:600px){#letter-view{--rail:56px}.reading-spines{left:44px}.reading-spines span,.reading-spines span:nth-child(2),.reading-spines span:nth-child(3){width:4px;padding:0;font-size:0}#close-letter{left:0;width:44px}.reading-scroll{padding:25px 14px 44px}.reading-heading{font-size:10px;letter-spacing:1px;margin-bottom:24px}#letter-view .letter-paper{padding:25px 20px}#letter-view .letter-paper h3{font-size:22px;letter-spacing:0}.letter-summary .text-link{display:block;font-size:12px}.letter-summary li{font-size:13px}.letter-dateline{font-size:10px}}
