.gallery-book-page *{box-sizing:border-box}.gallery-book-page{margin:0;font-family:Yuanti SC,YouYuan,幼圆,Kaiti SC,STKaiti,PingFang SC,-apple-system,BlinkMacSystemFont,sans-serif;background:radial-gradient(ellipse at 50% -10%,#d6eef9,#bde0f0 45%,#a8d3e8);background-attachment:fixed;min-height:100vh;color:#3a5a73;display:flex;flex-direction:column;align-items:center;padding:5rem 1rem 3rem;overflow-x:hidden;position:relative}.gallery-book-page:before{content:"";position:fixed;inset:0;pointer-events:none;background:radial-gradient(circle at 12% 18%,rgba(255,255,255,.55) 0,transparent 14%),radial-gradient(circle at 88% 12%,rgba(255,255,255,.45) 0,transparent 12%),radial-gradient(circle at 78% 82%,rgba(255,255,255,.4) 0,transparent 16%),radial-gradient(circle at 18% 78%,rgba(255,255,255,.35) 0,transparent 14%);z-index:0}.book-back{position:fixed;top:1.25rem;left:1.25rem;z-index:30;display:inline-flex;align-items:center;gap:.45em;padding:.55em 1.15em;background:#fff;color:#4a90b8;border:2px solid #bde0f0;border-radius:999px;font-size:.85rem;font-weight:800;text-decoration:none;box-shadow:0 3px #bde0f0,0 6px 14px #4a90b826;transition:transform .2s ease,box-shadow .2s ease}.book-back:hover{transform:translateY(-2px);box-shadow:0 5px #bde0f0,0 10px 22px #4a90b838}.book-back:before{content:"◀";font-size:.65em;line-height:1}.book-header{text-align:center;margin-bottom:2rem;position:relative;z-index:1}.book-title{font-family:Comic Sans MS,Yuanti SC,幼圆,Kaiti SC,cursive,sans-serif;font-size:clamp(1.75rem,4vw,2.5rem);font-weight:800;color:#4a90b8;letter-spacing:.02em;margin:0;text-shadow:2px 2px 0 #fff,3px 3px 0 rgba(107,174,214,.3)}.book-subtitle{margin:.5rem 0 0;font-size:.78rem;letter-spacing:.16em;color:#6baed6;font-weight:700;text-transform:uppercase}.book-stage{position:relative;width:100%;max-width:1080px;perspective:2800px;perspective-origin:center center;z-index:1}.book{position:relative;display:grid;grid-template-columns:1fr 1fr;aspect-ratio:1.45 / 1;border-radius:6px;filter:drop-shadow(0 24px 48px rgba(58,90,115,.35)) drop-shadow(0 6px 14px rgba(58,90,115,.2));transform-style:preserve-3d}.book:before{content:"";position:absolute;top:0;bottom:0;left:50%;width:22px;transform:translate(-50%);background:linear-gradient(to right,transparent 0%,rgba(107,174,214,.1) 30%,rgba(74,144,184,.24) 50%,rgba(107,174,214,.1) 70%,transparent 100%);z-index:5;pointer-events:none}.book-page,.flip-face{background-color:#fbfdff;background-image:linear-gradient(rgba(107,174,214,.14) 1px,transparent 1px),linear-gradient(90deg,rgba(107,174,214,.14) 1px,transparent 1px);background-size:24px 24px;background-position:-1px -1px}.book-page{position:relative;overflow:hidden;display:flex;flex-direction:column}.book-page-left{border-radius:6px 0 0 6px;box-shadow:inset -14px 0 20px -14px #4a90b859}.book-page-right{border-radius:0 6px 6px 0;box-shadow:inset 14px 0 20px -14px #4a90b859}.book-page:after{content:"✦";position:absolute;bottom:.85rem;left:50%;transform:translate(-50%);color:#6baed666;font-size:.75rem;pointer-events:none}.flip-sheet{position:absolute;top:0;bottom:0;z-index:20;transform-style:preserve-3d;pointer-events:none;will-change:transform}.flip-face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;overflow:hidden;display:flex;flex-direction:column}.flip-front{transform:rotateY(0)}.flip-back{transform:rotateY(180deg)}.flip-face:before{content:"";position:absolute;top:0;bottom:0;width:60px;pointer-events:none;z-index:3}.flip-sheet[data-dir=next] .flip-face:before{left:0;background:linear-gradient(to right,rgba(74,144,184,.18),transparent)}.flip-sheet[data-dir=prev] .flip-face:before{right:0;background:linear-gradient(to left,rgba(74,144,184,.18),transparent)}.flip-sheet.flipping-next{animation:flipNext .75s cubic-bezier(.55,.06,.68,.19) forwards}.flip-sheet.flipping-prev{animation:flipPrev .75s cubic-bezier(.55,.06,.68,.19) forwards}@keyframes flipNext{0%{transform:rotateY(0)}to{transform:rotateY(-180deg)}}@keyframes flipPrev{0%{transform:rotateY(0)}to{transform:rotateY(180deg)}}.page-inner{flex:1;overflow-y:auto;padding:2rem 2.25rem 3rem;scrollbar-width:thin;scrollbar-color:rgba(107,174,214,.3) transparent}.page-inner::-webkit-scrollbar{width:4px}.page-inner::-webkit-scrollbar-thumb{background:#6baed64d;border-radius:4px}.page-month-header{display:flex;align-items:baseline;justify-content:space-between;padding-bottom:.85rem;margin-bottom:1.35rem;border-bottom:2px dashed rgba(107,174,214,.35)}.page-year{font-family:Comic Sans MS,Yuanti SC,cursive,sans-serif;font-size:.85rem;font-weight:700;color:#6baed6;letter-spacing:.06em}.page-month{font-family:Comic Sans MS,Yuanti SC,幼圆,cursive,sans-serif;font-size:2rem;font-weight:800;color:#4a90b8;letter-spacing:-.01em;line-height:1;text-shadow:1.5px 1.5px 0 #fff}.page-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.85rem}.page-tile{position:relative;cursor:zoom-in;border-radius:6px;overflow:hidden;aspect-ratio:1 / 1;background:#6baed614;transform:rotate(var(--tilt, 0deg));transition:transform .4s cubic-bezier(.2,.9,.3,1),box-shadow .4s ease;box-shadow:0 2px 4px #4a90b81f,0 6px 14px #4a90b81a}.page-tile:hover{transform:rotate(0) scale(1.03) translateY(-3px);box-shadow:0 6px 12px #4a90b82e,0 16px 30px #4a90b838;z-index:3}.page-tile img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s cubic-bezier(.2,.9,.3,1)}.page-tile:hover img{transform:scale(1.06)}.page-tile-caption{position:absolute;bottom:0;left:0;right:0;padding:.65em .75em;background:linear-gradient(transparent,#3a5a73c7);color:#fff;font-size:.72rem;font-weight:600;opacity:0;transform:translateY(4px);transition:opacity .25s ease,transform .25s ease}.page-tile:hover .page-tile-caption{opacity:1;transform:translateY(0)}.page-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:.5rem;font-family:Comic Sans MS,Yuanti SC,cursive,sans-serif;color:#6baed68c;font-size:1rem;text-align:center}.page-empty:before{content:"✿";font-size:2.2rem;opacity:.7}.book-controls{display:flex;align-items:center;justify-content:center;gap:1.5rem;margin-top:2.25rem;z-index:2;position:relative}.book-nav{width:52px;height:52px;border:2px solid #bde0f0;background:#fff;color:#4a90b8;border-radius:50%;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:1.1rem;font-weight:800;box-shadow:0 4px #bde0f0,0 8px 16px #4a90b82e;transition:transform .2s ease,box-shadow .2s ease}.book-nav:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px #bde0f0,0 12px 22px #4a90b83d}.book-nav:active:not(:disabled){transform:translateY(2px);box-shadow:0 2px #bde0f0,0 4px 8px #4a90b833}.book-nav:disabled{opacity:.35;cursor:not-allowed;box-shadow:0 4px #d0eaf8}.book-page-indicator{font-family:Comic Sans MS,Yuanti SC,cursive,sans-serif;font-size:1rem;font-weight:700;color:#4a90b8;min-width:120px;text-align:center;font-variant-numeric:tabular-nums;background:#fff;padding:.5em 1em;border-radius:999px;border:2px solid #bde0f0;box-shadow:0 3px #bde0f0}.gallery-lightbox{position:fixed;inset:0;z-index:300;display:grid;grid-template-columns:56px minmax(0,1fr) 56px;align-items:center;gap:16px;padding:32px;background:#3a5a73d9;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);animation:lbFade .25s ease}.gallery-lightbox[hidden]{display:none!important}@keyframes lbFade{0%{opacity:0}to{opacity:1}}.gallery-lightbox>div{display:flex;flex-direction:column;align-items:center;gap:1em;min-width:0}.gallery-lightbox img{max-width:min(920px,100%);max-height:74vh;display:block;border-radius:8px;box-shadow:0 24px 60px #00000080;animation:lbZoom .35s cubic-bezier(.2,.9,.3,1);object-fit:contain;border:6px solid #fff}@keyframes lbZoom{0%{transform:scale(.94);opacity:0}to{transform:scale(1);opacity:1}}.gallery-lightbox p{margin:0;color:#fff;text-align:center;font-family:Comic Sans MS,Yuanti SC,cursive,sans-serif;font-size:.95rem;opacity:.95;text-shadow:0 2px 6px rgba(0,0,0,.4)}.gallery-arrow{width:46px;height:46px;padding:0;display:inline-flex;align-items:center;justify-content:center;border:2px solid rgba(255,255,255,.35);background:#ffffff1f;color:#fff;border-radius:50%;cursor:pointer;font-size:1rem;font-weight:800;transition:background .25s ease,border-color .25s ease,transform .25s cubic-bezier(.2,.9,.3,1)}.gallery-arrow:hover{background:#ffffff3d;border-color:#fff9;transform:scale(1.08)}@media(max-width:820px){.gallery-book-page{padding:4rem .75rem 2rem}.book-back{top:1rem;left:1rem;padding:.4em .9em;font-size:.75rem}.book-header{margin-bottom:1.25rem}.book-title{font-size:1.4rem}.book-subtitle{font-size:.65rem;letter-spacing:.12em}.book{grid-template-columns:1fr;aspect-ratio:auto}.book:before{display:none}.book-page-right{display:none}.book-page-left{border-radius:6px;box-shadow:none;min-height:72vh}.page-inner{padding:1.25rem 1.25rem 2.5rem}.page-month{font-size:1.55rem}.page-grid{grid-template-columns:repeat(2,1fr);gap:.6rem}.book-nav{width:44px;height:44px;font-size:.95rem}.book-page-indicator{font-size:.85rem;min-width:100px;padding:.4em .8em}.gallery-lightbox{grid-template-columns:40px minmax(0,1fr) 40px;gap:8px;padding:16px}.gallery-arrow{width:36px;height:36px}}.gallery-index-page h1{font-family:Comic Sans MS,Yuanti SC,幼圆,Kaiti SC,cursive,sans-serif;font-size:clamp(2rem,5vw,3rem);font-weight:800;color:#4a90b8;letter-spacing:.02em;margin:0 0 .35rem;text-shadow:2px 2px 0 #fff,3px 3px 0 rgba(107,174,214,.3)}.gallery-index-page>h1+*{margin-top:0}.gallery-index-page h1:after{content:"";display:block;width:80px;height:4px;margin-top:.75rem;background:linear-gradient(to right,#4a90b8,#bde0f0);border-radius:4px}.gallery-album{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:2rem 1.75rem;margin-top:3rem;padding:0;background:none;border-radius:0}.gallery-album-card{position:relative;margin:0;padding:0;border-radius:8px;background:#fff;box-shadow:0 1px 2px #4a90b814,0 10px 24px #4a90b824;transform-origin:center bottom;transition:transform .45s cubic-bezier(.2,.9,.3,1),box-shadow .45s ease;will-change:transform}.gallery-album-card:before{content:"";position:absolute;top:0;bottom:0;left:0;width:10px;border-radius:8px 0 0 8px;background:linear-gradient(to bottom,#4a90b8,#6baed6,#4a90b8);box-shadow:inset -1px 0 #00000014;z-index:2}.gallery-album-card:after{content:"";position:absolute;top:12px;left:14px;width:4px;height:4px;border-radius:50%;background:#ffffffd9;box-shadow:0 14px #ffffffd9,0 28px #ffffffd9;z-index:3;pointer-events:none}.gallery-album-card:hover{transform:translateY(-8px) rotate(-.6deg);box-shadow:0 2px 4px #4a90b81a,0 22px 44px #4a90b838}.gallery-album-card a{display:block;text-decoration:none;color:inherit;padding-left:10px;border-radius:8px;overflow:hidden}.gallery-album-card .gallery-image{width:100%;aspect-ratio:4 / 3;height:auto;object-fit:cover;display:block;border-radius:0;opacity:0;animation:indexImgFade .5s ease forwards;transition:transform .6s cubic-bezier(.2,.9,.3,1)}@keyframes indexImgFade{to{opacity:1}}.gallery-album-card:hover .gallery-image{transform:scale(1.04)}.gallery-album-card .gallery-albumdesc{position:relative;padding:1.1rem 1.25rem 1.25rem;background:linear-gradient(rgba(107,174,214,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(107,174,214,.08) 1px,transparent 1px),#fbfdff;background-size:20px 20px;background-position:-1px -1px;border-top:1px dashed rgba(107,174,214,.35)}.gallery-album-card h2{font-family:Comic Sans MS,Yuanti SC,幼圆,Kaiti SC,cursive,sans-serif;font-size:1.15rem;font-weight:800;color:#4a90b8;margin:0 0 .35rem;letter-spacing:.01em;line-height:1.35;display:flex;align-items:center;gap:.35em}.gallery-album-card h2:before{content:"❋";font-size:.75em;color:#6baed6;flex-shrink:0;transition:transform .4s cubic-bezier(.2,.9,.3,1)}.gallery-album-card:hover h2:before{transform:rotate(180deg)}.gallery-album-card .small-muted{margin:0;font-size:.82rem;line-height:1.5;color:#6b8ea6;font-weight:500;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}@media(max-width:640px){.gallery-album{grid-template-columns:repeat(2,1fr);gap:1.25rem 1rem;margin-top:2rem}.gallery-album-card:before{width:7px}.gallery-album-card:after{left:10px;width:3px;height:3px;box-shadow:0 10px #ffffffd9,0 20px #ffffffd9}.gallery-album-card a{padding-left:7px}.gallery-album-card .gallery-albumdesc{padding:.85rem .85rem 1rem}.gallery-album-card h2{font-size:.95rem}.gallery-album-card .small-muted{font-size:.72rem;-webkit-line-clamp:2}}
