/* Reuse the user's pet sprite sheet directly: 8 columns, 11 rows, 192 x 208 tiles. */
:root{--paper:#fff8f5;--white:#fffefd;--ink:#5b4651;--muted:#a38b92;--green:#d87f9b;--greenlight:#ffebf1;--line:#f1dfe5;--pink:#e5a09a;--serif:"YouYuan","幼圆","Microsoft YaHei","PingFang SC",sans-serif}
body{background:radial-gradient(ellipse at 92% 9%,#ffedf5 0,transparent 28%),radial-gradient(ellipse at 0 1%,#fff1e6 0,transparent 23%),var(--paper)}
.topbar{border-bottom-color:#f3e1e7}.brand{letter-spacing:.5px}.brand small{color:#b48b9b}.brand-mark{border:2px solid white;box-shadow:0 3px 12px #d68ca222;background:#ffeaf2}
.pet-avatar{position:relative;display:block;flex:none;width:52px;height:52px;overflow:hidden;border-radius:50%;background:#ffeaf2}
.pet-avatar:before{content:"";position:absolute;left:50%;top:-8px;transform:translateX(-50%);width:104px;height:112.667px;background:url('/pet-sprites.png') no-repeat 0 0;background-size:832px 1239.333px}
.nav-admin{border-color:#efd4df;background:#fffafd}.topbar nav a:hover{color:#c66887}
.hero{gap:48px;padding:54px 0 58px}.hero-copy>.eyebrow{display:inline-block;background:#ffedf2;border:1px solid #f7dbe5;border-radius:24px;padding:7px 14px;font-size:10px;letter-spacing:2px}
.hero h1{font-family:"YouYuan","幼圆","Microsoft YaHei","PingFang SC",sans-serif;font-size:57px;font-weight:800;line-height:1.35;letter-spacing:1px;margin:25px 0 18px}
.hero .qiqi-name{color:#d17b98;position:relative;display:inline-block}.hero .name-spark{font-size:25px;position:absolute;top:4px;right:-36px;color:#eab58f}
.hero p{color:#a1838c;font-size:14px;line-height:2}.primary{border-radius:24px;background:#d87f9b;box-shadow:0 6px 0 #c9738f16;padding:13px 25px}.primary:hover{background:#c66a87}.hero .link-button{gap:30px}.hero .link-button span{font-size:21px;line-height:1}
.hero-dates{gap:17px;margin-top:29px}.hero-dates>div{padding:13px 18px;background:#fffefd;border:1px solid #f0dde4;border-radius:14px;box-shadow:0 4px 15px #d68ca206}.hero-dates>div+div{border-left:1px solid #f0dde4;padding-left:18px}.hero-dates b{font-size:17px;font-weight:600;color:#986b7c}.hero-dates small{font-size:10px;color:#ac909a}
.pet-cover{min-height:485px;display:flex;align-items:center;justify-content:center;flex-direction:column;transform:none;padding:28px 18px 0;border-radius:42px;border:2px solid white;background:radial-gradient(ellipse at 47% 38%,#fffdfb 0,#fff8f8 45%,#ffe4ef 100%);box-shadow:0 15px 45px #d296a316;isolation:isolate;overflow:visible}
.pet-sprite{position:relative;width:365px;aspect-ratio:12/13;flex:none;z-index:2;background:url('/pet-sprites.png') no-repeat 0 0;background-size:800% 1100%;filter:drop-shadow(0 10px 5px #b9769312);animation:pet-blink 8s steps(1,end) infinite}
@keyframes pet-blink{0%,87%,92%,100%{background-position:0 0}89%,90%{background-position:42.857142857% 0}}
.pet-ground{position:absolute;bottom:76px;left:50%;transform:translateX(-50%);width:270px;height:45px;border-radius:50%;background:#ecc5d844;filter:blur(7px);z-index:0}
.cover-orbit{position:absolute;border-radius:50%;z-index:0;pointer-events:none}.orbit-one{width:345px;height:345px;border:1px dashed #f3c9da;top:48px;left:50%;transform:translateX(-50%)}.orbit-two{width:282px;height:282px;background:#ffeaf340;top:80px;left:50%;transform:translateX(-50%)}
.cover-spark{position:absolute;color:#eeb896;font-size:42px;z-index:3}.spark-one{left:35px;top:93px;transform:rotate(-15deg)}.spark-two{right:32px;bottom:100px;font-size:38px;color:#dca4bb}.cover-heart{position:absolute;right:28px;top:58px;color:#eab1c7;font-size:46px;transform:rotate(13deg)}
.pet-hello{position:absolute;right:27px;top:20px;padding:8px 16px;background:white;border:1px solid #f2d5df;border-radius:22px 22px 22px 5px;color:#bd7b94;z-index:3;font-size:11px;transform:rotate(6deg);box-shadow:0 5px 15px #d296a30b}
.pet-cover .hero-stamp{bottom:104px;left:-25px;background:#fffefb;border:1px solid #f0d6df;border-radius:15px;padding:12px 17px;box-shadow:0 6px 0 #f2d7df55;color:#c08499;z-index:4;transform:rotate(-8deg);font-size:10px}.hero-stamp b{font-size:11px;color:#97687b;font-weight:500}.pet-cover .photo-note{align-self:stretch;border-top:1px solid #f1dbe5;height:54px;z-index:3;margin-top:2px}.photo-note span{color:#bf8199;letter-spacing:4px}.photo-note small{color:#b194a0;font-size:10px}
.moments-section{border-color:#f1dfe5}.section-intro h2{font-weight:700;font-family:"YouYuan","幼圆","Microsoft YaHei",sans-serif;font-size:27px;letter-spacing:.5px}.timeline{padding-top:12px}.milestone{border-color:#efd7e0}.milestone:before{background:#e7a1b9;outline-color:#fff8f5}.milestone h3{font-weight:600;color:#96677a}.milestone button{color:#c07d95}
.month-tabs button.selected{background:#d58ca5}.view-tabs{background:#f9e6ee}.view-tabs button.selected{color:#bd7190;background:white}.filters button{border-color:#eed7e1;background:#fffdfc}.filters button.selected{background:#ffeaf2;color:#c37794;border-color:#e6b8c9}.photo-card{border:1px solid #f0dfe5;border-radius:17px;background:#fffefd;box-shadow:0 4px 15px #dc9aaf08}.live-badge{background:#fff8fbeb;color:#b2758c}.photo-open{background:#f5e9ed}.photo-caption span{color:#ba7a94}.day-heading h3{color:#9d7181;font-weight:600}.load-more{border-radius:24px;border-color:#e9cbd8;background:#fffefd}.closing-avatar{margin:0 auto;width:66px;height:66px;border:3px solid white;box-shadow:0 5px 18px #d68ca222}.closing-avatar:before{width:128px;height:138.667px;background-size:1024px 1525.333px;top:-8px}.closing h2{font-family:"YouYuan","幼圆","Microsoft YaHei",sans-serif;font-weight:600;color:#a87588;font-size:25px}.closing a{border-bottom-color:#e4bbc9}.secondary{border-radius:19px;background:#fffafc;border-color:#ecd1dd}.viewer{border-radius:22px;background:#fffafb}.viewer::backdrop,.edit-dialog::backdrop{background:#5a3b49c9}.viewer-media{background:#392d34}.viewer-info .view-tags span{background:#ffe9f1;color:#bd7893}.photo-prev,.photo-next{color:#c27897}.toast{background:#ad6f89;border-radius:20px}.panel{border-color:#f0dbe4;border-radius:22px;background:#fffefd;box-shadow:0 8px 28px #dc9aaf08}.panel h2,.admin-main h1,.edit-dialog h2{font-family:"YouYuan","幼圆","Microsoft YaHei",sans-serif;font-weight:600}.admin-tabs .selected{background:#ffe7f0;color:#bd7791}.dropzone{border-color:#dfb4c5;background:#fff4f8;border-radius:17px}.manage-card{border-color:#f0dbe4;border-radius:13px}.edit-dialog{background:#fffafc;border-radius:22px}input:not([type=checkbox]):not([type=file]),select,textarea{border-color:#eed6e1;border-radius:10px;background:#fffefd}input[type=checkbox],progress{accent-color:#d87f9b}.helper,.local-note{color:#a88997}.form-status{color:#b97190}.form-status.error{color:#b44962}
@media(max-width:900px){.hero{gap:28px}.hero h1{font-size:44px}.pet-cover{min-height:400px;padding-top:30px}.pet-sprite{width:285px}.orbit-one{width:275px;height:275px}.orbit-two{width:230px;height:230px}.pet-ground{width:220px;bottom:71px}.hero-dates>div{padding:10px 13px}.hero-dates>div+div{padding-left:13px}.hero-dates b{font-size:14px}.pet-cover .hero-stamp{left:-17px;bottom:84px}.spark-one{left:16px;top:82px}.spark-two{right:13px;bottom:100px}.pet-hello{right:18px;font-size:10px}.pet-avatar{width:45px;height:45px}.pet-avatar:before{width:96px;height:104px;background-size:768px 1144px;top:-8px}.closing-avatar{width:66px;height:66px}.closing-avatar:before{width:128px;height:138.667px;background-size:1024px 1525.333px;top:-8px}}
@media(max-width:600px){.hero{padding:28px 0 35px;gap:25px}.hero h1{font-size:43px;line-height:1.25;margin:18px 0 14px}.hero-copy>.eyebrow{font-size:8px;letter-spacing:1.6px;padding:6px 12px}.hero p{font-size:12px;line-height:1.9}.hero-dates{gap:12px;margin-top:23px}.hero-dates>div{padding:11px 14px}.hero-dates>div+div{padding-left:14px}.hero-dates b{font-size:15px}.pet-cover{min-height:384px;margin:0 8px;border-radius:32px;padding:27px 14px 0}.pet-sprite{width:min(80%,295px)}.orbit-one{width:260px;height:260px;top:47px}.orbit-two{width:216px;height:216px;top:72px}.pet-cover .hero-stamp{left:-15px;bottom:92px;padding:9px 12px;font-size:9px}.hero-stamp b{font-size:10px}.cover-heart{font-size:34px;right:18px;top:55px}.cover-spark{font-size:31px}.spark-one{left:18px;top:94px}.pet-hello{right:20px;top:18px;font-size:10px}.pet-cover .photo-note{height:49px}.photo-note span{font-size:14px}.photo-note small{font-size:9px}.pet-ground{bottom:65px;width:220px}.brand-mark.pet-avatar{width:40px;height:40px}.brand-mark.pet-avatar:before{width:86px;height:93.167px;background-size:688px 1024.833px;top:-7px}.section-intro h2{font-size:23px}.closing h2{font-size:20px}.photo-card{border-radius:13px}.photo-caption span{color:#b57892}.photo-grid{gap:12px}.primary{padding:11px 23px}.closing-avatar{width:59px;height:59px}.closing-avatar:before{width:118px;height:127.833px;background-size:944px 1406.167px;top:-8px}}
@media(prefers-reduced-motion:reduce){.pet-sprite{animation:none}.photo-open img{transition:none}html{scroll-behavior:auto}}
.featured-section{padding:20px 0 45px}.featured-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;margin-top:25px}.featured-card{margin:0;background:#fffefd;border:1px solid #efdbe4;border-radius:20px;padding:8px;box-shadow:0 8px 23px #d68ca212}.featured-card:nth-child(2){transform:rotate(1deg)}.featured-card:nth-child(3){transform:rotate(-1deg)}.featured-open{display:block;position:relative;padding:0;border:0;background:#fcecf3;width:100%;border-radius:14px;overflow:hidden}.featured-open img{display:block;width:100%;aspect-ratio:3/4;object-fit:contain;transition:transform .25s}.featured-open:hover img{transform:scale(1.025)}.favorite-star{position:absolute;right:8px;top:8px;color:#dfa66f;background:#fff9efee;border-radius:50%;width:27px;height:27px;display:grid;place-items:center;font-size:14px}.featured-card figcaption{padding:12px 7px 9px}.featured-card h3{font-size:13px;font-weight:500;color:#ac718a;margin:0 0 3px}.featured-card small{font-size:9px;color:#a98e99}.manage-card .favorite-label{color:#c57a95}
@media(max-width:900px){.featured-grid{gap:12px}.featured-card{padding:6px}.featured-card figcaption{padding:10px 4px 6px}.featured-card h3{font-size:12px}}
@media(max-width:600px){.featured-section{padding:15px 0 33px}.featured-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:17px 13px;margin-top:21px}.featured-card{border-radius:16px;padding:6px}.featured-open{border-radius:11px}.featured-card small{font-size:8px}.featured-card h3{font-size:12px}.favorite-star{width:24px;height:24px;font-size:12px}}
.stack-toggle{border:1px solid #e8c5d4;color:#b87690;background:#fffdfc;border-radius:22px;padding:6px 14px;font-size:11px;margin:17px 0 0}.stack-toggle[aria-pressed="true"]{background:#ffeaf2}.photo-card.is-stack{position:relative;overflow:visible;margin-bottom:8px;isolation:isolate}.photo-card.is-stack:before,.photo-card.is-stack:after{content:"";position:absolute;inset:0;border:1px solid #ecd1dd;border-radius:17px;background:#fff6fa;z-index:-1;pointer-events:none}.photo-card.is-stack:before{transform:translate(3px,5px) rotate(1.5deg)}.photo-card.is-stack:after{transform:translate(6px,9px) rotate(2.5deg);z-index:-2;background:#fbe8f0}.photo-card.is-stack .photo-open{border-radius:16px 16px 0 0}.stack-badge{position:absolute;bottom:9px;right:9px;background:#fff8f1ef;color:#aa6c86;border:1px solid #efd6df;border-radius:15px;font-size:10px;padding:4px 9px;box-shadow:0 3px 6px #5b465111}#view-stack-count{border:1px solid #ebcbd9;background:#fff0f5;color:#b5728f;border-radius:20px;padding:5px 10px;display:inline-block;font-size:11px;margin:8px 0 0}.photo-grid{row-gap:24px}.filters{padding-top:12px}
@media(max-width:600px){.stack-toggle{font-size:10px}.photo-card.is-stack:before,.photo-card.is-stack:after{border-radius:13px}.photo-card.is-stack .photo-open{border-radius:12px 12px 0 0}.stack-badge{font-size:9px;padding:3px 8px}.photo-grid{row-gap:24px}}
