:root{font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@font-face{font-family:Material Icons;font-style:normal;font-weight:400;font-display:block;src:url(/assets/material-icons-kAwBdRge.woff2) format("woff2"),url(/assets/material-icons-Dr0goTwe.woff) format("woff")}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"liga"}@font-face{font-family:Material Icons Outlined;font-style:normal;font-weight:400;font-display:block;src:url(/assets/material-icons-outlined-DZhiGvEA.woff2) format("woff2"),url(/assets/material-icons-outlined-BpWbwl2n.woff) format("woff")}.material-icons-outlined{font-family:Material Icons Outlined;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"liga"}@font-face{font-family:Material Icons Round;font-style:normal;font-weight:400;font-display:block;src:url(/assets/material-icons-round-DrirKXBx.woff2) format("woff2"),url(/assets/material-icons-round-BDlwx-sv.woff) format("woff")}.material-icons-round{font-family:Material Icons Round;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"liga"}@font-face{font-family:Material Icons Sharp;font-style:normal;font-weight:400;font-display:block;src:url(/assets/material-icons-sharp-gidztirS.woff2) format("woff2"),url(/assets/material-icons-sharp-CH1KkVu7.woff) format("woff")}.material-icons-sharp{font-family:Material Icons Sharp;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"liga"}@font-face{font-family:Material Icons Two Tone;font-style:normal;font-weight:400;font-display:block;src:url(/assets/material-icons-two-tone-DuNIpaEj.woff2) format("woff2"),url(/assets/material-icons-two-tone-B7wz7mED.woff) format("woff")}.material-icons-two-tone{font-family:Material Icons Two Tone;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"liga"}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}:root{--bg: #f5f2ef;--bg-login: #E34234;--surface: #ffffff;--surface2: #f0ece8;--border: #e0d9d3;--red: #E34234;--red-dark: #b01f1f;--red-light: #fdf0f0;--text: #1a1210;--muted: #8a7d78;--radius: 16px;--header-h: 72px}html,body{height:100%;background:var(--bg)}body{font-family:DM Sans,sans-serif;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}.app{max-width:480px;margin:0 auto;min-height:100vh;display:flex;flex-direction:column;background:var(--bg)}@media(min-width:480px){.app{box-shadow:0 0 60px #00000012}}.content{flex:1;overflow-y:auto;padding-bottom:24px}.header{height:var(--header-h);background:var(--red);display:flex;align-items:center;padding:0 20px;gap:10px;position:sticky;top:0;z-index:50;box-shadow:0 2px 12px #d42b2b33}.header-text{display:flex;flex-direction:column;flex:1;gap:1px;flex-shrink:0}.header-logo{font-family:Kapakana,cursive;font-weight:400;font-size:2rem;color:transparent;letter-spacing:.5px;-webkit-text-stroke:.6px white;line-height:1.1}.header-date{font-family:"Noto Serif",serif;font-size:11px;font-weight:500;color:#fff;letter-spacing:.3px}.badge{background:var(--red);border:1px solid rgba(255,255,255,.19);border-radius:20px;padding:4px 12px;font-size:12px;font-weight:600;color:#fff;display:flex;align-items:center;gap:5px}.badge .material-icons{font-size:14px}.user-chip{display:flex;align-items:center;gap:7px;background:#ffffff20;border:1px solid rgba(255,255,255,.19);border-radius:50px;padding:5px 10px 5px 5px;cursor:pointer;transition:background .15s;max-width:130px;min-width:0;overflow:hidden;flex-shrink:0}.user-chip:hover{background:#ffffff30}.user-avatar{width:26px;height:26px;border-radius:50%;background:#fff;color:var(--red);font-size:12px;font-weight:800;display:flex;align-items:center;justify-content:center;flex-shrink:0}.user-name{color:#fff;font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:90px}.gallery-panel{padding:12px;display:flex;flex-direction:column;gap:10px}.gallery-topbar{background:var(--surface);border-radius:var(--radius);padding:13px 14px;display:flex;align-items:center;gap:8px;overflow:hidden;min-width:0}.gallery-topbar .material-icons{color:var(--red);font-size:20px;flex-shrink:0}.gallery-topbar>*{flex-shrink:0;min-width:0}.slots-label{font-size:13px;font-weight:500;flex:1;min-width:0}.slots-label span{color:var(--muted);font-weight:400}.slots-track{width:60px;height:6px;background:var(--border);border-radius:10px;overflow:hidden;flex-shrink:0}.slots-fill{height:100%;background:var(--red);border-radius:10px;transition:width .4s ease}.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;border-radius:var(--radius);overflow:hidden}.gallery-grid--large{grid-template-columns:1fr;gap:8px;border-radius:0;overflow:visible}.gallery-grid--large .photo-thumb{aspect-ratio:4/3;border-radius:var(--radius);overflow:hidden}.gallery-grid--large .photo-uploader{font-size:12px;padding:20px 10px 8px}.photo-thumb{aspect-ratio:1;position:relative;overflow:hidden;cursor:pointer;background:var(--border)}.photo-thumb img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .25s}.photo-thumb:active img{transform:scale(.95)}.photo-uploader{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,#000000ba);padding:14px 6px 5px;font-size:10px;font-weight:600;color:#fff;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.photo-thumb.selected:after{content:"";position:absolute;inset:0;background:#e342344f;pointer-events:none}.select-check{position:absolute;top:5px;left:5px;color:#fff;line-height:0;filter:drop-shadow(0 1px 3px rgba(0,0,0,.33))}.select-check .material-icons{font-size:22px}.btn-upload{display:inline-flex;align-items:center;gap:6px;background:var(--red);color:#fff;font-family:DM Sans,sans-serif;font-weight:600;font-size:13px;padding:9px 16px;border-radius:50px;border:none;outline:none;cursor:pointer;box-shadow:0 4px 14px #d42b2b40;transition:background .15s,transform .1s;white-space:nowrap;flex-shrink:0}.btn-upload:active{background:var(--red-dark);transform:scale(.97)}.btn-upload:disabled{opacity:.5;pointer-events:none}.btn-upload .material-icons{font-size:17px}.btn-upload-primary{position:relative;overflow:hidden}.btn-upload-primary:after{content:"";position:absolute;top:0;left:-75%;width:50%;height:100%;background:linear-gradient(120deg,transparent 0%,rgba(255,255,255,.35) 50%,transparent 100%);animation:btn-shine 2.4s ease-in-out infinite;pointer-events:none}.btn-primary{display:inline-flex;align-items:center;gap:8px;background:var(--red);color:#fff;font-family:DM Sans,sans-serif;font-weight:600;font-size:15px;padding:13px 26px;border-radius:50px;border:none;cursor:pointer;box-shadow:0 4px 14px #d42b2b40;transition:background .15s,transform .1s}.btn-primary:active{background:var(--red-dark);transform:scale(.97)}.btn-select{background:var(--surface2);color:var(--text);box-shadow:none;padding:9px 12px}.btn-select.btn-upload{box-shadow:none}.sort-active{background:var(--red-light);color:var(--red);box-shadow:none}.btn-select-all{background:none;border:1.5px solid var(--border);border-radius:50px;padding:5px 12px;font-size:13px;font-weight:600;cursor:pointer;color:var(--text)}.btn-sheet-danger{width:100%;padding:15px;background:var(--red);border:none;border-radius:14px;color:#fff;font-family:DM Sans,sans-serif;font-size:16px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px}.btn-sheet-danger:active{background:var(--red-dark)}.btn-sheet-cancel{width:100%;padding:15px;background:var(--surface2);border:none;border-radius:14px;color:var(--text);font-family:DM Sans,sans-serif;font-size:16px;font-weight:600;cursor:pointer}.filter-row{display:flex;align-items:center;gap:8px}.filter-toggle{flex-shrink:0;background:var(--surface);border:1px solid var(--border);border-radius:8px;width:30px;height:26px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text);outline:none;transition:background .15s,border-color .15s}.filter-toggle:active{background:var(--surface2)}.filter-toggle .material-icons{font-size:16px}.filter-chips{display:flex;gap:8px;overflow-x:auto;padding:2px 4px 2px 0;scrollbar-width:none;flex:1;min-width:0;mask-image:linear-gradient(to left,transparent 0px,black 12px);-webkit-mask-image:linear-gradient(to left,transparent 0px,black 12px)}.filter-chips::-webkit-scrollbar{display:none}.filter-chip{flex-shrink:0;background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:2px 8px;font-size:11px;font-weight:700;cursor:pointer;color:var(--text);white-space:nowrap;transition:background .15s,border-color .15s;outline:none;text-transform:capitalize}.filter-chip.active{background:var(--red);border-color:var(--red);color:#fff}.chip-count{font-size:11px;opacity:.5;font-weight:700}.chip-star{font-size:7px;vertical-align:middle}.del-fab{position:absolute;top:5px;right:5px;background:#000000ab;border:none;border-radius:50%;width:28px;height:28px;display:flex;align-items:center;justify-content:center;color:#fff;cursor:pointer;opacity:0;transition:opacity .2s}.photo-thumb:hover .del-fab{opacity:1}.del-fab .material-icons{font-size:15px}.love-fab{position:absolute;bottom:5px;right:5px;background:#000000ab;border:none;border-radius:20px;padding:3px 7px;display:flex;align-items:center;gap:3px;color:#fff;cursor:pointer;font-size:11px;font-weight:700}.love-fab .material-icons{font-size:14px}.love-fab.loved .material-icons{color:#ff6b8a;animation:love-pop .35s ease}.love-burst{position:absolute;bottom:28px;right:8px;pointer-events:none}.love-heart{position:absolute;color:#ff6b8a;font-size:15px;opacity:0;animation:love-float .8s ease-out forwards}.lh-0{animation-delay:0s;--lh-x: -12px}.lh-1{animation-delay:.08s;--lh-x: 0px}.lh-2{animation-delay:.05s;--lh-x: 12px}.lh-3{animation-delay:.13s;--lh-x: -6px}.empty-state{text-align:center;padding:64px 20px;display:flex;flex-direction:column;align-items:center;gap:12px}.empty-icon-wrap{width:80px;height:80px;background:var(--red-light);border-radius:50%;display:flex;align-items:center;justify-content:center}.empty-icon-wrap .material-icons{font-size:38px;color:var(--red-dark);opacity:.5}.empty-title{font-family:Syne,sans-serif;font-size:18px;font-weight:700}.empty-sub{color:var(--muted);font-size:14px;max-width:220px;line-height:1.5}.lightbox-bg{position:fixed;inset:0;z-index:100;background:#000000f2;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:16px;animation:lb-bg-enter .3s ease both}.lb-topbar{width:100%;display:flex;align-items:center;justify-content:space-between;padding-bottom:12px;transition:opacity .2s,transform .2s}.lb-topbar-hidden{opacity:0;pointer-events:none;transform:translateY(-8px)}.lb-name{font-size:14px;color:#ffffffab;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:200px}.lb-actions{display:flex;gap:8px;margin-left:auto}.lb-btn{background:#ffffff18;border:none;border-radius:10px;padding:8px 14px;color:#fff;cursor:pointer;display:flex;align-items:center;gap:5px;font-family:DM Sans,sans-serif;font-size:13px;font-weight:500}.lb-btn.danger{background:#d42b2b99}.lb-btn .material-icons{font-size:16px}.lb-btn.loved .material-icons{color:#ff6b8a}.lb-img-wrap{position:relative;width:100%;display:flex;align-items:center;justify-content:center}.lb-img{width:100%;max-height:75vh;object-fit:contain;border-radius:12px;display:block;touch-action:none;transition:transform .05s;animation:lb-img-enter .38s cubic-bezier(.25,1,.5,1) both}.lb-arrow{position:absolute;top:50%;transform:translateY(-50%);background:#ffffff21;border:none;border-radius:50%;width:40px;height:40px;display:flex;align-items:center;justify-content:center;color:#fff;cursor:pointer;z-index:10}.lb-arrow-left{left:4px}.lb-arrow-right{right:4px}.lb-arrow .material-icons{font-size:26px}.lb-dots{display:flex;gap:5px;justify-content:center;padding-top:10px;min-height:14px}.lb-dot{width:6px;height:6px;border-radius:50%;background:#fff4;transition:background .2s,transform .2s}.lb-dot.active{background:#fff;transform:scale(1.3)}.lb-counter{font-size:12px;font-weight:700;color:#ffffff80;margin-right:2px}.lb-meta{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;padding-top:12px}.lb-meta-item{display:flex;align-items:center;gap:4px;background:#ffffff14;border-radius:20px;padding:5px 12px;font-size:12px;font-weight:500;color:#ffffffbf}.lb-meta-item .material-icons{font-size:13px;opacity:.7}.zoom-hint{position:absolute;bottom:20px;left:50%;transform:translate(-50%);background:#0000008c;color:#fff;font-size:13px;font-weight:600;padding:8px 16px;border-radius:50px;display:flex;align-items:center;gap:6px;pointer-events:none;animation:zoom-hint-fade 2.5s ease forwards;white-space:nowrap}.zoom-hint .material-icons{font-size:16px}.pull-indicator{display:flex;align-items:center;justify-content:center;overflow:hidden;transition:height .25s cubic-bezier(.34,1.56,.64,1)}.pull-inner{display:flex;flex-direction:column;align-items:center;gap:5px}.pull-pieces{display:flex;align-items:flex-end;gap:5px;height:28px}.pull-piece{display:inline-block;width:7px;height:11px;border-radius:2px;transition:transform .08s ease,opacity .08s ease}.pull-label{font-size:11px;font-weight:600;color:var(--muted);letter-spacing:.05em;transition:color .2s ease}.pull-ready .pull-label,.pull-refreshing .pull-label{color:var(--red)}.pull-ready .pull-piece{animation:piece-bounce .4s ease-in-out infinite alternate}.pull-ready .pull-piece:nth-child(2){animation-delay:.07s}.pull-ready .pull-piece:nth-child(3){animation-delay:.14s}.pull-ready .pull-piece:nth-child(4){animation-delay:.21s}.pull-ready .pull-piece:nth-child(5){animation-delay:.28s}.pull-ready .pull-piece:nth-child(6){animation-delay:.35s}.pull-refreshing .pull-piece{animation:piece-wave .7s ease-in-out infinite}.pull-refreshing .pull-piece:nth-child(1){animation-delay:0s}.pull-refreshing .pull-piece:nth-child(2){animation-delay:.12s}.pull-refreshing .pull-piece:nth-child(3){animation-delay:.24s}.pull-refreshing .pull-piece:nth-child(4){animation-delay:.36s}.pull-refreshing .pull-piece:nth-child(5){animation-delay:.48s}.pull-refreshing .pull-piece:nth-child(6){animation-delay:.6s}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:200;background:var(--text);border-radius:30px;padding:11px 18px;display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;color:#fff;box-shadow:0 6px 24px #00000040;white-space:nowrap;animation:slideup .2s ease;pointer-events:none}.toast.success .material-icons{color:#5dde9a}.toast.error .material-icons{color:#ff7070}.toast.warn .material-icons{color:#ffc060}.toast .material-icons{font-size:17px}.modal-bg{position:fixed;inset:0;z-index:150;background:#00000087;display:flex;align-items:flex-end;justify-content:center;animation:fadein .15s}.modal{background:var(--surface);border-radius:24px 24px 0 0;padding:28px 24px 36px;width:100%;max-width:480px;animation:slidesheet .2s ease}.modal-handle{width:40px;height:4px;background:var(--border);border-radius:2px;margin:0 auto 20px}.modal-title{font-family:Syne,sans-serif;font-size:19px;font-weight:700;margin-bottom:6px;text-align:center}.modal-sub{color:var(--muted);font-size:14px;text-align:center;margin-bottom:20px;line-height:1.5}.modal-img{width:72px;height:72px;object-fit:cover;border-radius:12px;display:block;margin:0 auto 16px}.modal-actions{display:flex;flex-direction:column;gap:10px}.name-overlay{position:fixed;inset:0;z-index:200;background:var(--bg-login);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:24px}.name-card{background:var(--surface);border-radius:24px;padding:32px 24px;width:100%;max-width:380px;display:flex;flex-direction:column;align-items:center;gap:14px;box-shadow:0 12px 40px #00000012}.name-icon-wrap{width:72px;height:72px;background:var(--red-light);border-radius:50%;display:flex;align-items:center;justify-content:center}.name-icon-wrap .material-icons{font-size:36px;color:var(--red)}.name-title{font-family:Syne,sans-serif;font-size:20px;font-weight:800;text-align:center}.name-sub{color:var(--muted);font-size:14px;text-align:center;line-height:1.6}.name-form{width:100%;display:flex;flex-direction:column;gap:10px;margin-top:6px}.name-input{width:100%;padding:14px 16px;border:1.5px solid var(--border);border-radius:14px;font-family:DM Sans,sans-serif;font-size:16px;color:var(--text);background:var(--surface2);outline:none;transition:border-color .2s}.name-input:focus{border-color:var(--red)}.name-input--error{border-color:var(--red)}.name-error{font-size:13px;color:var(--red-dark);font-weight:600;margin-top:-4px}.new-photos-banner{width:100%;background:var(--red);color:#fff;border:none;border-radius:var(--radius);padding:11px 16px;display:flex;align-items:center;gap:8px;font-family:DM Sans,sans-serif;font-size:13px;font-weight:600;cursor:pointer;animation:slidedown .3s ease}.new-photos-banner .material-icons{font-size:18px}.download-bar{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:480px;background:var(--surface);border-top:1px solid var(--border);padding:12px 16px;display:flex;align-items:center;gap:10px;z-index:99;box-shadow:0 -4px 20px #00000012}.download-bar-label{flex:1;font-size:14px;font-weight:500}.btn-delete-sel{background:var(--surface2);color:var(--red);box-shadow:none}.skeleton-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;border-radius:var(--radius);overflow:hidden}.skeleton-grid--large{grid-template-columns:1fr;gap:8px;border-radius:0}.skeleton-grid--large .skeleton-card{aspect-ratio:4/3;border-radius:var(--radius)}.skeleton-card{aspect-ratio:1;background:linear-gradient(90deg,var(--border) 25%,var(--surface2) 50%,var(--border) 75%);background-size:200% 100%;animation:skeleton-shimmer 1.4s ease-in-out infinite}.spin{animation:spin .75s linear infinite}@keyframes btn-shine{0%{left:-75%}55%,to{left:125%}}@keyframes ripple{to{transform:scale(2.5);opacity:0}}@keyframes fadein{0%{opacity:0}to{opacity:1}}@keyframes slideup{0%{opacity:0;transform:translate(-50%) translateY(10px)}}@keyframes slidedown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes slidesheet{0%{transform:translateY(40px);opacity:0}}@keyframes lb-bg-enter{0%{background:#0000}to{background:#000000f2}}@keyframes lb-img-enter{0%{transform:translate(var(--lb-tx, 0px),var(--lb-ty, 0px)) scale(var(--lb-scale, .88));border-radius:4px;opacity:.6}to{transform:translate(0) scale(1);border-radius:12px;opacity:1}}@keyframes piece-bounce{0%{margin-top:0}to{margin-top:-5px}}@keyframes piece-wave{0%,to{margin-top:0}50%{margin-top:-7px}}@keyframes love-pop{0%{transform:scale(1)}40%{transform:scale(1.7)}to{transform:scale(1)}}@keyframes love-float{0%{transform:translateY(0) translate(var(--lh-x)) scale(.5);opacity:1}to{transform:translateY(-44px) translate(var(--lh-x)) scale(1.1);opacity:0}}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes zoom-hint-fade{0%,60%{opacity:1}to{opacity:0}}@keyframes spin{to{transform:rotate(-360deg)}}.btn-ripple{position:absolute;border-radius:50%;background:#fff6;transform:scale(0);animation:ripple .5s ease-out forwards;pointer-events:none}
