@import"https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap";:root{font-family:Poppins,system-ui,-apple-system,sans-serif;line-height:1.5;color:#3b2a3a;-webkit-font-smoothing:antialiased}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{min-height:100%}body{background:radial-gradient(1300px 700px at 12% -6%,#fce7f3 0%,transparent 60%),radial-gradient(1100px 650px at 108% 8%,#ece6ff 0%,transparent 55%),linear-gradient(165deg,#fdf2f8,#f6ecff 48%,#ede9fe);background-attachment:fixed}button{font-family:inherit;cursor:pointer}img{display:block;max-width:100%}.app{max-width:480px;margin:0 auto;padding:20px 16px 48px}.hero{text-align:center;padding:10px 0 18px}.logo{width:96px;height:96px;border-radius:50%;object-fit:cover;margin:0 auto;display:block;border:3px solid #fff;box-shadow:0 0 0 5px #ec48992e,0 10px 26px #b478b452}.welcome{margin-top:12px;font-size:17px;font-weight:600;background:linear-gradient(120deg,#db2777,#8b5cf6);-webkit-background-clip:text;background-clip:text;color:transparent}.hero-title{font-size:34px;font-weight:700;letter-spacing:-.5px;background:linear-gradient(120deg,#db2777,#8b5cf6);-webkit-background-clip:text;background-clip:text;color:transparent}.hero-sub{color:#a78ba8;font-size:14px;margin-top:2px}.chips{display:flex;gap:8px;overflow-x:auto;padding:4px 0 14px;scrollbar-width:none;-webkit-overflow-scrolling:touch}.chips::-webkit-scrollbar{display:none}.chip{flex:0 0 auto;border:none;padding:9px 15px;border-radius:999px;background:#fffc;color:#6b4a6b;font-size:13.5px;font-weight:500;box-shadow:0 2px 10px #b478b41f;transition:transform .15s ease;white-space:nowrap}.chip:active{transform:scale(.95)}.chip.on{background:linear-gradient(120deg,#ec4899,#a855f7);color:#fff;box-shadow:0 4px 14px #ec489959}.chip.add{background:#fff;border:1.5px dashed #d8b4fe;color:#a855f7;box-shadow:none}.cats{display:flex;gap:10px;overflow-x:auto;padding:4px 0 16px;scrollbar-width:none;-webkit-overflow-scrolling:touch}.cats::-webkit-scrollbar{display:none}.cat{flex:0 0 auto;min-width:100px;position:relative;border:none;border-radius:18px;background:color-mix(in srgb,var(--catc, #e9d5ff) 22%,#fff);padding:14px 8px 12px;display:flex;align-items:center;justify-content:center;box-shadow:0 3px 12px #b478b41a;transition:transform .15s ease}.cat:active{transform:scale(.96)}.cat.on{outline:2px solid var(--catc, #a855f7);box-shadow:0 6px 18px color-mix(in srgb,var(--catc, #a855f7) 40%,transparent)}.cat.all{--catc: #a855f7}.cat.add{background:#fff;border:1.5px dashed #d8b4fe;box-shadow:none}.cat-main{display:flex;flex-direction:column;align-items:center;gap:4px;width:100%;border:none;background:transparent;padding:0}.cat-emoji{font-size:26px;line-height:1}.cat-name{font-size:12.5px;font-weight:600;color:#4a3048;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.cat-count{font-size:10.5px;color:#8a6a8a;background:#fffb;border-radius:999px;padding:1px 8px}.cat-del{position:absolute;top:6px;right:6px;width:20px;height:20px;border-radius:50%;border:none;background:#00000030;color:#fff;font-size:13px;line-height:1}.grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.card{position:relative;background:#fff;border-radius:18px;overflow:hidden;box-shadow:0 6px 20px #b478b424;transition:transform .15s ease}.card:active{transform:scale(.98)}.card-img{position:relative;aspect-ratio:3 / 3.4;display:flex;align-items:center;justify-content:center;cursor:pointer}.card-img img{width:100%;height:100%;object-fit:cover}.card-img .ph{font-size:44px;opacity:.7}.del{position:absolute;top:8px;right:8px;width:26px;height:26px;border-radius:50%;border:none;background:#00000040;color:#fff;font-size:16px;line-height:1;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.card-body{padding:10px 12px 12px}.card-body h3{font-size:14px;font-weight:600;color:#3b2a3a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-body p{font-size:12px;color:#9b7a9b;margin-top:2px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.card.ghost{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:170px;background:#ffffff80;border:2px dashed #e9d5ff;box-shadow:none;color:#a855f7;font-size:13px;font-weight:500}.card.ghost .plus{font-size:34px;font-weight:300}.empty{text-align:center;padding:60px 24px}.empty.small{padding:34px 24px}.empty-emoji{font-size:52px;margin-bottom:10px}.empty h2{font-size:20px;color:#3b2a3a}.empty p{color:#9b7a9b;font-size:14px;margin:8px 0 18px}.cta{border:none;padding:12px 22px;border-radius:999px;background:linear-gradient(120deg,#ec4899,#a855f7);color:#fff;font-weight:600;font-size:14px;box-shadow:0 4px 16px #ec489959}.loading{text-align:center;color:#a78ba8;padding:40px}.overlay{position:fixed;inset:0;background:#3c1e3c66;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:flex-end;justify-content:center;z-index:50;animation:fade .2s ease}.sheet{background:#fff;width:100%;max-width:480px;border-radius:24px 24px 0 0;padding:20px 20px 30px;animation:up .25s ease}.sheet h2{font-size:18px;font-weight:600;margin-bottom:16px}.field{margin-bottom:14px}.field label{display:block;font-size:12.5px;font-weight:500;color:#8a6a8a;margin-bottom:5px}.field input[type=text],.field textarea{width:100%;border:1.5px solid #eedcf2;border-radius:12px;padding:11px 13px;font-size:14px;font-family:inherit;color:#3b2a3a;background:#fdf8fe;outline:none;transition:border-color .15s}.field input[type=text]:focus,.field textarea:focus{border-color:#ec4899}.field textarea{resize:none;min-height:70px}.emoji-row,.color-row{display:flex;flex-wrap:wrap;gap:7px}.emoji-row button{width:40px;height:40px;border-radius:12px;border:1.5px solid #eedcf2;background:#fdf8fe;font-size:20px}.emoji-row button.sel{border-color:#ec4899;background:#fdf2f8}.color-row button{width:30px;height:30px;border-radius:50%;border:2px solid transparent}.color-row button.sel{border-color:#3b2a3a}.pick{position:relative;display:flex;align-items:center;justify-content:center;border:2px dashed #e9d5ff;border-radius:16px;min-height:170px;color:#a855f7;font-size:13px;overflow:hidden;background:#fdf8fe}.pick img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.pick input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer}.sheet-actions{display:flex;gap:10px;margin-top:6px}.btn{flex:1;border:none;padding:13px;border-radius:14px;font-weight:600;font-size:14px}.btn.ghost-b{background:#f3e8ff;color:#8a6a8a}.btn.primary{background:linear-gradient(120deg,#ec4899,#a855f7);color:#fff;box-shadow:0 4px 16px #ec489959}.btn:disabled{opacity:.5;cursor:not-allowed}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes up{0%{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}.lightbox{position:fixed;inset:0;background:#1e0f1eeb;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:100;display:flex;flex-direction:column;align-items:center;justify-content:center;animation:fade .2s ease}.lb-close{position:absolute;top:14px;right:16px;width:42px;height:42px;border-radius:50%;border:none;background:#ffffff26;color:#fff;font-size:26px;line-height:1;z-index:3}.lb-stage{max-width:94vw;max-height:74vh;display:flex;align-items:center;justify-content:center}.lb-stage img{max-width:94vw;max-height:74vh;object-fit:contain;border-radius:14px}.lb-ph{font-size:90px;padding:40px;border-radius:14px;opacity:.85}.lb-info{text-align:center;color:#fff;padding:14px 20px 4px;max-width:90vw}.lb-info h3{font-size:17px;font-weight:600}.lb-info p{font-size:13.5px;color:#e8d8ec;margin-top:3px}.lb-count{display:inline-block;margin-top:8px;font-size:12px;color:#cbb0d0}.lb-nav{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:50%;border:none;background:#ffffff1f;color:#fff;font-size:28px;line-height:1;z-index:3}.lb-prev{left:12px}.lb-next{right:12px}.confirm{background:#fff;border-radius:22px;padding:26px 22px 20px;text-align:center;max-width:300px;width:90%;box-shadow:0 18px 50px #78468259;animation:up .22s ease}.confirm-emoji{font-size:38px;margin-bottom:8px}.confirm-text{font-size:15px;color:#4a3048;font-weight:500;margin:0 0 18px;line-height:1.45}.btn.danger{background:#e11d48;color:#fff}.btn.danger:active{background:#be123c}
