@import"https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Noto+Serif+SC:wght@500;600;700&family=Noto+Sans+SC:wght@400;500;600&display=swap";:root{font-family:Noto Sans SC,sans-serif;color:#40352d;background:#fffaf5;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:320px;background:#fffaf5}button{cursor:pointer}button:focus-visible,input:focus-visible,textarea:focus-visible,label:focus-within{outline:3px solid #df8678;outline-offset:3px}.app-shell{min-height:100vh;display:grid;grid-template-columns:200px minmax(0,1fr) 300px;background:#fffaf5}.brand-rail{min-height:100vh;padding:46px 27px 34px;background:#f9efe5;border-right:1px solid #e9dbce;display:flex;flex-direction:column;position:sticky;top:0;align-self:start}.brand{color:inherit;text-decoration:none;display:flex;align-items:flex-start;gap:12px;font-family:"Noto Serif SC",serif;font-size:22px;line-height:1.3}.brand span{color:#d97b71;line-height:1}.brand p,.brand-rail>p{color:#8b7163;font-size:12px;line-height:1.9;margin:34px 0 0}.rail-footer{margin-top:auto;display:flex;gap:8px;align-items:center;color:#917367;font-size:12px}.app-content{padding:44px clamp(28px,4vw,70px) 100px;overflow:hidden}.topbar{display:flex;gap:30px;justify-content:space-between;align-items:flex-start;margin-bottom:52px}.eyebrow{margin:0 0 10px;font:500 11px DM Mono,monospace;color:#c57a6f;letter-spacing:.15em}h1,h2,time{font-family:"Noto Serif SC",serif}.topbar h1{font-size:clamp(24px,2.3vw,35px);line-height:1.42;max-width:640px;margin:0;letter-spacing:-.04em;font-weight:600}.mode-switcher{display:inline-flex;gap:3px;padding:4px;border:1px solid #eadbd0;background:#fffdf9;border-radius:99px;flex-shrink:0}.mode-switcher button{border:0;border-radius:99px;background:transparent;color:#927d71;padding:9px 12px;display:inline-flex;gap:6px;align-items:center;font-size:12px;white-space:nowrap}.mode-switcher button.active{background:#463c36;color:#fffaf5}.upload-panel{padding:44px 27px 30px;background:#fffdf9;border-left:1px solid #eadfd5;min-height:100vh;position:sticky;top:0;align-self:start}.panel-kicker{color:#c67368;font-size:13px;display:flex;align-items:center;gap:6px;margin-bottom:35px}.field-label{display:block;font-size:12px;font-weight:600;color:#735f55;margin:18px 0 8px}.date-input,textarea{width:100%;background:#fdf7f1;border:1px solid #e7d9ce;border-radius:9px;color:#463c36}.date-input{padding:11px}textarea{padding:12px;resize:vertical;line-height:1.7}.file-trigger,.save-memory{border-radius:10px;padding:12px 14px;width:100%;display:flex;align-items:center;justify-content:center;gap:8px;margin-top:13px;font-size:13px;transition:transform .15s ease,background .15s ease}.file-trigger{color:#775d51;background:#f7e9de;border:1px dashed #d49a8b;cursor:pointer}.save-memory{color:#fff;border:1px solid #ba655b;background:#c96f65;font-weight:600}.save-memory:hover,.file-trigger:hover{transform:translateY(-1px)}.save-memory:disabled{cursor:not-allowed;opacity:.55;transform:none}.privacy-note{font-size:11px;color:#9d877a;line-height:1.7;margin-top:18px}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;clip-path:inset(50%)}.journal-day{position:relative;padding:0 0 44px}.day-select{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:0;background:transparent;z-index:0}.day-heading,.journal-body{position:relative;z-index:1}.day-heading{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px 16px;margin-bottom:21px}.day-heading time{font-size:25px;font-weight:600;letter-spacing:-.03em}.day-heading span{font-size:12px;color:#978177;display:inline-flex;gap:4px;align-items:center}.journal-day.selected .day-heading time{color:#bd695e}.journal-body{display:grid;grid-template-columns:minmax(280px,1.4fr) minmax(180px,.6fr);gap:clamp(24px,4vw,56px);align-items:center}.journal-body blockquote{margin:0;color:#756154;font-family:"Noto Serif SC",serif;line-height:2;font-size:16px;padding:24px 0}.day-divider{height:50px;border-left:1px dashed #debbac;margin:32px 0 0 8px;color:#d48676;display:flex;align-items:flex-end;transform:translate(-1px)}.day-divider svg{transform:translate(-6px,6px)}.journal-day:hover .day-heading time{color:#bd695e}.photo-layout{position:relative;min-height:320px;padding:14px 26px 16px 8px}.memory-photo{margin:0;overflow:hidden;background:#e8ddd3;box-shadow:0 10px 25px #5d443221;border:7px solid #fffdfa;position:absolute}.open-photo{cursor:zoom-in;border:0;padding:0;background:transparent;display:block;width:100%;height:100%;color:inherit}.memory-photo img{display:block;width:100%;height:100%;object-fit:cover}.photo-1{width:56%;height:286px;left:5%;top:12px;transform:rotate(-2.2deg)}.photo-2{width:38%;height:154px;right:4%;top:4px;transform:rotate(3deg)}.photo-3{width:43%;height:142px;right:7%;bottom:3px;transform:rotate(-3deg)}.photo-4{width:30%;height:125px;left:0;bottom:0;transform:rotate(4deg)}.photo-count-1 .photo-1{width:82%;height:295px;left:8%}.photo-count-2 .photo-1{width:60%}.photo-count-2 .photo-2{width:44%;height:188px;top:86px}.photo-credit{position:absolute;left:6px;right:6px;bottom:6px;display:flex;align-items:center;gap:3px;color:#fff;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left;text-shadow:0 1px 4px rgba(0,0,0,.65)}.zoom-hint{opacity:0;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;align-items:center;gap:5px;padding:7px 10px;color:#fff;background:#2c231ebf;border-radius:99px;font-size:11px;transition:opacity .15s ease}.open-photo:hover .zoom-hint,.open-photo:focus-visible .zoom-hint{opacity:1}.delete-photo{position:absolute;right:7px;top:7px;z-index:2;border:0;background:#fffaf5;color:#ad5d55;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;opacity:.9}.delete-photo:hover{background:#ad5d55;color:#fff}.photo-more{position:absolute;bottom:2px;right:4%;border:0;width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#463c36;color:#fff;font-size:12px}.empty-photo{border:1px dashed #d7bcae;color:#a78e80;min-height:180px;display:grid;place-items:center;font-size:13px;padding:22px;text-align:center}.calendar-view{display:grid;grid-template-columns:minmax(380px,1.15fr) minmax(290px,.85fr);gap:clamp(34px,5vw,78px);align-items:start}.calendar-grid-wrap{background:#102037;color:#f9ebd9;padding:28px;box-shadow:0 14px 42px #10203729}.month-nav{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px}.month-nav h2{margin:0;font-size:28px}.month-nav button{background:transparent;color:inherit;border:0;padding:7px}.weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr)}.weekdays{color:#bea991;font-size:10px;text-align:center;margin-bottom:9px}.calendar-cell{aspect-ratio:1 / .92;border:1px solid rgba(242,224,198,.17);background:transparent;color:#dbc9b7;text-align:left;padding:7px;position:relative}.calendar-cell time{font-size:13px}.calendar-cell:hover,.calendar-cell.is-selected{background:#e66f5b38}.calendar-cell.is-selected{outline:2px solid #e77d69;outline-offset:-2px}.calendar-stack{position:absolute;top:30%;right:20%;bottom:14%;left:20%}.calendar-stack img{position:absolute;width:70%;height:76%;object-fit:cover;border:2px solid #fff6ea;box-shadow:3px 3px #00000024}.calendar-stack img:nth-child(2){left:24%;top:13%;transform:rotate(7deg)}.calendar-stack i{position:absolute;width:5px;height:5px;background:#e27c68;border-radius:50%;right:0;top:0}.calendar-story{padding-top:15px}.calendar-story>p{font-family:"Noto Serif SC",serif;font-size:16px;color:#725d50;line-height:2;margin:22px 0}.calendar-story .photo-layout{min-height:340px}.story-foot{padding:13px 0;border-top:1px solid #e5d4c9;display:flex;gap:9px;align-items:center;color:#a8816c;font-size:12px}.gallery-view{padding-top:4px}.gallery-line{display:flex;gap:0;align-items:flex-start;margin:0 0 45px;padding:0 3%;border-top:1px solid #cfb5a5}.gallery-line button{border:0;background:transparent;color:#987d6d;padding:0;width:80px;margin-top:-7px;display:flex;flex-direction:column;align-items:center;gap:8px;font:11px DM Mono,monospace}.gallery-line button i{width:13px;height:13px;border:2px solid #c47a6e;background:#fffaf5;border-radius:50%}.gallery-line button.active{color:#b85e55}.gallery-line button.active i{background:#c76d61;transform:scale(1.35)}.gallery-feature{max-width:950px;margin:auto}.gallery-feature .day-heading{justify-content:center}.gallery-feature .photo-layout{min-height:440px}.gallery-feature .photo-1{width:63%;height:390px;left:17%}.gallery-feature .photo-2{width:31%;height:192px;left:1%;top:40px}.gallery-feature .photo-3{width:30%;height:184px;right:0;bottom:18px}.gallery-feature .photo-4{width:25%;height:140px;left:5%;bottom:0}.gallery-caption{text-align:center;max-width:540px;margin:20px auto 55px}.gallery-caption span{color:#c17869;font:11px DM Mono,monospace;letter-spacing:.12em}.gallery-caption p{font-family:"Noto Serif SC",serif;font-size:18px;line-height:2;color:#6d584c}.gallery-previous{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;border-top:1px solid #e9dcd2;padding-top:25px}.gallery-previous button{border:0;padding:0;background:transparent;text-align:left;color:#80695d;font-size:11px}.gallery-previous img{width:100%;height:120px;object-fit:cover;display:block;border:6px solid #fff;margin-bottom:8px;box-shadow:0 5px 15px #4a36291c}.loading{min-height:350px;display:grid;place-items:center;color:#9c8172;font-family:"Noto Serif SC",serif}.mobile-upload{display:none}.mode-calendar{background:#102037}.mode-calendar .app-content{color:#f8ecdc}.mode-calendar .brand-rail{background:#0d1a2c;border-color:#27374d;color:#f8ecdc}.mode-calendar .brand-rail>p,.mode-calendar .rail-footer{color:#b8a995}.mode-calendar .brand span,.mode-calendar .eyebrow{color:#e77d69}.mode-calendar .mode-switcher{border-color:#40506a;background:#142743}.mode-calendar .mode-switcher button{color:#d2bdab}.mode-calendar .mode-switcher button.active{background:#e37060;color:#fffaf5}.mode-calendar .upload-panel{background:#0e1d31;border-color:#283a50}.mode-calendar .panel-kicker{color:#efa18d}.mode-calendar .field-label,.mode-calendar .privacy-note{color:#cbbbae}.mode-calendar .date-input,.mode-calendar textarea{background:#172945;border-color:#3a4c63;color:#fff4e8}.mode-calendar .file-trigger{background:#203755;border-color:#69839e;color:#e2d4c7}.mode-calendar .save-memory{background:#e37060;border-color:#ed9586}.mode-calendar .calendar-grid-wrap{box-shadow:none;border:1px solid #415068}@media(max-width:1150px){.app-shell{grid-template-columns:155px minmax(0,1fr)}.upload-panel{grid-column:2;grid-row:2;position:static;min-height:auto;border:1px solid #eadfd5;margin:0 34px 40px;display:grid;grid-template-columns:1fr 1fr;gap:0 18px}.upload-panel .panel-kicker,.upload-panel .privacy-note{grid-column:1 / -1}.upload-panel .save-memory,.upload-panel .file-trigger{align-self:end}.app-content{padding-bottom:38px}}@media(max-width:780px){.app-shell{display:block}.brand-rail{min-height:auto;position:static;padding:22px 23px;flex-direction:row;align-items:center;justify-content:space-between}.brand{font-size:18px}.brand-rail>p,.rail-footer{display:none}.app-content{padding:30px 20px 75px}.topbar{display:block;margin-bottom:38px}.topbar h1{font-size:27px}.mode-switcher{margin-top:22px;width:100%;justify-content:space-between}.mode-switcher button{flex:1;justify-content:center;padding:9px 4px}.journal-body,.calendar-view{display:block}.journal-body blockquote{padding:5px 12px 0}.photo-layout{min-height:280px}.photo-1{height:245px}.photo-2{height:132px}.photo-3{height:124px}.calendar-grid-wrap{padding:15px}.calendar-cell{padding:4px}.calendar-stack{top:32%;right:12%;bottom:10%;left:12%}.calendar-story{margin-top:35px}.gallery-line{overflow-x:auto;padding:0}.gallery-feature .photo-layout{min-height:335px}.gallery-feature .photo-1{height:300px}.gallery-feature .photo-2{height:145px}.gallery-feature .photo-3{height:135px}.upload-panel{display:none}.mobile-upload{display:inline-flex;position:fixed;right:18px;bottom:18px;z-index:5;align-items:center;gap:8px;border:0;border-radius:99px;background:#c86e64;color:#fff;padding:13px 17px;box-shadow:0 8px 26px #5d363038}.mode-calendar .mobile-upload{background:#e37060}}@media(max-width:440px){.mode-switcher button{font-size:0}.mode-switcher button svg{width:20px;height:20px}.photo-layout{min-height:246px}.photo-1{height:210px}.photo-2{height:114px}.photo-3{height:103px}.day-heading time{font-size:22px}.gallery-feature .photo-layout{min-height:280px}.gallery-feature .photo-1{height:250px}.gallery-feature .photo-2{height:120px}.gallery-feature .photo-3{height:105px}.gallery-previous img{height:75px}}.header-actions{display:flex;flex-direction:column;align-items:flex-end;gap:10px}.logout-button{background:transparent;border:0;color:#947a6c;display:inline-flex;align-items:center;gap:6px;font-size:11px;max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.logout-button:hover{color:#b95f55}.close-composer{display:none}.upload-error{margin:12px 0 0;color:#b34842;font-size:12px;line-height:1.6}.empty-memory{min-height:420px;border:1px dashed #dfc3b4;background:#fffdf9;display:grid;place-content:center;text-align:center;padding:35px;color:#9b7869}.empty-memory svg{margin:auto;color:#cf7468}.empty-memory h2{color:#604c42;margin:18px 0 8px;font-size:26px}.empty-memory p{font-size:13px;margin:0}.auth-page{min-height:100vh;display:grid;place-items:center;background:#f7ece2;padding:30px}.auth-card{width:min(100%,460px);padding:48px;background:#fffdf9;border:1px solid #eadbd0;box-shadow:0 20px 50px #58392821;text-align:center}.auth-mark{color:#d67268;margin-bottom:18px}.auth-card h1{font:600 34px/1.45 "Noto Serif SC",serif;margin:8px 0;letter-spacing:-.05em}.auth-intro{color:#887266;font-size:13px;margin:0 0 27px}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;background:#f6ebe2;padding:4px;border-radius:99px;margin-bottom:22px}.auth-tabs button{border:0;background:transparent;padding:9px;border-radius:99px;color:#94796b;font-size:13px}.auth-tabs button.active{color:#fff;background:#4b4039}.auth-card form{text-align:left}.auth-card label{display:grid;gap:7px;font-size:12px;color:#755e52;margin:15px 0}.auth-card label span{display:flex;gap:6px;align-items:center}.auth-card input{border:1px solid #e7d9ce;border-radius:8px;padding:12px;color:#463c36;background:#fffdf9}.auth-submit{width:100%;border:1px solid #ba655b;color:#fff;background:#c96f65;padding:13px;margin-top:9px;border-radius:9px;font-weight:600}.auth-submit:disabled{opacity:.6}.auth-error{background:#fff0ec;color:#ab4a43;font-size:12px;border-radius:7px;padding:10px;line-height:1.6}.auth-note{color:#aa9183;font-size:11px;margin:20px 0 0}.delete-note{width:100%;border:0;background:transparent;color:#ad5d55;display:inline-flex;justify-content:flex-end;align-items:center;gap:5px;padding:7px 0 0;font-size:12px}.delete-note:hover{color:#833d36;text-decoration:underline}.pending-photos{list-style:none;padding:0;margin:10px 0 0;display:grid;gap:7px;max-height:202px;overflow-y:auto}.pending-photos li{display:grid;grid-template-columns:42px minmax(0,1fr) 28px;align-items:center;gap:8px;padding:5px;background:#f9eee6;border:1px solid #ecd8cc;border-radius:7px}.pending-photos img{width:42px;height:36px;object-fit:cover;border-radius:4px}.pending-photos span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#725e53;font-size:11px}.pending-photos button{border:0;background:transparent;color:#a4574f;display:grid;place-items:center;padding:5px}.action-error{color:#a7423b;background:#fff0ec;border:1px solid #f0c4bb;padding:11px 14px;border-radius:8px;margin:0 0 18px;font-size:13px}.lightbox-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;background:#151210e0;display:grid;place-items:center;padding:28px}.lightbox{width:min(100%,1080px);min-height:300px;position:relative;display:grid;place-items:center}.lightbox figure{max-width:min(100%,920px);max-height:calc(100vh - 110px);margin:0}.lightbox figure img{max-width:100%;max-height:calc(100vh - 155px);display:block;margin:auto;object-fit:contain;border:5px solid #fffdf9;box-shadow:0 22px 65px #0006}.lightbox figcaption{color:#fff7ed;padding:13px 2px 0;display:flex;justify-content:space-between;gap:15px;font-size:13px}.lightbox figcaption span{display:inline-flex;align-items:center;gap:6px}.lightbox-close,.lightbox-arrow{position:absolute;z-index:1;border:0;color:#fff;background:#ffffff24;display:grid;place-items:center}.lightbox-close{top:-8px;right:0;width:42px;height:42px;border-radius:50%}.lightbox-arrow{top:50%;transform:translateY(-50%);width:44px;height:70px}.lightbox-arrow--left{left:-58px}.lightbox-arrow--right{right:-58px}.lightbox-close:hover,.lightbox-arrow:hover{background:#ffffff47}.lightbox-delete{position:absolute;bottom:-46px;right:0;border:1px solid rgba(255,255,255,.45);color:#fff;background:transparent;padding:8px 11px;border-radius:6px;display:inline-flex;align-items:center;gap:5px;font-size:12px}.lightbox-delete:hover{color:#ffb6ae;border-color:#ffb6ae}@media(max-width:780px){.header-actions{align-items:stretch}.logout-button{margin-top:12px;justify-content:flex-end;max-width:100%}.upload-panel.mobile-open{display:block;position:fixed;z-index:10;top:0;right:0;bottom:0;left:0;overflow-y:auto;min-height:100vh;padding:55px 28px 36px;border:0}.close-composer{display:grid;place-items:center;position:absolute;right:20px;top:18px;border:0;background:transparent;color:#7d665a}.auth-page{padding:16px}.auth-card{padding:35px 24px}.auth-card h1{font-size:29px}}@media(max-width:780px){.photo-credit{font-size:9px}.zoom-hint{display:none}.delete-photo{opacity:1}.lightbox-backdrop{padding:18px}.lightbox figure img{max-height:calc(100vh - 174px)}.lightbox-close{top:-4px;right:-2px}.lightbox-arrow{top:auto;bottom:-52px;transform:none;width:46px;height:38px;border-radius:6px}.lightbox-arrow--left{left:calc(50% - 52px)}.lightbox-arrow--right{right:calc(50% - 52px)}.lightbox-delete{bottom:-102px;left:50%;right:auto;transform:translate(-50%);white-space:nowrap}.lightbox figcaption{padding-right:48px}}:root{--cherry: #d95462;--cherry-deep: #a73548;--milk: #fff9f3;--paper: #fff3ea;--ink: #4a3734;--spring: cubic-bezier(.22, 1.35, .36, 1)}html{scroll-behavior:smooth}button,input,textarea{font:inherit}button:focus-visible,input:focus-visible,textarea:focus-visible,a:focus-visible{outline:3px solid rgba(217,84,98,.48);outline-offset:3px}.app-shell{isolation:isolate;background-color:var(--milk);background-image:radial-gradient(circle at 1px 1px,rgba(210,103,109,.12) 1px,transparent 0);background-size:17px 17px}.app-shell:before{content:"";position:fixed;z-index:-2;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(circle at 84% 10%,rgba(255,188,190,.44),transparent 18rem),radial-gradient(circle at 35% 80%,rgba(255,212,207,.34),transparent 22rem)}.app-content{position:relative;z-index:1;animation:page-arrive .58s var(--spring) both}.brand-rail,.upload-panel{position:relative;z-index:2;background-color:#fff9f3e6;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.brand{transition:transform .25s var(--spring),color .2s ease}.brand:hover{color:var(--cherry-deep);transform:rotate(-1deg) translateY(-1px)}.brand span{color:var(--cherry);animation:heartbeat 2.8s ease-in-out infinite}.brand-rail:after{content:"♡";position:absolute;right:20px;top:18px;color:#d9546242;font-size:25px;transform:rotate(12deg)}.topbar{position:relative}.topbar h1{text-wrap:balance;color:var(--ink);max-width:680px}.eyebrow{color:var(--cherry-deep);letter-spacing:.2em}.mode-switcher{box-shadow:0 8px 20px #b54b5b17,inset 0 1px #fffc;border-color:#f1c9c7}.mode-switcher button{transition:transform .22s var(--spring),color .2s ease,background .24s ease,box-shadow .24s ease}.mode-switcher button:hover{color:var(--cherry-deep);transform:translateY(-2px)}.mode-switcher button:active,.save-memory:active,.file-trigger:active,.auth-submit:active,.mobile-upload:active{transform:scale(.97)}.mode-switcher button.active,.mode-switcher button.active svg{color:#fffdf9!important;opacity:1}.mode-switcher button.active{background:var(--cherry-deep);font-weight:700;box-shadow:0 5px 12px #a7354842;animation:mode-pop .36s var(--spring)}.logout-button{transition:color .2s ease,transform .2s var(--spring)}.logout-button:hover{color:var(--cherry-deep);transform:translate(-2px)}.journal-day{animation:journal-reveal .55s both;animation-delay:calc(var(--day-order, 0) * 70ms)}.journal-day:hover .journal-body{transform:translate(4px)}.journal-body{transition:transform .3s var(--spring)}.day-heading time{text-shadow:0 1px #fff}.day-divider{border-left-color:#e6a5a4}.day-divider svg{animation:heart-sway 2.8s ease-in-out infinite}.memory-photo{border-color:#fffdf9;transition:box-shadow .28s ease,transform .35s var(--spring),filter .25s ease;animation:polaroid-in .6s var(--spring) both}.memory-photo:hover{z-index:3;box-shadow:0 18px 32px #8b364538;filter:saturate(1.08)}.photo-1:hover{transform:rotate(-.6deg) translateY(-6px) scale(1.025)}.photo-2:hover{transform:rotate(1.1deg) translateY(-6px) scale(1.035)}.photo-3:hover{transform:rotate(-1deg) translateY(-5px) scale(1.04)}.photo-4:hover{transform:rotate(1deg) translateY(-5px) scale(1.04)}.photo-2{animation-delay:70ms}.photo-3{animation-delay:.13s}.photo-4{animation-delay:.19s}.zoom-hint{background:#a73548e0;box-shadow:0 4px 14px #511d263d}.delete-photo{transition:transform .2s var(--spring),background .2s ease,color .2s ease}.delete-photo:hover{transform:rotate(10deg) scale(1.1);background:var(--cherry-deep)}.photo-more{background:var(--cherry-deep);box-shadow:0 5px 14px #a7354842;transition:transform .2s var(--spring)}.photo-more:hover{transform:rotate(8deg) scale(1.1)}.empty-memory{position:relative;overflow:hidden;border-color:#efb9b6;background:#fffdf9d1}.empty-memory:after{content:"♡  ♡  ♡";position:absolute;bottom:22px;color:#d9546229;letter-spacing:1.2em;font-size:28px}.upload-panel{box-shadow:-12px 0 32px #ac595b0a}.panel-kicker{color:var(--cherry-deep)}.date-input,textarea{transition:border-color .2s ease,box-shadow .2s ease,background .2s ease}.date-input:hover,textarea:hover{border-color:#e9b2af}.date-input:focus,textarea:focus{border-color:var(--cherry);background:#fffdf9;box-shadow:0 0 0 4px #d954621a;outline:0}.file-trigger{border-color:#e5a2a0;color:var(--cherry-deep);transition:transform .24s var(--spring),background .2s ease,box-shadow .2s ease}.file-trigger:hover{background:#ffe8e5;box-shadow:0 7px 15px #b54b5b1c}.save-memory,.auth-submit{background:var(--cherry);border-color:var(--cherry);box-shadow:0 8px 17px #b54b5b2b;transition:transform .24s var(--spring),box-shadow .2s ease,background .2s ease}.save-memory:hover,.auth-submit:hover{background:var(--cherry-deep);box-shadow:0 11px 21px #a735483d}.pending-photos li{transition:transform .22s var(--spring),background .2s ease}.pending-photos li:hover{transform:translate(3px);background:#fff1ec}.calendar-grid-wrap{background-color:#502e39;background-image:radial-gradient(rgba(255,246,235,.13) 1px,transparent 1px);background-size:10px 10px;border-radius:22px 6px;transform:rotate(-.35deg);box-shadow:0 18px 38px #682b3a2e}.calendar-cell{transition:background .2s ease,transform .2s var(--spring),box-shadow .2s ease}.calendar-cell:hover{transform:scale(1.07);z-index:1;background:#ffa4aa47;box-shadow:0 5px 12px #2d131b2e}.calendar-cell.is-selected{outline-color:#ffabb0;background:#ffa4aa47}.calendar-stack i{background:#ffabb0;box-shadow:0 0 0 3px #ffabb024}.gallery-line button{transition:color .2s ease,transform .25s var(--spring)}.gallery-line button:hover{transform:translateY(-4px);color:var(--cherry-deep)}.gallery-line button.active i{background:var(--cherry);box-shadow:0 0 0 5px #d954621f}.gallery-caption span{color:var(--cherry-deep)}.kawaii-decor{position:fixed;z-index:0;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.kawaii-sticker{position:absolute;object-fit:contain;filter:drop-shadow(0 12px 15px rgba(121,48,58,.13));-webkit-user-select:none;user-select:none}.kawaii-sticker--kitten{width:clamp(120px,15vw,235px);top:14px;right:5.4%;animation:float-sticker 6.4s ease-in-out infinite}.kawaii-sticker--strawberry{width:clamp(100px,13vw,205px);bottom:1.5%;left:max(9.5%,150px);transform:rotate(-12deg);animation:float-sticker 7.1s ease-in-out -1.8s infinite}.kawaii-sticker--mini-kitten{width:clamp(70px,8vw,118px);top:55%;left:13.5%;opacity:.58;transform:rotate(-15deg);animation:wiggle-sticker 5.4s ease-in-out 1.2s infinite}.auth-page{background-color:#fff0e9;background-image:radial-gradient(circle at 1px 1px,rgba(212,84,98,.13) 1px,transparent 0);background-size:16px 16px;overflow:hidden}.auth-card{position:relative;overflow:hidden;border:1px solid #efc7c4;border-radius:28px 8px;box-shadow:16px 19px #d9546221,0 22px 54px #78373e21;animation:card-arrive .66s var(--spring) both}.auth-card:before{content:"";position:absolute;top:12px;right:12px;bottom:12px;left:12px;border:1px dashed rgba(217,84,98,.28);border-radius:20px 5px;pointer-events:none}.auth-card>*{position:relative;z-index:1}.auth-kitten-sticker{position:absolute;z-index:2;width:112px;right:-17px;top:-21px;transform:rotate(12deg);filter:drop-shadow(0 7px 8px rgba(102,35,48,.13));animation:kitten-peek 4.8s ease-in-out infinite}.auth-mark{color:var(--cherry)}.auth-tabs{border-radius:16px 5px}.auth-tabs button{transition:transform .2s var(--spring),background .2s ease}.auth-tabs button:hover{transform:translateY(-1px)}.auth-tabs button.active{background:var(--cherry-deep)}.auth-card input{transition:border-color .2s ease,box-shadow .2s ease}.auth-card input:focus{border-color:var(--cherry);box-shadow:0 0 0 4px #d954621a;outline:0}.mode-calendar{background:#502e39}.mode-calendar .brand-rail,.mode-calendar .upload-panel{background-color:#482430e0}.mode-calendar .topbar h1{color:#fff5ed;text-shadow:0 2px 18px rgba(39,16,25,.25)}.mode-calendar .calendar-story>p{color:#f3ddd3}.mode-calendar .story-foot{color:#f4c9bd;border-color:#ffe2d866}.mode-calendar .mode-switcher{border-color:#875064;background:#623744}.mode-calendar .mode-switcher button.active,.mode-calendar .save-memory{background:var(--cherry)}.mode-calendar .calendar-grid-wrap{border-color:#ffdbd240}@keyframes page-arrive{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes card-arrive{0%{opacity:0;transform:rotate(-2deg) translateY(20px) scale(.96)}to{opacity:1;transform:none}}@keyframes polaroid-in{0%{opacity:0;transform:translateY(16px) rotate(0) scale(.94)}to{opacity:1}}@keyframes journal-reveal{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@keyframes float-sticker{0%,to{translate:0 0}50%{translate:0 -13px}}@keyframes wiggle-sticker{0%,to{rotate:-15deg}48%{rotate:-9deg}54%{rotate:-17deg}}@keyframes kitten-peek{0%,to{translate:0 0;rotate:12deg}50%{translate:-5px 7px;rotate:8deg}}@keyframes heartbeat{0%,to{transform:scale(1)}12%{transform:scale(1.14)}24%{transform:scale(.98)}}@keyframes heart-sway{0%,to{rotate:0deg}50%{rotate:13deg}}@keyframes mode-pop{0%{transform:scale(.82)}to{transform:scale(1)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}@media(max-width:1150px){.kawaii-sticker--strawberry{left:3%;bottom:5px}.kawaii-sticker--mini-kitten{display:none}}@media(max-width:780px){.app-shell:before{background:radial-gradient(circle at 100% 0,rgba(255,188,190,.35),transparent 13rem)}.kawaii-sticker--kitten{width:92px;top:101px;right:-16px;opacity:.84}.kawaii-sticker--strawberry{width:96px;bottom:72px;left:-18px;opacity:.72}.brand-rail:after{right:18px;top:13px}.calendar-grid-wrap{transform:none;border-radius:16px 5px}.auth-kitten-sticker{width:87px;right:-15px;top:-14px}.auth-card{border-radius:22px 6px}}
