:root{--pink: #ef6a9a;--pink-deep: #d8568a;--pink-soft: #fdedf3;--pink-line: rgba(239, 106, 154, .16);--bg: #fff8f8;--surface: #ffffff;--surface-2: #fffcfc;--ink: #3e3035;--ink-2: #6b5a61;--muted: #9a8a90;--line: #f2e4e7;--line-strong: #e9d5db;--danger: #d2475e;--success: #3f9d75;--radius-sm: 10px;--radius: 16px;--radius-lg: 24px;--shadow-sm: 0 4px 14px rgba(61, 32, 45, .05);--shadow: 0 12px 32px rgba(61, 32, 45, .08);--shadow-lg: 0 24px 60px rgba(61, 32, 45, .14);--font-sans: "Noto Sans SC", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", system-ui, -apple-system, sans-serif;--font-serif: "Noto Serif SC", "Songti SC", "Source Han Serif SC", Georgia, serif;--font-num: Inter, "SF Pro Display", system-ui, sans-serif;--nav-h: 80px}*,*:before,*:after{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4,p,figure{margin:0}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}img{display:block;max-width:100%}ul{margin:0;padding:0;list-style:none}input,textarea,select{font:inherit;color:inherit}::selection{background:#ef6a9a3d}.serif{font-family:var(--font-serif)}.num{font-family:var(--font-num);font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.ink-2{color:var(--ink-2)}.tiny{font-size:12px}.center{text-align:center}.container{width:min(1120px,100% - 48px);margin:0 auto}.page{min-height:100vh;display:flex;flex-direction:column}.page__body{flex:1;padding:56px 0 80px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:36px}.page-head__title{font-family:var(--font-serif);font-size:40px;font-weight:700;letter-spacing:.5px;line-height:1.25}.page-head__sub{margin-top:10px;color:var(--ink-2);font-size:14px}.row{display:flex;align-items:center;gap:12px}.row>.input,.row>.select{flex:1;min-width:0}.row-between{display:flex;align-items:center;justify-content:space-between;gap:12px}.stack{display:flex;flex-direction:column;gap:12px}.grow{flex:1}.topnav{position:sticky;top:0;z-index:60;height:var(--nav-h);background:#fff8f8f0;-webkit-backdrop-filter:saturate(180%) blur(14px);backdrop-filter:saturate(180%) blur(14px);border-bottom:1px solid rgba(239,106,154,.07)}.topnav__inner{width:min(1312px,100% - 64px);height:100%;margin:0 auto;display:flex;align-items:center;gap:16px}.brand{display:flex;align-items:center;gap:12px}.brand__badge{width:32px;height:32px;border-radius:50%;background:var(--pink);color:#fff;display:grid;place-items:center;font-family:var(--font-num);font-weight:700;font-size:18px;line-height:1}.brand__name{font-family:var(--font-serif);font-size:20px;font-weight:700;letter-spacing:.5px}.topnav__links{display:flex;align-items:center;gap:38px;margin:0 auto}.navlink{position:relative;font-size:14px;color:var(--muted);padding:6px 0;transition:color .18s}.navlink:hover{color:var(--pink-deep)}.navlink.is-active{color:var(--pink);font-weight:500}.navlink.is-active:after{content:"";position:absolute;left:50%;bottom:-4px;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:var(--pink)}.topnav__right{display:flex;align-items:center;gap:18px}.admin-entry{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 14px;border-radius:999px;background:var(--pink);color:#fff;font-size:13px;font-weight:500;transition:background .18s,transform .18s;white-space:nowrap}.admin-entry:hover{background:var(--pink-deep);transform:translateY(-1px)}.music-toggle{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--muted);background:none;border:none;padding:4px 0;transition:color .18s ease}.music-toggle:hover,.music-toggle.is-playing{color:var(--pink-deep)}.music-toggle__bars{display:inline-flex;align-items:flex-end;gap:2px;height:13px}.music-toggle__bars i{display:block;width:2.5px;height:3px;border-radius:2px;background:currentColor;opacity:.6}.music-toggle__bars.is-on i{opacity:1;animation:musicBar 1.05s ease-in-out infinite}.music-toggle__bars.is-on i:nth-child(2){animation-delay:.18s}.music-toggle__bars.is-on i:nth-child(3){animation-delay:.36s}@keyframes musicBar{0%,to{height:3px}50%{height:12px}}.topnav--overlay{position:fixed;left:0;right:0;top:0;background:linear-gradient(180deg,#140c1a4d,#140c1a14 70%,#140c1a00);-webkit-backdrop-filter:none;backdrop-filter:none;border-bottom-color:transparent;transition:background .3s ease,border-color .3s ease,backdrop-filter .3s ease}.topnav--overlay .brand__name{color:#fff;text-shadow:0 1px 3px rgba(30,12,26,.42),0 2px 18px rgba(30,12,26,.5)}.topnav--overlay .navlink{color:#ffffffeb;text-shadow:0 1px 3px rgba(30,12,26,.46),0 2px 16px rgba(30,12,26,.5)}.topnav--overlay:after{content:"";position:absolute;left:0;right:0;top:100%;height:64px;background:linear-gradient(180deg,#140c1a24,#140c1a00);pointer-events:none}.topnav--overlay .navlink:hover,.topnav--overlay .navlink.is-active{color:#fff}.topnav--overlay .music-toggle{color:#ffffffd1}.topnav--overlay .music-toggle:hover,.topnav--overlay .music-toggle.is-playing{color:#fff}.topnav--overlay.is-scrolled{background:#140c1a57;-webkit-backdrop-filter:saturate(150%) blur(16px);backdrop-filter:saturate(150%) blur(16px);border-bottom-color:#ffffff1a}.topnav--overlay.is-scrolled .brand__name{color:#fff}.topnav--overlay.is-scrolled .navlink{color:#fffc}.topnav--overlay.is-scrolled .navlink.is-active{color:#fff}.topnav--overlay.is-scrolled .music-toggle{color:#ffffffd6}.topnav--overlay.is-scrolled .music-toggle.is-playing{color:#fff}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 22px;border-radius:999px;border:1px solid transparent;font-size:14px;font-weight:500;white-space:nowrap;transition:background .18s,color .18s,border-color .18s,transform .18s,opacity .18s}.btn:active{transform:scale(.985)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn--primary{background:var(--pink);color:#fff;box-shadow:0 8px 20px #ef6a9a3d}.btn--primary:hover:not(:disabled){background:var(--pink-deep)}.btn--ghost{background:#fff;color:var(--pink-deep);border-color:#ef6a9a73}.btn--ghost:hover:not(:disabled){background:var(--pink-soft);border-color:#ef6a9ab3}.btn--plain{background:#fff;color:var(--ink-2);border-color:var(--line-strong)}.btn--plain:hover:not(:disabled){border-color:var(--pink-line);color:var(--pink-deep)}.btn--danger{background:#fff;color:var(--danger);border-color:#d2475e52}.btn--danger:hover:not(:disabled){background:#fdf2f4;border-color:#d2475e8c}.btn--sm{height:36px;padding:0 16px;font-size:13px}.btn--xs{height:30px;padding:0 12px;font-size:12px}.btn--block{width:100%}.icon-btn{width:32px;height:32px;border-radius:10px;border:1px solid var(--line);background:#fff;color:var(--ink-2);display:grid;place-items:center;transition:.18s}.icon-btn:hover{color:var(--pink-deep);border-color:var(--pink-line);background:var(--pink-soft)}.card{background:var(--surface);border-radius:var(--radius);border:1px solid rgba(239,106,154,.08);box-shadow:var(--shadow-sm)}.card--pad{padding:24px}.card--lg{border-radius:var(--radius-lg);box-shadow:var(--shadow)}.field{display:flex;flex-direction:column;gap:8px}.field__label{font-size:13px;color:var(--ink-2);font-weight:500}.field__hint{font-size:12px;color:var(--muted)}.input,.textarea,.select{width:100%;border-radius:12px;border:1px solid var(--line);background:var(--surface-2);padding:0 16px;height:48px;outline:none;transition:border-color .18s,box-shadow .18s,background .18s}.textarea{height:auto;padding:12px 16px;min-height:108px;resize:vertical;line-height:1.7}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5 11 1.5' stroke='%239a8a90' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 16px center;padding-right:40px;cursor:pointer}.input:focus,.textarea:focus,.select:focus{border-color:#ef6a9a8c;background:#fff;box-shadow:0 0 0 4px #ef6a9a17}.input::placeholder,.textarea::placeholder{color:#c2b4b9}.avatar{position:relative;border-radius:50%;overflow:hidden;background:var(--pink-soft);display:grid;place-items:center;color:var(--pink-deep);font-weight:600;flex:none;border:2px solid #fff;box-shadow:0 2px 10px #3d202d1a}.avatar img{width:100%;height:100%;object-fit:cover}.hero{position:relative;min-height:calc(100vh - var(--nav-h));display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 24px 32px;overflow:hidden;background:#2a2130 center/cover no-repeat}.hero__bg{position:absolute;top:0;right:0;bottom:0;left:0;background:center/cover no-repeat;transform:scale(1.02)}.hero__video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;transform:scale(1.02);pointer-events:none;background:#2a2130}.hero__veil{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(120% 80% at 50% 0%,rgba(24,16,28,.35),transparent 60%),linear-gradient(180deg,#18101c2e,#18101c0d 40%,#18101c4d)}.hero--video .hero__veil{background:linear-gradient(180deg,#140d189e,#140d1829 26%,#140d181f 56%,#140d1880),radial-gradient(90% 62% at 50% 46%,rgba(20,13,24,.3),transparent 72%)}.hero--video .couple__name{padding:3px 10px;border-radius:999px;background:#140c1a6b;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);text-shadow:none}.hero--video .hero__note{padding:5px 14px;border-radius:999px;color:#fffafcf0;background:#140c1a5c;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);text-shadow:none}.hero__inner{position:relative;display:flex;flex-direction:column;align-items:center;width:100%}.couple{display:flex;align-items:flex-start;gap:16px;margin-bottom:26px}.couple__person{display:flex;flex-direction:column;align-items:center;gap:10px;width:108px}.couple__name{font-size:12px;color:#fff;letter-spacing:.4px;text-shadow:0 1px 6px rgba(0,0,0,.35);max-width:108px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.couple__heart{margin-top:18px;color:#f2779f;filter:drop-shadow(0 2px 8px rgba(0,0,0,.3))}.hero-card{width:min(860px,100%);background:#fffbfcb3;backdrop-filter:blur(18px) saturate(135%);-webkit-backdrop-filter:blur(18px) saturate(135%);border-radius:26px;border:1px solid rgba(255,255,255,.62);box-shadow:0 24px 60px #140a1047;padding:22px 44px 20px;text-align:center}.hero-card__badge{font-size:12px;color:#a07180;letter-spacing:.3px}.hero-card__title{font-family:var(--font-serif);font-size:38px;font-weight:700;line-height:1.24;margin-top:8px;letter-spacing:1.5px}.hero-card__sub{margin-top:6px;color:var(--ink-2);font-size:14px}.hero-card__divider{height:1px;background:#f1e2e5;margin:16px 0 14px}.hero-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.hero-stat__value{font-family:var(--font-num);font-size:30px;font-weight:600;color:var(--pink);line-height:1.15;letter-spacing:-.5px}.hero-stat__label{margin-top:2px;font-size:12px;color:var(--ink-2)}.hero-stat{display:flex;flex-direction:column;align-items:center;padding:4px 0 6px;border-radius:12px;text-decoration:none;color:inherit;transition:background .18s ease}.hero-stat:hover{background:#ef6a9a12}.hero-stat:focus-visible{outline:2px solid rgba(239,106,154,.4);outline-offset:2px}.hero-card__source{margin:8px 0 0;font-size:10.5px;color:#bda8ae;letter-spacing:.2px}.hero-card__actions{display:flex;justify-content:center;gap:24px;margin-top:18px}.hero-card__quote{margin-top:16px;padding-top:14px;border-top:1px dashed #f3e4e8;font-family:var(--font-serif);font-size:12.5px;color:#9a8288}.hero__note{position:relative;margin-top:40px;font-size:12px;color:#f4e3e8;letter-spacing:.6px;text-shadow:0 1px 8px rgba(0,0,0,.4)}.footer{border-top:1px solid var(--line);background:var(--bg);padding:26px 0 30px;text-align:center}.footer__mark{font-family:var(--font-serif);font-size:14px;color:var(--ink-2);letter-spacing:1px}.footer__note{margin-top:8px;font-size:12px;color:var(--muted)}.footer__links{margin-top:10px;display:flex;justify-content:center;gap:10px;font-size:12px;color:var(--muted)}.footer__links a{color:var(--muted);text-decoration:none}.footer__links a:hover{color:var(--pink)}.tabbar{display:none}@media (max-width: 980px){.tabbar{display:block;position:fixed;left:0;right:0;bottom:0;z-index:60;padding:0 16px calc(10px + env(safe-area-inset-bottom,0px));pointer-events:none}.tabbar__pill{pointer-events:auto;display:flex;align-items:center;justify-content:space-between;height:64px;padding:0 10px;border-radius:32px;background:#fffffff0;border:1px solid rgba(239,106,154,.12);box-shadow:0 8px 26px #80335924;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.tabbar__item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;height:100%;color:#b7a4ae;text-decoration:none;font-size:10px;letter-spacing:.5px;transition:color .18s ease}.tabbar__item svg{display:block}.tabbar__item.is-active{color:var(--pink);font-weight:500}.tabbar--dark .tabbar__pill{background:#1c1222d1;border-color:#ffffff24;box-shadow:0 10px 30px #0006}.tabbar--dark .tabbar__item{color:#a794b3}.tabbar--dark .tabbar__item.is-active{color:#ff9ec2}.footer{padding-bottom:calc(114px + env(safe-area-inset-bottom,0px))}}.composer{padding:28px 32px}.composer__actions{display:flex;justify-content:flex-end;margin-top:20px}.message-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.message-card{padding:22px 24px;display:flex;flex-direction:column;gap:14px}.message-card__head{display:flex;align-items:center;gap:12px}.message-card__meta{display:flex;flex-direction:column;gap:2px;min-width:0}.message-card__name{font-size:14px;font-weight:500}.message-card__time{font-size:12px;color:var(--muted)}.message-card__text{color:var(--ink-2);line-height:1.85;white-space:pre-wrap;word-break:break-word}.pin-tag{margin-left:auto;font-size:11px;color:var(--pink-deep);background:var(--pink-soft);border-radius:999px;padding:3px 10px}.album-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:24px}.album-card{overflow:hidden;transition:transform .22s,box-shadow .22s}.album-card:hover{transform:translateY(-3px);box-shadow:var(--shadow)}.album-card__cover{aspect-ratio:16 / 11;background:linear-gradient(135deg,#fbe6ee,#f6dfe6);position:relative;overflow:hidden;display:grid;place-items:center;color:#d9aebe}.album-card__cover img{width:100%;height:100%;object-fit:cover}.album-card__body{padding:16px 18px 18px}.album-card__title{font-family:var(--font-serif);font-size:17px;font-weight:600}.album-card__meta{margin-top:6px;font-size:12px;color:var(--muted);display:flex;gap:10px}.photo-group{margin-bottom:44px}.photo-group__head{display:flex;align-items:baseline;gap:14px;padding:0 20px;height:48px;margin-bottom:16px;border-radius:12px;background:#fdedf3a6}.photo-group__date{font-family:var(--font-num);font-size:12px;color:var(--pink-deep);background:#fff;border-radius:999px;padding:3px 10px}.photo-group__title{font-size:14px;color:var(--ink-2)}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:18px}.photo{position:relative;aspect-ratio:13 / 9;border-radius:14px;overflow:hidden;background:#f7edf0;border:none;padding:0;display:block;width:100%}.photo img{width:100%;height:100%;object-fit:cover;transition:transform .35s}.photo:hover img{transform:scale(1.04)}.photo__caption{position:absolute;left:0;right:0;bottom:0;padding:22px 14px 10px;font-size:12px;color:#fff;text-align:left;background:linear-gradient(180deg,transparent,rgba(30,15,22,.72));white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:0;transition:opacity .22s}.photo:hover .photo__caption{opacity:1}.albums{position:relative;isolation:isolate;background:transparent;min-height:100vh;padding-bottom:90px}.page--album{background:#17101c}.album-scene{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;overflow:hidden;pointer-events:none}.album-scene__bg{position:absolute;top:0;right:0;bottom:0;left:0;background-image:url(/hero.png);background-size:cover;background-position:center 46%;transform:scale(1.04)}.album-scene__video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;transform:scale(1.04);filter:brightness(1.08) saturate(1.04) contrast(1.02)}.album-scene__veil{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(78% 62% at 50% 32%,#1e11200a,#160d1a85 92%),linear-gradient(180deg,#140c1a8f,#1a101e42 30%,#180e1c57 64%,#120a16b8)}.album-scene--video .album-scene__veil{background:radial-gradient(80% 64% at 50% 34%,#1e112000,#160d1a1f 96%),linear-gradient(180deg,#140c1a24,#1a101e05 30%,#180e1c0d 64%,#120a1666)}html[data-album-tone=light] .page--album{background:#fdf8fa}html[data-album-tone=light] .album-scene__veil{background:linear-gradient(180deg,#fffdfe00,#fffbfc08 58%,#fff9fb57)}html[data-album-tone=light] .album-scene__video{filter:none}html[data-album-tone=light] .topnav--overlay{background:linear-gradient(180deg,#fffdfebd,#fffdfe66 68%,#fffdfe00)}html[data-album-tone=light] .topnav--overlay:after{display:none}html[data-album-tone=light] .topnav--overlay .brand__name{color:var(--ink);text-shadow:none}html[data-album-tone=light] .topnav--overlay .navlink{color:#3a2c34b8;text-shadow:none}html[data-album-tone=light] .topnav--overlay .navlink:hover,html[data-album-tone=light] .topnav--overlay .navlink.is-active{color:var(--pink-deep)}html[data-album-tone=light] .topnav--overlay .music-toggle{color:var(--ink-2)}html[data-album-tone=light] .topnav--overlay .music-toggle:hover,html[data-album-tone=light] .topnav--overlay .music-toggle.is-playing{color:var(--pink-deep)}html[data-album-tone=light] .topnav--overlay.is-scrolled{background:#fffbfc99;border-bottom-color:#ef6a9a24}html[data-album-tone=light] .album-hero__inner{color:var(--ink);text-shadow:none}html[data-album-tone=light] .album-hero:before{content:"";position:absolute;top:-50px;right:0;bottom:-50px;left:0;pointer-events:none;background:radial-gradient(46% 54% at 50% 50%,#fffdfed6,#fffdfe80 62%,#fffdfe00)}html[data-album-tone=light] .album-hero__inner{position:relative;z-index:1}html[data-album-tone=light] .album-hero__title{color:var(--ink);text-shadow:none}html[data-album-tone=light] .album-hero__sub{color:#46323ccc;text-shadow:none}html[data-album-tone=light] .album-hero__stats{color:#46323cb3;text-shadow:none}html[data-album-tone=light] .album-hero__upload{background:#ffffffbd;border-color:#ef6a9a47;color:var(--pink-deep);box-shadow:0 8px 22px #be6e8c29}html[data-album-tone=light] .album-hero__upload:hover{background:#ffffffeb}html[data-album-tone=light] .album-hero__upload--ghost{background:#ffffff9e;border-color:#ef6a9a38;color:#46323cd1}html[data-album-tone=light] .album-hero__back{position:absolute;z-index:1;color:#3a2a32d1;text-shadow:0 1px 8px rgba(255,255,255,.75)}html[data-album-tone=light] .album-hero__back:hover{color:var(--pink-deep)}html[data-album-tone=light] .page--album .footer{border-top-color:#ef6a9a2e}html[data-album-tone=light] .page--album .footer__mark{color:#3a2a32e0}html[data-album-tone=light] .page--album .footer__note,html[data-album-tone=light] .page--album .footer__links a{color:#4a343e9e}html[data-album-tone=light] .albums .album-empty .empty{border-color:#ef6a9a33;background:#ffffffd6;-webkit-backdrop-filter:blur(10px) saturate(1.05);backdrop-filter:blur(10px) saturate(1.05);box-shadow:0 18px 44px #965a7329}html[data-album-tone=light] .albums .empty__title{color:var(--ink)}html[data-album-tone=light] .albums .empty__hint{color:#4a343ea8}html[data-album-tone=light] .albums .empty__icon{background:#ffffffd1;border-color:#ef6a9a3d;color:var(--pink-deep)}@media (max-width: 980px){html[data-album-tone=light] .tabbar--dark .tabbar__pill{background:#ffffffe6;border-color:#ef6a9a24;box-shadow:0 8px 26px #80335929}html[data-album-tone=light] .tabbar--dark .tabbar__item{color:#b7a4ae}html[data-album-tone=light] .tabbar--dark .tabbar__item.is-active{color:var(--pink)}}.album-hero{position:relative;z-index:1;min-height:396px;display:grid;place-items:center}.album-body{position:relative;z-index:1}.album-hero__inner{text-align:center;padding:calc(var(--nav-h) + 40px) 24px 26px;color:#fff;text-shadow:0 1px 3px rgba(22,12,26,.4),0 2px 26px rgba(30,12,26,.5)}.album-hero__title{font-family:var(--font-serif);font-size:42px;font-weight:700;letter-spacing:.16em;text-indent:.16em}.album-hero__sub{margin-top:12px;font-size:13.5px;letter-spacing:.1em;color:#fffffff5;text-shadow:0 1px 3px rgba(22,12,26,.5),0 2px 20px rgba(30,12,26,.5)}.album-hero__upload{position:absolute;top:calc(var(--nav-h) + 14px);right:max(28px,calc((100% - 1120px)/2));display:inline-flex;align-items:center;gap:7px;height:36px;padding:0 18px;border:1px solid rgba(255,255,255,.4);border-radius:999px;background:#ffffff29;color:#fff;font-size:13px;letter-spacing:.04em;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:background .2s ease,transform .2s ease}.album-hero__upload:hover{background:#ffffff47;transform:translateY(-1px)}.album-hero__actions{position:absolute;top:calc(var(--nav-h) + 14px);right:max(28px,calc((100% - 1120px)/2));display:flex;align-items:center;gap:10px}.album-hero__actions .album-hero__upload{position:static;top:auto;right:auto}.album-hero__upload--ghost{background:#14081038;border-color:#ffffff42;color:#ffffffeb}.album-hero__upload--ghost:hover{background:#be385ca8;border-color:#ffffff5c}.album-hero__stats{position:absolute;bottom:26px;left:50%;transform:translate(-50%);display:inline-flex;align-items:center;gap:12px;font-family:var(--font-num);font-size:11.5px;letter-spacing:.16em;color:#ffffffeb;text-shadow:0 1px 3px rgba(22,12,26,.42),0 2px 18px rgba(30,12,26,.45)}.album-hero__dot{width:3px;height:3px;border-radius:50%;background:currentColor;opacity:.6}.album-body{width:min(1120px,100% - 48px);margin:0 auto;padding-top:34px}.album-empty{padding:40px 0 10px}.album-group{margin-bottom:40px}.album-group__bar{display:flex;align-items:center;gap:14px;height:44px;padding:0 20px;margin-bottom:18px;border-radius:999px;background:linear-gradient(90deg,#fffffff0,#fff3f8cc);border:1px solid rgba(255,255,255,.66);box-shadow:0 12px 32px #0a060e47;-webkit-backdrop-filter:blur(16px) saturate(1.15);backdrop-filter:blur(16px) saturate(1.15)}.album-group__month{font-size:12.5px;font-weight:600;letter-spacing:.06em;color:var(--pink-deep);padding-right:14px;border-right:1px solid var(--pink-line)}.album-group__title{flex:1;min-width:0;font-size:13.5px;color:var(--ink);letter-spacing:.02em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.album-group__desc{font-style:normal;color:var(--muted)}.album-group__more{flex:none;font-size:12px;color:var(--muted);letter-spacing:.04em;transition:color .18s ease}.album-group__more:hover{color:var(--pink-deep)}.album-group__del{flex:none;display:inline-flex;align-items:center;gap:5px;height:28px;padding:0 11px;border-radius:999px;border:1px solid rgba(214,79,130,.24);background:#ffffffb8;color:var(--pink-deep);font-size:11.5px;letter-spacing:.02em;transition:background .18s ease,color .18s ease,border-color .18s ease}.album-group__del:hover{background:var(--danger);border-color:transparent;color:#fff}.album-group__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}.photo-tile{position:relative;display:block;padding:0;border:0;aspect-ratio:4 / 3;border-radius:12px;overflow:hidden;background:#f4ecef;box-shadow:0 10px 26px #3d202d1a;transition:transform .28s cubic-bezier(.2,.8,.3,1),box-shadow .28s ease}.photo-tile:hover{transform:translateY(-4px);box-shadow:0 18px 40px #3d202d2e}.photo-tile img{width:100%;height:100%;object-fit:cover;object-position:50% 32%;transition:transform .5s cubic-bezier(.2,.8,.3,1)}.photo-tile:hover img{transform:scale(1.05)}.photo-tile__cap{position:absolute;left:0;right:0;bottom:0;padding:22px 12px 9px;font-size:11.5px;letter-spacing:.02em;color:#fff;text-align:left;background:linear-gradient(180deg,#180c1400,#180c149e 72%);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.photo-tile--more{display:grid;place-content:center;justify-items:center;gap:4px;background:#fff9;border:1px dashed rgba(239,106,154,.42);box-shadow:none;color:var(--pink-deep)}.photo-tile--more:hover{background:#fdedf3e6}.photo-tile__morenum{font-size:22px;font-weight:600;letter-spacing:.02em}.photo-tile__morelabel{font-size:11.5px;color:var(--muted);letter-spacing:.1em}.album-hero__desc{margin-top:6px;font-size:12.5px;letter-spacing:.06em;color:#ffffffc7}.album-hero--slim{min-height:356px}.album-hero--slim .album-hero__inner{padding:calc(var(--nav-h) + 74px) 24px 38px}.album-hero--slim .album-hero__title{font-size:34px}.album-hero--slim .album-hero__upload{top:calc(var(--nav-h) + 14px)}.album-hero__back{position:absolute;top:calc(var(--nav-h) + 22px);left:max(28px,calc((100% - 1120px)/2));display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:#ffffffdb;letter-spacing:.04em;transition:color .18s ease,transform .18s ease}.album-hero__back:hover{color:#fff;transform:translate(-2px)}.photo-tile__doc{display:grid;place-items:center;gap:6px;height:100%;padding:12px;font-size:11.5px;color:#b98ea0;text-align:center}.photo-cell{position:relative;min-width:0}.photo-cell>.photo-tile{width:100%;height:100%}.photo-tile__del{position:absolute;top:8px;right:8px;z-index:2;background:#ffffffeb;color:var(--ink-2);box-shadow:0 4px 14px #1e0a142e;opacity:0;transition:opacity .2s ease,color .2s ease,background .2s ease}.photo-cell:hover .photo-tile__del,.photo-cell:focus-within .photo-tile__del,.photo-tile__del:focus-visible{opacity:1}.photo-tile__del:hover{color:#fff;background:var(--danger)}@media (hover: none){.photo-tile__del{opacity:1}}.album-more{display:grid;place-items:center;margin-top:8px}.album-more__btn{height:44px;padding:0 34px;border-radius:999px;border:1px solid rgba(255,255,255,.42);background:#ffffff24;color:#fff;font-size:13px;letter-spacing:.08em;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 12px 30px #0a060e42;transition:transform .18s ease,box-shadow .18s ease,background .18s ease}.album-more__btn:hover{background:#ffffff3d;transform:translateY(-1px);box-shadow:0 16px 36px #0a060e52}.albums .album-empty{padding:8px 0 12px}.albums .album-empty .empty{border-radius:22px;border:1px solid rgba(255,255,255,.16);background:#ffffff17;-webkit-backdrop-filter:blur(18px) saturate(1.1);backdrop-filter:blur(18px) saturate(1.1);box-shadow:0 20px 50px #0a060e4d}.albums .empty__title{color:#fff}.albums .empty__hint{color:#ffffffad}.albums .empty__icon{background:#ffffff29;color:#fff}.albums .card{border-radius:20px;border:1px solid rgba(255,255,255,.16);background:#ffffff17;-webkit-backdrop-filter:blur(18px) saturate(1.1);backdrop-filter:blur(18px) saturate(1.1);box-shadow:0 20px 50px #0a060e4d}.albums .skeleton{background:linear-gradient(90deg,#ffffff1a 25%,#fff3 37%,#ffffff1a 63%);background-size:400% 100%}.page--album .footer{position:relative;z-index:2;background:transparent;border-top-color:#ffffff1f}.page--album .footer__mark{color:#ffffffe6}.page--album .footer__note{color:#ffffff94}.page--scene .page__body{position:relative;z-index:1;padding-top:calc(var(--nav-h) + 36px)}.page--scene .page__body>.container{position:relative;z-index:1}.page--scene .page-head,.page--album .page-head{position:relative;z-index:3}.page--scene .page-head .btn,.page--scene .page-head .page-head__title{position:relative;z-index:1}.page--scene .btn--primary{background:linear-gradient(135deg,#f2789f,#e0568a);box-shadow:0 10px 24px #e0568a4d,inset 0 0 0 1px #ffffff59}.page--scene .btn--primary:hover:not(:disabled){background:linear-gradient(135deg,#e0568a,#cf4a7d)}.page--scene-wishes{background:#f3f1ea}.page--scene-stories{background:#fdf5f8}.page--scene-about{background:#fbf8f9}.scene{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;overflow:hidden;pointer-events:none}.scene__bg{position:absolute;top:0;right:0;bottom:0;left:0;background-repeat:no-repeat;background-size:cover;transform:scale(1.03)}.scene__video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center;transform:scale(1.03)}.scene__veil{position:absolute;top:0;right:0;bottom:0;left:0}.scene__bg{filter:saturate(1.06) contrast(1.03)}.scene--wishes .scene__bg{background-image:url(/scene-wishes.jpg);background-position:center 54%}.scene--wishes .scene__veil{background:radial-gradient(112% 66% at 50% 0%,#fffcf53d,#fffcf700 62%),linear-gradient(180deg,#fffdf80f,#fdf9f129)}.scene--stories .scene__bg{background-image:url(/scene-stories.jpg);background-position:center 58%}.scene--stories .scene__veil{background:radial-gradient(96% 64% at 50% 76%,#ffe2ee14,#fff7fa52 74%),linear-gradient(180deg,#fffafc47,#fff1f675)}.scene--about .scene__bg{background-image:url(/scene-about.jpg);background-position:center 30%}.scene--about .scene__veil{background:radial-gradient(80% 58% at 50% 18%,#ffffff1a,#fdf8fa42 82%),linear-gradient(180deg,#fffdfc14,#fdf4f738)}.page--scene .card{background:linear-gradient(180deg,#faf3f6f0,#f3eaefe6);backdrop-filter:blur(26px) saturate(155%);-webkit-backdrop-filter:blur(26px) saturate(155%);border:1px solid rgba(222,176,195,.5);box-shadow:0 26px 56px #3a1e2c38,0 4px 12px #3a1e2c17,inset 0 1px #fffffff2,inset 0 0 0 1px #ffffff80}.page--scene .progress-track{background:#ef6a9a24}.page--scene .card .muted,.page--scene .card .tiny{color:#4a343eb8}.page--scene .footer{position:relative;z-index:2;background:linear-gradient(180deg,#fffbfc00,#fff9fb57 46%,#fff6f985);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border-top-color:#3d202d14}.page--scene .page__body :is(h1,h2,h3){text-shadow:0 1px 3px rgba(255,255,255,.9),0 3px 20px rgba(255,255,255,.78)}.page--scene .page-head__sub{text-shadow:0 1px 12px rgba(255,255,255,.9)}.page--scene .page__body :is(.tiny,.muted){text-shadow:0 1px 2px rgba(255,255,255,.9),0 2px 12px rgba(255,255,255,.85)}.page--scene .footer :is(.tiny,.muted,a){text-shadow:0 1px 2px rgba(255,255,255,.9),0 2px 12px rgba(255,255,255,.8)}.topnav--overlay--light{background:linear-gradient(180deg,#fffcfdbd,#fffcfd6b);backdrop-filter:blur(10px) saturate(128%);-webkit-backdrop-filter:blur(10px) saturate(128%)}.topnav--overlay--light:after{display:none}.topnav--overlay--light .brand__name,.topnav--overlay--light.is-scrolled .brand__name{color:var(--ink);text-shadow:none}.topnav--overlay--light .navlink,.topnav--overlay--light.is-scrolled .navlink{color:#3e30359e;text-shadow:none}.topnav--overlay--light .navlink:hover,.topnav--overlay--light .navlink.is-active,.topnav--overlay--light.is-scrolled .navlink.is-active{color:var(--pink-deep);text-shadow:none}.topnav--overlay--light .music-toggle,.topnav--overlay--light.is-scrolled .music-toggle{color:var(--ink-2);text-shadow:none}.topnav--overlay--light .music-toggle:hover,.topnav--overlay--light .music-toggle.is-playing,.topnav--overlay--light.is-scrolled .music-toggle.is-playing{color:var(--pink-deep)}.topnav--overlay--light.is-scrolled{background:#fffbfcc2;backdrop-filter:saturate(150%) blur(18px);-webkit-backdrop-filter:saturate(150%) blur(18px);border-bottom-color:#ef6a9a24}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:400;background:#180e14f0;display:grid;place-items:center;padding:clamp(12px,3vw,40px);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.lightbox__figure{position:relative;display:grid;place-items:center;max-width:100%;max-height:82vh}.lightbox__thumb{max-width:100%;max-height:82vh;border-radius:10px;filter:blur(12px);transform:scale(.995);opacity:.75}.lightbox__img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;border-radius:10px;opacity:0;transition:opacity .28s ease}.lightbox__img.is-loaded{opacity:1}.lightbox__doc{display:grid;justify-items:center;gap:12px;padding:34px 28px;border-radius:14px;border:1px solid rgba(255,255,255,.16);background:#ffffff0f;color:#ffffffdb;max-width:min(420px,86vw)}.lightbox__docname{margin:0;font-size:14px;line-height:1.5;text-align:center;word-break:break-all}.lightbox__close{position:absolute;top:24px;right:28px;width:40px;height:40px;border-radius:50%;border:1px solid rgba(255,255,255,.28);background:#ffffff1a;color:#fff;display:grid;place-items:center}.lightbox__close:hover{background:#fff3}.lightbox__del{right:80px}.lightbox__del:hover{background:#d64f82b8;border-color:transparent}.lightbox__nav{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:46px;border-radius:50%;border:1px solid rgba(255,255,255,.24);background:#ffffff14;color:#fff;display:grid;place-items:center}.lightbox__nav:hover{background:#ffffff2e}.lightbox__nav--prev{left:28px}.lightbox__nav--next{right:28px}.lightbox__bar{position:absolute;bottom:28px;left:0;right:0;text-align:center;color:#ffffffd1;font-size:13px}@media (max-width: 640px){.lightbox{padding:8px}.lightbox__close{top:14px;right:14px;width:38px;height:38px}.lightbox__del{right:62px}.lightbox__nav{width:38px;height:38px}.lightbox__nav--prev{left:6px}.lightbox__nav--next{right:6px}.lightbox__figure,.lightbox__thumb{max-height:76vh}.lightbox__bar{bottom:16px;font-size:12px}}.progress-card{padding:26px 28px 24px;margin-bottom:26px}.progress-card__head{display:flex;align-items:center;justify-content:space-between}.progress-card__title{font-family:var(--font-serif);font-size:17px;font-weight:600}.progress-card__count{font-size:14px;color:var(--pink-deep)}.progress-track{height:10px;border-radius:999px;background:#f7e7ec;overflow:hidden;margin:16px 0 12px}.progress-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,#f79bbd,var(--pink));transition:width .45s ease}.wish-list{display:flex;flex-direction:column;gap:12px}.wish{display:flex;align-items:center;gap:18px;padding:22px 24px}.wish__check{width:26px;height:26px;border-radius:8px;border:1.5px solid var(--line-strong);background:#fff;display:grid;place-items:center;flex:none;transition:.18s}.wish__check:hover{border-color:var(--pink)}.wish__check.is-done{background:var(--pink);border-color:var(--pink);color:#fff}.wish__body{flex:1;min-width:0}.wish__title{font-size:15px;font-weight:500}.wish__title.is-done{color:var(--muted);text-decoration:line-through;text-decoration-thickness:1px}.wish__note{margin-top:4px;font-size:12px;color:var(--muted)}.wish__status{font-size:12px;padding:4px 12px;border-radius:999px;white-space:nowrap}.wish__status--done{color:#3f9d75;background:#edf8f2}.wish__status--doing{color:var(--pink-deep);background:var(--pink-soft)}.wish__status--todo{color:var(--muted);background:#f6f1f2}.timeline{position:relative;padding-left:40px}.timeline:before{content:"";position:absolute;left:10px;top:12px;bottom:12px;width:2px;background:linear-gradient(180deg,#ef6a9a59,#ef6a9a0d)}.timeline__item{position:relative;margin-bottom:28px}.timeline__dot{position:absolute;left:-40px;top:34px;width:22px;height:22px;border-radius:50%;background:#fff;border:2px solid var(--pink);box-shadow:0 0 0 5px #fff8f8}.story{display:flex;gap:24px;padding:0;overflow:hidden}.story__cover{width:240px;flex:none;background:linear-gradient(135deg,#fbe6ee,#f6dfe6);display:grid;place-items:center;color:#d9aebe;overflow:hidden}.story__cover img{width:100%;height:100%;object-fit:cover}.story__body{padding:24px 26px 24px 0;flex:1;min-width:0}.story__date{font-size:12px;color:var(--pink-deep);letter-spacing:.4px}.story__title{font-family:var(--font-serif);font-size:20px;font-weight:600;margin-top:8px}.story__excerpt{margin-top:10px;color:var(--ink-2);line-height:1.85}.story__content{margin-top:12px;color:var(--ink-2);line-height:1.95;white-space:pre-wrap}.story__content.is-collapsed{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.story__excerpt+.story__content.is-collapsed{margin-top:8px}.story-timeline{position:relative;padding:6px 0 2px}.story-timeline:before{content:"";position:absolute;left:12px;top:46px;bottom:34px;width:1.5px;background:linear-gradient(180deg,#ef6a9a6b,#ef6a9a29 55%,#ef6a9a00)}.story-item{position:relative;display:grid;grid-template-columns:26px 76px minmax(0,1fr);column-gap:18px;margin-bottom:22px}.story-item:last-child{margin-bottom:0}.story-item__rail{position:relative}.story-item__dot{position:absolute;top:30px;left:5px;width:14px;height:14px;border-radius:50%;background:#fff8f8;border:2px solid rgba(239,106,154,.4)}.story-item__dot.is-latest{border-color:var(--pink);background:var(--pink);box-shadow:0 0 0 5px #ef6a9a21}.story-item__date{display:flex;flex-direction:column;align-items:flex-end;gap:1px;padding-top:24px;text-align:right}.story-item__day{font-size:25px;font-weight:600;line-height:1.1;color:var(--ink);letter-spacing:-.02em}.story-item__ym{font-size:11px;letter-spacing:.08em;color:var(--muted)}.story-card{display:flex;align-items:stretch;min-height:176px;overflow:hidden;border-radius:18px;background:var(--surface);box-shadow:var(--shadow-sm);border:1px solid rgba(242,228,231,.9);transition:transform .26s cubic-bezier(.2,.8,.3,1),box-shadow .26s ease}.story-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.story-card.is-latest{border-color:#ef6a9a42;box-shadow:0 14px 34px #3d202d17}.story-card__plate{width:220px;flex:none;align-self:stretch;display:grid;place-content:center;justify-items:center;gap:9px;overflow:hidden;background:linear-gradient(150deg,#fdeef4,#f8e6ec 55%,#fbe9e9)}.story-card__plate img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.2,.8,.3,1)}.story-card:hover .story-card__plate img{transform:scale(1.04)}.story-card__chapter{font-family:var(--font-serif);font-size:34px;font-weight:600;line-height:1;letter-spacing:.04em;color:#ce447a94}.story-card__chapterline{width:30px;height:1px;background:#d8568a42}.story-card__body{flex:1;min-width:0;padding:24px 28px 20px;display:flex;flex-direction:column}.story-card__meta{display:flex;align-items:center;gap:8px;font-family:var(--font-num);font-size:11.5px;letter-spacing:.04em;color:var(--muted)}.story-card__date{color:var(--pink-deep)}.story-card__sep{width:3px;height:3px;border-radius:50%;background:currentColor;opacity:.55}.story-card__title{margin-top:8px;font-family:var(--font-serif);font-size:20px;font-weight:700;line-height:1.5;letter-spacing:.01em;color:var(--ink)}.story-card__excerpt{margin-top:8px;max-width:62ch;font-size:13.5px;line-height:1.85;color:var(--ink-2)}.story-card__content{margin-top:12px;padding-top:12px;border-top:1px dashed var(--line);max-width:62ch;font-size:14px;line-height:2;color:var(--ink-2);white-space:pre-wrap;animation:storyFade .4s ease both}@keyframes storyFade{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.story-card__content.is-short{margin-top:8px;padding-top:0;border-top:none}.story-card__foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:auto;padding-top:14px}.story-card__foot:empty{display:none}.story-card__toggle{display:inline-flex;align-items:center;gap:5px;padding:0;border:0;background:none;font-size:12.5px;letter-spacing:.04em;color:var(--pink-deep)}.story-card__toggle svg{transition:transform .24s ease}.story-card__toggle.is-open svg{transform:rotate(180deg)}.story-card__toggle:hover{color:var(--pink)}.story-card__del{color:var(--muted);opacity:0;transition:opacity .2s ease,color .2s ease}.story-card:hover .story-card__del,.story-card__del:focus-visible{opacity:1}.story-card__del:hover{color:var(--danger)}.about-hero{padding:40px 44px;text-align:center;margin-bottom:32px}.about-hero__title{font-family:var(--font-serif);font-size:32px;font-weight:700}.about-hero__text{margin-top:16px;color:var(--ink-2);line-height:2;max-width:640px;margin-left:auto;margin-right:auto}.letter{padding:26px 28px;margin-bottom:16px}.letter__head{display:flex;align-items:center;gap:12px}.letter__title{font-family:var(--font-serif);font-size:18px;font-weight:600}.letter__body{margin-top:14px;color:var(--ink-2);line-height:2;white-space:pre-wrap}.letter__body.is-collapsed{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:180;background:#301a266b;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:grid;place-items:center;padding:24px;animation:fade .18s ease}.modal{width:min(560px,100%);max-height:88vh;overflow:auto;background:#fff;border-radius:22px;box-shadow:var(--shadow-lg);padding:28px 30px 26px;animation:pop .2s ease}.modal--wide{width:min(760px,100%)}.modal__head{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.modal__title{font-family:var(--font-serif);font-size:20px;font-weight:600}.modal__body{display:flex;flex-direction:column;gap:18px}.modal__foot{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}.toast-wrap{position:fixed;top:96px;left:50%;transform:translate(-50%);z-index:300;display:flex;flex-direction:column;gap:10px;align-items:center;pointer-events:none}.toast{background:#3e3035f0;color:#fff;font-size:13px;padding:10px 20px;border-radius:999px;box-shadow:var(--shadow);animation:pop .2s ease;max-width:80vw}.toast--error{background:#be3e54f5}.toast--success{background:#308464f5}.empty{padding:56px 24px;text-align:center;color:var(--muted)}.empty__icon{width:56px;height:56px;border-radius:50%;background:var(--pink-soft);color:var(--pink);display:grid;place-items:center;margin:0 auto 16px}.empty__title{color:var(--ink-2);font-size:15px}.empty__hint{margin-top:6px;font-size:13px}.skeleton{background:linear-gradient(90deg,#f8eef1 25%,#fdf7f8 37%,#f8eef1 63%);background-size:400% 100%;animation:shimmer 1.3s ease infinite;border-radius:12px}.panel-skeleton{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:56px 24px;min-height:238px}.panel-skeleton .skeleton{background:linear-gradient(90deg,#f3dbe4 25%,#fbf0f3 37%,#f3dbe4 63%);background-size:400% 100%}.panel-skeleton__dot{width:52px;height:52px;border-radius:50%}.panel-skeleton__bar{height:12px;border-radius:999px}.panel-skeleton__bar--soft{opacity:.6}@media (prefers-reduced-motion: reduce){.panel-skeleton__bar,.panel-skeleton__dot{animation:none}}@keyframes shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}.spinner{width:18px;height:18px;border-radius:50%;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;animation:spin .7s linear infinite}.spinner--ink{border-color:#ef6a9a40;border-top-color:var(--pink)}@keyframes spin{to{transform:rotate(360deg)}}.dropzone{border:1.5px dashed var(--line-strong);border-radius:16px;padding:30px;text-align:center;color:var(--muted);background:var(--surface-2);transition:.2s;cursor:pointer}.dropzone:hover,.dropzone.is-over{border-color:var(--pink);background:var(--pink-soft);color:var(--pink-deep)}.upload-item{display:flex;align-items:center;gap:12px;padding:10px 0}.upload-item__name{flex:1;min-width:0;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-item__bar{height:4px;border-radius:999px;background:#f6e7ec;overflow:hidden;margin-top:6px}.upload-item__fill{height:100%;background:var(--pink);transition:width .2s}.admin{min-height:100vh;display:flex;flex-direction:column;background:#fff7f7}.admin__bar{height:72px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 32px;gap:16px;position:sticky;top:0;z-index:50}.admin__bar-right{margin-left:auto;display:flex;align-items:center;gap:18px}.back-front{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 14px 0 12px;border-radius:999px;background:#fdeef4;color:var(--pink-deep);font-size:13px;font-weight:500}.back-front:hover{background:#fbe1ec}.admin__body{flex:1;display:flex;align-items:flex-start;gap:24px;padding:24px 32px 40px;width:100%;max-width:1440px;margin:0 auto}.side{width:224px;flex:none;background:#fff;border-radius:16px;border:1px solid var(--line);padding:18px 14px 14px;position:sticky;top:96px;display:flex;flex-direction:column;gap:4px}.side__label{font-size:11px;color:var(--muted);padding:0 10px 8px;letter-spacing:.6px}.side__item{display:flex;align-items:center;gap:10px;height:38px;padding:0 10px;border-radius:10px;color:var(--ink-2);font-size:13px;transition:.16s}.side__item:hover{background:#fdf2f6;color:var(--pink-deep)}.side__item.is-active{background:#fdeef4;color:var(--pink-deep);font-weight:500}.side__storage{margin-top:14px;background:#fdf0f5;border-radius:12px;padding:14px}.side__storage-title{font-size:12px;color:var(--ink-2)}.side__storage-value{font-family:var(--font-num);font-size:14px;color:var(--pink-deep);margin-top:4px}.side__storage-track{height:6px;border-radius:999px;background:#f8dfe8;overflow:hidden;margin-top:10px}.side__storage-fill{height:100%;background:var(--pink)}.side__storage-note{margin-top:8px;font-size:11px;color:var(--muted)}.admin-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:22px}.admin-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.admin-head__title{font-family:var(--font-serif);font-size:28px;font-weight:700}.admin-head__sub{margin-top:6px;font-size:13px;color:var(--muted)}.admin-section{padding:24px 26px}.admin-section__title{font-size:13px;font-weight:600;color:var(--ink-2);letter-spacing:.4px;margin-bottom:18px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.form-grid--full{grid-template-columns:1fr}.col-span-2{grid-column:span 2}.table{width:100%;border-collapse:collapse}.table th{text-align:left;font-size:12px;font-weight:500;color:var(--muted);padding:0 12px 10px;border-bottom:1px solid var(--line);white-space:nowrap}.table td{padding:14px 12px;border-bottom:1px solid #faf2f4;font-size:13px;color:var(--ink-2);vertical-align:middle}.table tr:last-child td{border-bottom:none}.table__strong{color:var(--ink);font-weight:500}.profile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px}.profile{padding:26px;display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center}.profile__name{font-family:var(--font-serif);font-size:18px;font-weight:600}.profile__role{font-size:12px;color:var(--muted)}.avatar-upload{position:relative;cursor:pointer}.avatar-upload__mask{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:#301a2673;color:#fff;display:grid;place-items:center;opacity:0;transition:.18s;font-size:11px}.avatar-upload:hover .avatar-upload__mask{opacity:1}.cover-preview{aspect-ratio:16 / 7;border-radius:16px;overflow:hidden;background:linear-gradient(135deg,#fbe6ee,#f6dfe6);display:grid;place-items:center;color:#d9aebe;position:relative}.cover-preview img{width:100%;height:100%;object-fit:cover}.cover-video{border-radius:16px;overflow:hidden;background:#241a29;border:1px solid var(--line)}.cover-video video{display:block;width:100%;aspect-ratio:16 / 7;object-fit:cover;background:#241a29}.cover-video__meta{display:flex;align-items:center;gap:10px;padding:10px 14px;background:#fdf7f9;border-top:1px solid var(--line)}.cover-video__badge{flex:none;padding:3px 9px;border-radius:999px;font-size:11.5px;font-weight:600;color:#fff;background:linear-gradient(135deg,var(--pink),var(--pink-deep));letter-spacing:.3px}.cover-video--empty{aspect-ratio:16 / 7;display:grid;place-items:center;text-align:center;background:repeating-linear-gradient(-45deg,#fdf3f7,#fdf3f7 12px,#fbeaf1 12px,#fbeaf1 24px);border:1px dashed #f0cbda}.cover-video__empty-title{font-size:14px;color:var(--ink);margin-bottom:6px}.field__error{margin-top:12px;font-size:12.5px;color:#c0392b;background:#fdeeec;border:1px solid #f6d3ce;border-radius:10px;padding:9px 12px}.scene-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.scene-card{overflow:hidden;display:flex;flex-direction:column}.scene-card__preview{position:relative;aspect-ratio:16 / 10;overflow:hidden;background:linear-gradient(135deg,#fbe6ee,#f6dfe6)}.scene-card__preview img,.scene-card__preview video{display:block;width:100%;height:100%;object-fit:cover}.scene-card__badge{position:absolute;left:10px;top:10px;padding:3px 10px;border-radius:999px;font-size:11px;color:var(--ink-2);background:#ffffffe0;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.scene-card__badge.is-custom{color:#fff;background:var(--pink)}.scene-card__body{flex:1;display:flex;flex-direction:column;gap:8px;padding:16px 16px 18px}.scene-card__title{display:flex;align-items:baseline;gap:8px;font-size:15px;font-weight:600;color:var(--ink)}.scene-card__path{padding:2px 6px;border-radius:6px;background:var(--pink-soft);color:var(--muted);font-family:var(--font-num);font-size:11px}.scene-card__hint{flex:1;margin:0;font-size:12.5px;line-height:1.75;color:var(--muted)}.scene-card__actions{display:flex;gap:8px;margin-top:4px}@media (max-width: 980px){.scene-grid{grid-template-columns:1fr}}.lock{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(90% 70% at 50% 0%,#fdeef4,var(--bg) 65%)}.lock__card{width:min(420px,100%);padding:38px 36px 34px;text-align:center}.lock__icon{width:60px;height:60px;border-radius:50%;background:var(--pink-soft);color:var(--pink);display:grid;place-items:center;margin:0 auto 18px}.lock__title{font-family:var(--font-serif);font-size:22px;font-weight:700}.lock__sub{margin-top:8px;color:var(--muted);font-size:13px;line-height:1.8}.pin-input{height:54px;text-align:center;letter-spacing:10px;font-family:var(--font-num);font-size:22px;padding-left:20px}.page-loading{min-height:60vh;display:grid;place-items:center;color:var(--muted);font-size:13px}.error-box{padding:16px 18px;border-radius:12px;background:#fdf3f5;border:1px solid rgba(210,71,94,.18);color:#b4455c;font-size:13px;line-height:1.7}.admin-section__hint{margin:-6px 0 16px;font-size:12.5px;line-height:1.8;color:var(--muted)}.checkbox-line{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink-2);cursor:pointer;-webkit-user-select:none;user-select:none}.checkbox-line input{width:15px;height:15px;accent-color:var(--pink);cursor:pointer}.spinner--light{border-color:#fff6;border-top-color:#fff}.upload-target{margin-bottom:16px;padding:14px 16px;border-radius:14px;background:#fdf7f9;border:1px solid var(--line)}.upload-target__label{margin-bottom:8px;font-size:12px;color:var(--muted);letter-spacing:.04em}.upload-target__error{margin-top:8px;font-size:12px;color:var(--danger)}.music-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.music-head>div{min-width:0}.music-head>.btn{flex:none}.music-empty{padding:22px 18px;border-radius:14px;border:1px dashed var(--line);background:#fdfafb;font-size:13px;line-height:1.8;color:var(--muted);text-align:center}.music-list{display:flex;flex-direction:column;gap:8px;margin:0;padding:0;list-style:none}.music-track{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:14px;border:1px solid var(--line);background:#fff;transition:border-color .2s ease,background .2s ease}.music-track:hover{border-color:#f3cddb}.music-track.is-active{background:#fdf2f6;border-color:#f5c7d8}.music-track__no{flex:none;width:22px;font-family:var(--font-num, Inter, sans-serif);font-size:11.5px;letter-spacing:.06em;color:var(--muted)}.music-track__meta{flex:1;min-width:0}.music-track__title{font-size:13.5px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.music-track__sub{margin-top:3px;font-size:11.5px;color:var(--muted)}.music-track__badge{flex:none;padding:2px 9px;border-radius:999px;background:var(--pink);color:#fff;font-size:11px;letter-spacing:.04em}.music-track__actions{display:flex;align-items:center;gap:6px;flex:none}.music-foot{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}@media (max-width: 720px){.music-head{flex-direction:column;align-items:stretch}.music-track{flex-wrap:wrap}.music-track__meta{flex:1 1 auto}.music-track__actions{width:100%;justify-content:flex-end;padding-top:2px}}.gate{position:relative;min-height:100vh;display:grid;place-items:center;padding:32px 24px 64px;overflow:hidden;background:#1b1720}.gate__bg{position:absolute;top:0;right:0;bottom:0;left:0;background-image:url(/hero.png);background-size:cover;background-position:center 38%;transform:scale(1.04);animation:gateDrift 26s ease-in-out infinite alternate}@keyframes gateDrift{0%{transform:scale(1.04) translateZ(0)}to{transform:scale(1.12) translate3d(0,-12px,0)}}.gate__veil{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(74% 62% at 50% 44%,#1e142438,#140e18c7 80%),linear-gradient(180deg,#120c1657,#100b14d1);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.gate__card{position:relative;z-index:2;width:min(430px,100%);padding:40px 40px 30px;border-radius:26px;background:#fffdfdf7;border:1px solid rgba(255,255,255,.7);box-shadow:0 34px 80px #0c06106b,0 0 0 1px #ffffff59 inset;-webkit-backdrop-filter:blur(18px) saturate(1.05);backdrop-filter:blur(18px) saturate(1.05);text-align:center;animation:gateRise .6s cubic-bezier(.22,.9,.3,1) both}.gate__card--loading{display:grid;place-items:center;padding:60px}@keyframes gateRise{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.gate__brand{display:inline-flex;align-items:center;gap:8px;margin-bottom:22px}.gate__badge{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(140deg,#f78bab,var(--pink));color:#fff;font-family:var(--font-num);font-size:15px;line-height:1}.gate__brandname{font-family:var(--font-serif);font-size:15px;letter-spacing:.04em;color:var(--ink)}.gate__icon{width:54px;height:54px;margin:0 auto 16px;border-radius:50%;display:grid;place-items:center;color:var(--pink);background:var(--pink-soft);box-shadow:inset 0 0 0 1px #ef6a9a24}.gate__title{font-family:var(--font-serif);font-size:24px;font-weight:700;letter-spacing:.02em;color:var(--ink)}.gate__sub{margin-top:8px;color:var(--muted);font-size:13px;line-height:1.8}.gate__form{margin-top:26px;text-align:left}.gate__input{position:relative}.gate__input input{width:100%;height:50px;padding:0 16px;border-radius:14px;border:1px solid var(--line-strong);background:#fff;font-size:15px;letter-spacing:.08em;outline:none;transition:border-color .2s ease,box-shadow .2s ease}.gate__input input::placeholder{letter-spacing:0;color:#c3b3b9}.gate__input input:focus{border-color:#ef6a9ab3;box-shadow:0 0 0 4px #ef6a9a1f}.gate__input.is-error input{border-color:#d2475e99;box-shadow:0 0 0 4px #d2475e1a}.gate__error{margin-top:10px;font-size:12.5px;color:var(--danger)}.gate__remember{display:flex;align-items:center;gap:8px;margin-top:14px;font-size:12.5px;color:var(--ink-2);cursor:pointer;-webkit-user-select:none;user-select:none}.gate__remember input{width:15px;height:15px;accent-color:var(--pink);cursor:pointer}.gate__submit{width:100%;height:50px;margin-top:18px;border:0;border-radius:14px;display:inline-flex;align-items:center;justify-content:center;gap:8px;background:linear-gradient(135deg,#f783a8,var(--pink));color:#fff;font-size:15px;letter-spacing:.06em;box-shadow:0 14px 30px #ef6a9a57;transition:transform .18s ease,box-shadow .18s ease,opacity .18s ease}.gate__submit:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 18px 36px #ef6a9a66}.gate__submit:disabled{opacity:.72;cursor:default}.gate__foot{margin-top:20px;padding-top:16px;border-top:1px dashed var(--line);text-align:center}.gate__help-toggle{border:0;background:none;color:var(--muted);font-size:12.5px;text-decoration:underline;text-decoration-color:#9a8a9080;text-underline-offset:4px}.gate__help{margin-top:10px;text-align:left;font-size:12px;line-height:1.9;color:var(--muted)}.gate__help code{display:block;margin-top:8px;padding:10px 12px;border-radius:10px;background:#fbf3f5;color:#a2596f;font-size:11px;line-height:1.7;word-break:break-all}.gate__note{position:relative;z-index:2;margin-top:26px;color:#ffffff80;font-size:12px;letter-spacing:.14em}@media (max-width: 1180px){.topnav__links{gap:24px}}@media (max-width: 980px){.topnav__links{display:none}.topnav__right{margin-left:auto}.hero{padding-bottom:96px}.hero-card{padding:26px 26px 22px}.hero-card__title{font-size:34px;letter-spacing:1px}.hero-stat__value{font-size:26px}.message-grid{grid-template-columns:1fr}.admin__body{flex-direction:column;padding:16px}.side{width:100%;position:static;flex-direction:row;overflow-x:auto;gap:6px}.side__label,.side__storage{display:none}.side__item{white-space:nowrap}.form-grid{grid-template-columns:1fr}.col-span-2{grid-column:span 1}.story{flex-direction:column}.story__cover{width:100%;aspect-ratio:16 / 9}.story__body{padding:0 22px 22px}}@media (max-width: 640px){.container{width:calc(100% - 32px)}.page-head{flex-direction:column;align-items:flex-start}.page-head__title{font-size:30px}.hero-stats{grid-template-columns:repeat(3,1fr);gap:4px}.hero-stat__value{font-size:24px}.hero-stat__label{font-size:11px}.hero-card__actions{flex-direction:column;gap:12px}.hero-card__actions .btn{width:100%}.photo-grid,.album-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.admin__bar{padding:0 16px}.admin__bar-right .admin-user{display:none}}@media (max-width: 980px){.album-hero{min-height:290px}.album-hero__title{font-size:34px}.album-group__grid{grid-template-columns:repeat(3,1fr);gap:16px}.story-item{grid-template-columns:24px minmax(0,1fr);column-gap:14px}.story-item__date{display:none}.story-card{min-height:152px}.story-card__plate{width:190px}.story-card__body{padding:20px 22px 18px}}@media (max-width: 640px){.album-hero{min-height:320px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:calc(var(--nav-h) + 16px) 0 26px}.album-hero__inner{padding:0 22px}.album-hero__title{font-size:26px;letter-spacing:.1em}.album-hero__sub{font-size:12px}.album-hero__upload,.album-hero__actions .album-hero__upload{position:relative;z-index:1;top:auto;right:auto;margin-top:20px;height:44px;padding:0 22px;font-size:13.5px;border-radius:999px;background:var(--pink);border-color:#ffffff7a;color:#fff;box-shadow:0 10px 24px #96284e52,0 1px 2px #3c14282e;backdrop-filter:none;-webkit-backdrop-filter:none}.album-hero__upload:hover{background:var(--pink-deep);transform:none}.album-hero__actions{position:relative;z-index:1;top:auto;right:auto;margin-top:18px;gap:10px;justify-content:center}.album-hero__actions .album-hero__upload{margin-top:0}.album-hero__actions .album-hero__upload--ghost{height:40px;padding:0 16px;font-size:12.5px;background:#14081042;border-color:#ffffff47;color:#ffffffeb;box-shadow:none;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.album-hero__actions .album-hero__upload--ghost:hover{background:#be385ca8}html[data-album-tone=light] .album-hero__upload,html[data-album-tone=light] .album-hero__actions .album-hero__upload{background:var(--pink);border-color:#ffffff7a;color:#fff;box-shadow:0 10px 24px #96284e42,0 1px 2px #3c14281f}html[data-album-tone=light] .album-hero__upload:hover,html[data-album-tone=light] .album-hero__actions .album-hero__upload:hover{background:var(--pink-deep)}html[data-album-tone=light] .album-hero__actions .album-hero__upload--ghost{background:#3c222e24;border-color:#783c543d;color:#34202adb;box-shadow:none}.album-hero__stats{display:none}.album-body{width:calc(100% - 32px);padding-top:22px}.album-group__bar{height:auto;padding:10px 14px;flex-wrap:wrap;gap:8px}.album-group__title{white-space:normal}.album-group__grid{grid-template-columns:repeat(2,1fr);gap:12px}.story-item{grid-template-columns:18px minmax(0,1fr);column-gap:10px}.story-timeline:before{left:8px}.story-item__dot{left:1px;top:26px}.story-card{flex-direction:column;min-height:0}.story-card__plate{width:100%;height:132px;align-self:auto}.story-card__body{padding:18px 20px 16px}}@media (max-width: 980px){.album-hero--slim{min-height:320px}}@media (max-width: 640px){.album-hero--slim{min-height:340px}.album-hero--slim .album-hero__inner{padding:0 22px}.album-hero__back{top:calc(var(--nav-h) + 16px);left:20px}}@media (max-width: 640px){.topnav__inner{width:calc(100% - 28px);gap:10px}.brand{gap:9px;flex:none}.brand__badge{width:28px;height:28px;font-size:16px}.brand__name{font-size:16px;white-space:nowrap}.admin-entry{height:30px;padding:0 12px;font-size:12px}.music-toggle{gap:0;width:30px;height:30px;padding:0;border-radius:999px;background:#ef6a9a1a;justify-content:center}.music-toggle>span:not(.music-toggle__bars){display:none}}
