:root{color-scheme:light;--paper: #f6f0e7;--ink: #2f302a;--muted: #77776e;--accent: #8d5946;--serif: "Noto Serif SC", "Songti SC", "STSong", serif;--hand: "Kaiti SC", "STKaiti", "KaiTi", "DFKai-SB", var(--serif);font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0;color:var(--ink);background:radial-gradient(ellipse at 50% -15%,rgba(255,255,255,.92),transparent 55%),var(--paper)}button,a{font:inherit}button{color:inherit}.loading-mark{width:28px;height:28px;margin:45vh auto;border:1px solid rgba(141,89,70,.25);border-top-color:var(--accent);border-radius:50%;animation:spin .9s linear infinite}.album-shell{position:relative;display:flex;min-height:100svh;flex-direction:column;overflow:hidden}.album-shell:before,.album-shell:after{position:absolute;z-index:-1;width:300px;height:300px;border:1px solid rgba(141,89,70,.1);border-radius:50%;content:"";pointer-events:none}.album-shell:before{top:8%;left:-230px}.album-shell:after{right:-230px;bottom:7%}.topbar{display:flex;width:min(100% - 40px,1100px);min-height:76px;align-items:center;justify-content:space-between;margin:0 auto}.wordmark{color:var(--muted);font-family:var(--serif);font-size:13px;letter-spacing:.18em;text-decoration:none}.quiet-link{display:inline-flex;min-height:40px;align-items:center;justify-content:center;gap:8px;padding:0 13px;border:1px solid rgba(47,48,42,.15);border-radius:99px;background:#ffffff7a;color:var(--ink);font-size:12px;text-decoration:none;cursor:pointer;transition:background .2s,border-color .2s}.quiet-link:hover{border-color:#8d594666;background:#fff}.landing{display:grid;width:min(100% - 40px,980px);flex:1;grid-template-columns:minmax(0,1fr) minmax(280px,.78fr);align-items:center;gap:clamp(36px,8vw,112px);margin:0 auto;padding:28px 0 56px}.landing-copy{max-width:470px}.eyebrow{margin:0 0 17px;color:var(--accent);font-size:11px;letter-spacing:.24em}.landing h1{margin:0;font-family:var(--serif);font-weight:500;letter-spacing:.09em;font-size:clamp(36px,5vw,58px);line-height:1.4}.landing-intro{margin:22px 0 30px;color:var(--muted);font-family:var(--serif);font-size:15px;line-height:2.1}.album-links{display:flex;flex-wrap:wrap;gap:12px}.album-link{display:inline-flex;min-width:145px;min-height:48px;align-items:center;justify-content:space-between;gap:24px;padding:0 17px;border:1px solid rgba(141,89,70,.25);border-radius:3px;color:var(--accent);font-family:var(--serif);font-size:14px;text-decoration:none;transition:background .2s,color .2s}.album-link:hover{background:var(--accent);color:#fff}.landing-art{position:relative;width:min(100%,360px);justify-self:center;aspect-ratio:4 / 5;overflow:hidden;border:1px solid rgba(255,255,255,.9);background:linear-gradient(160deg,#d6c0a7,#b7a68f 45%,#777d6d);box-shadow:0 22px 70px #4c3d3026}.landing-art:before{position:absolute;top:15%;left:50%;width:56%;aspect-ratio:1;transform:translate(-50%);border-radius:50%;background:#f7e7cc73;content:""}.landing-art:after{position:absolute;right:-10%;bottom:-30%;left:-10%;height:75%;border-radius:50% 50% 0 0;background:linear-gradient(120deg,#35443ae0,#838b6fcc);content:""}.art-caption{position:absolute;z-index:1;right:20px;bottom:24px;left:20px;color:#ffffffe0;font-family:var(--serif);font-size:14px;letter-spacing:.16em;text-align:center}.footer-note{padding:0 20px 22px;color:#969187;font-size:10px;letter-spacing:.14em;text-align:center}.stage{position:fixed;inset:0;overflow:hidden;background:radial-gradient(ellipse at 50% -12%,rgba(255,255,255,.85),transparent 52%),linear-gradient(175deg,#f5edde,#efe4d0 58%,#e7d9c2);touch-action:none;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.stage-decor{position:absolute;inset:0;z-index:0;pointer-events:none}.decor{position:absolute}.decor-flower{top:8%;right:5%;width:62px;opacity:.95}.decor-daisy{right:-8px;bottom:3%;width:94px;opacity:.95}.decor-leaf-left{top:34%;left:-16px;width:56px;transform:rotate(14deg);opacity:.75}.decor-leaf-right{top:52%;right:-14px;width:52px;transform:scaleX(-1) rotate(12deg);opacity:.75}.page-stack{position:absolute;inset:0;z-index:1}.page{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;will-change:transform}.page.is-anim{transition:transform .58s cubic-bezier(.24,.72,.28,1)}.page-intro{gap:22px;padding:84px 22px 74px}.page-intro-body{display:flex;flex-direction:column;align-items:center;gap:22px}.page-intro .cal-frame{opacity:0;transform:translate3d(0,52px,0) rotate(-1.4deg) scale(.86);transition:transform .62s cubic-bezier(.22,.75,.25,1),opacity .5s ease}.page-intro.is-active .cal-frame{opacity:1;transform:translateZ(0) rotate(-1.4deg) scale(1)}.page-photo{padding:68px 18px 62px}.page-photo .photo-card{opacity:0;transform:translate3d(0,52px,0) scale(.86);transition:transform .62s cubic-bezier(.22,.75,.25,1),opacity .5s ease}.page-photo.from-left .photo-card{transform:translate3d(-58px,0,0) scale(.86)}.page-photo.is-active .photo-card{opacity:1;transform:translateZ(0) scale(1)}.cal-frame{position:relative;width:min(78vw,340px);padding:30px 22px 24px;border-radius:14px;background:linear-gradient(165deg,#fbf6ec,#f0e6d4);box-shadow:0 26px 60px #5a463238,inset 0 0 0 1px #ffffffa6}.cal-frame:before{position:absolute;z-index:-1;right:6%;bottom:-15px;left:6%;height:18px;border-radius:50%;background:#785f4133;filter:blur(6px);content:""}.cal-frame:after{position:absolute;z-index:-1;top:10px;right:-12px;bottom:-7px;width:16px;border-radius:8px;background:linear-gradient(200deg,#e9dabf,#c9ad86);transform:skewY(-8deg);content:""}.cal-rings{position:absolute;top:-19px;right:0;left:0;display:flex;justify-content:center;gap:32px}.cal-rings i{width:15px;height:34px;border:3.5px solid #c59a55;border-radius:8px;background:linear-gradient(#ffffff8c,#ffffff1a);box-shadow:inset 0 0 2px #78501473}.cal-photo{position:relative;aspect-ratio:3 / 4;overflow:hidden;border-radius:10px;outline:2px dashed rgba(150,120,90,.5);outline-offset:6px;background:#e3d8c6}.cal-photo img{display:block;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .5s ease}.cal-photo img.is-visible{opacity:1}.photo-empty{position:absolute;inset:0;display:grid;place-items:center;padding:20px;background:linear-gradient(145deg,#ded3c3,#a39d8a);color:#fff;font-family:var(--serif);font-size:13px;letter-spacing:.12em;text-align:center}.photo-empty[hidden]{display:none}.cal-hand{margin:20px 4px 0;color:#6a4c33;font-family:var(--hand);font-size:15px;line-height:1.95;letter-spacing:.14em}.hand-stroke{display:block;width:68%;height:8px;margin-top:3px;color:#d4695f}.cal-sub{margin:0;color:#a09481;font-size:11px;letter-spacing:.34em}.photo-card{position:relative;width:min(86vw,430px,55.5svh);aspect-ratio:3 / 4;overflow:hidden;border-radius:8px;background:#e8ddc9;box-shadow:0 22px 55px #58422d47;margin:0}.photo-card.is-wide{width:min(92vw,560px,calc(74svh * 4 / 3));aspect-ratio:4 / 3}.photo-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .45s ease}.photo-card img.is-visible{opacity:1}.fab{display:grid;place-items:center;width:44px;height:44px;border:0;border-radius:50%;background:#ffffffb8;box-shadow:0 6px 18px #5a46322e;color:#6b5b49;cursor:pointer;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);transition:transform .2s,background .2s}.fab:active{transform:scale(.94)}.fab:disabled{cursor:default;opacity:.5}.fab svg{width:19px;height:19px;fill:currentColor}.fab-home{position:absolute;z-index:4;top:max(14px,env(safe-area-inset-top));left:14px;text-decoration:none}.fab-group{position:absolute;z-index:4;top:max(14px,env(safe-area-inset-top));right:14px;display:flex;gap:10px}.music-toggle[aria-pressed=true]{color:var(--accent)}.music-toggle[aria-pressed=true] svg{animation:spin 5s linear infinite}.page-count{position:absolute;z-index:4;right:18px;bottom:max(16px,env(safe-area-inset-bottom));color:#5a4b3c8c;font-size:11px;letter-spacing:.18em;font-variant-numeric:tabular-nums}.swipe-hint{position:absolute;z-index:4;bottom:max(18px,env(safe-area-inset-bottom));left:50%;display:flex;flex-direction:column;align-items:center;gap:7px;color:#5a4b3c99;font-size:10px;letter-spacing:.3em;transform:translate(-50%);transition:opacity .35s ease}.swipe-hint i{width:11px;height:11px;border-top:2px solid currentColor;border-left:2px solid currentColor;transform:rotate(45deg);animation:hint-up 1.7s ease-in-out infinite}.swipe-hint.is-hidden{opacity:0}.admin-shell{display:flex;min-height:100svh;flex-direction:column;align-items:center;gap:22px;padding:0 20px 30px}.admin-card{width:min(100%,560px);padding:26px 24px 28px;border:1px solid rgba(141,89,70,.18);border-radius:6px;background:#fff9;box-shadow:0 14px 40px #5a463214}.admin-card h1{margin:0 0 6px;font-family:var(--serif);font-size:22px;font-weight:500;letter-spacing:.08em}.admin-tip{margin:4px 0 14px;color:var(--muted);font-size:12px;line-height:1.8}.admin-form{display:flex;flex-direction:column;gap:14px}.admin-form label{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--muted)}.admin-form input,.admin-form textarea{padding:10px 12px;border:1px solid rgba(47,48,42,.18);border-radius:4px;background:#fff;color:var(--ink);font:inherit;font-size:14px;resize:vertical}.admin-form input:focus,.admin-form textarea:focus{outline:2px solid rgba(141,89,70,.35);outline-offset:1px}.admin-form .start-button{align-self:flex-start}.start-button{display:inline-flex;min-height:44px;align-items:center;gap:16px;padding:0 20px;border:0;border-radius:2px;background:var(--accent);color:#fff;font-family:var(--serif);font-size:14px;letter-spacing:.08em;cursor:pointer;transition:background .2s,transform .2s}.start-button:hover{background:#704634}.start-button:active{transform:translateY(1px)}.start-button:disabled{background:#a99b8d;cursor:default}.admin-cover{display:flex;align-items:center;gap:16px;margin:12px 0 18px}.admin-cover img{width:96px;height:120px;border:1px solid rgba(141,89,70,.25);border-radius:4px;object-fit:cover;background:#e3d8c6}.upload-label{position:relative;overflow:hidden}.upload-label input{position:absolute;inset:0;opacity:0;cursor:pointer}.admin-login{max-width:420px}.error-message{width:min(100% - 40px,620px);margin:8vh auto;color:var(--muted);font-family:var(--serif);line-height:2;text-align:center}.toast{position:fixed;z-index:6;right:16px;bottom:max(24px,env(safe-area-inset-bottom));left:16px;width:fit-content;max-width:calc(100% - 32px);margin:0 auto;padding:12px 17px;border-radius:2px;background:#2f302aeb;color:#fff;font-size:12px;text-align:center;animation:fade-in .2s ease both}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade-in{0%{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}@keyframes hint-up{0%,to{transform:rotate(45deg) translate(0);opacity:.9}50%{transform:rotate(45deg) translate(-4px,-4px);opacity:.35}}@media(max-width:700px){.topbar{width:calc(100% - 32px);min-height:64px}.landing{width:calc(100% - 44px);grid-template-columns:1fr;gap:38px;padding:36px 0 42px}.landing-copy{text-align:center}.landing-intro{max-width:350px;margin-right:auto;margin-left:auto}.album-links{justify-content:center}.landing-art{width:min(74vw,290px)}}@media(max-width:380px){.wordmark{font-size:11px}.album-link{min-width:130px}.cal-hand{font-size:14px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
