html,body,#root{width:100%;height:100%;margin:0;padding:0;overflow:hidden}body{-webkit-font-smoothing:antialiased;background:var(--color-bg,#fdf6f0);color:var(--color-text,#4a3040);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}button{font-family:inherit}.login-root{background:var(--color-bg);justify-content:center;align-items:center;min-height:100dvh;padding:1.5rem;display:flex}.login-card{flex-direction:column;align-items:center;gap:.5rem;width:100%;max-width:340px;display:flex}.login-heart{color:var(--color-primary);font-size:2.5rem;line-height:1}.login-title{color:var(--color-text);letter-spacing:-.02em;margin:0;font-size:1.8rem;font-weight:700}.login-sub{color:var(--color-text-muted);margin:0 0 1rem;font-size:.875rem}.login-form{flex-direction:column;gap:.75rem;width:100%;display:flex}.login-form input{border:1.5px solid var(--color-overlay);background:var(--color-surface);width:100%;color:var(--color-text);box-sizing:border-box;border-radius:14px;outline:none;padding:.875rem 1rem;font-size:1rem;transition:border-color .2s}.login-form input:focus{border-color:var(--color-primary)}.login-form button{background:var(--color-primary);color:#fff;cursor:pointer;border:none;border-radius:14px;padding:.9rem;font-size:1rem;font-weight:600;transition:background .2s,opacity .2s}.login-form button:disabled{opacity:.6;cursor:not-allowed}.login-error{color:#e05050;text-align:center;margin:0;font-size:.875rem}.camera-root{background:#000;flex-direction:column;width:100%;height:100dvh;display:flex;position:relative;overflow:hidden}.camera-video{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.camera-video.mirrored{transform:scaleX(-1)}.camera-canvas{display:none}.camera-flash{opacity:.8;z-index:20;pointer-events:none;background:#fff;animation:.2s ease-out forwards flash;position:absolute;inset:0}@keyframes flash{0%{opacity:.8}to{opacity:0}}.camera-rec-indicator{top:calc(env(safe-area-inset-top) + 1rem);-webkit-backdrop-filter:blur(6px);z-index:15;background:#00000073;border-radius:100px;align-items:center;gap:.4rem;padding:.35rem .85rem;display:flex;position:absolute;left:50%;transform:translate(-50%)}.camera-rec-dot{background:#ff3b30;border-radius:50%;flex-shrink:0;width:8px;height:8px;animation:1s ease-in-out infinite rec-pulse}@keyframes rec-pulse{0%,to{opacity:1}50%{opacity:.3}}.camera-rec-time{color:#fff;font-variant-numeric:tabular-nums;letter-spacing:.05em;font-size:.85rem}.camera-controls{bottom:calc(env(safe-area-inset-bottom) + 5.5rem);z-index:10;justify-content:space-between;align-items:center;padding:0 2rem;display:flex;position:absolute;left:0;right:0}.camera-btn-shutter{cursor:pointer;background:#fff;border:4px solid #ffffff80;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:72px;height:72px;transition:transform .1s,background .15s,border-color .15s;display:flex;box-shadow:0 0 0 2px #ffffff4d}.camera-btn-shutter:active{transform:scale(.92)}.camera-btn-shutter:disabled{opacity:.4;cursor:not-allowed}.camera-btn-shutter.video-mode{background:0 0;border:4px solid #ff3b30}.shutter-inner{background:#ff3b30;border-radius:50%;width:52px;height:52px;transition:border-radius .2s,width .2s,height .2s}.camera-btn-shutter.recording .shutter-inner{border-radius:6px;width:28px;height:28px}.camera-btn-icon{color:#fff;cursor:pointer;background:#00000059;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;transition:background .2s;display:flex}.camera-btn-icon svg{width:22px;height:22px}.camera-btn-icon:active{background:#0009}.camera-mode-toggle{bottom:calc(env(safe-area-inset-bottom) + 1.5rem);-webkit-backdrop-filter:blur(8px);z-index:10;background:#00000059;border-radius:100px;gap:.25rem;padding:.25rem;display:flex;position:absolute;left:50%;transform:translate(-50%)}.mode-btn{color:#ffffffa6;cursor:pointer;letter-spacing:.03em;background:0 0;border:none;border-radius:100px;padding:.35rem 1.1rem;font-size:.8rem;font-weight:500;transition:background .2s,color .2s}.mode-btn.active{color:#000;background:#fff}.camera-error{color:#fffc;text-align:center;background:#000c;justify-content:center;align-items:center;padding:2rem;font-size:.95rem;display:flex;position:absolute;inset:0}.camera-preview{background:#000;flex-direction:column;display:flex;position:absolute;inset:0}.camera-preview-img,.camera-preview-video{object-fit:cover;flex:1;width:100%;min-height:0}.camera-preview-actions{padding:1.5rem 2rem calc(env(safe-area-inset-bottom) + 1.5rem);background:linear-gradient(#0000,#0009);justify-content:space-between;align-items:center;display:flex;position:absolute;bottom:0;left:0;right:0}.camera-upload-error{color:#fff;text-align:center;z-index:5;background:#c83232d9;border-radius:10px;margin:0;padding:.6rem 1rem;font-size:.85rem;position:absolute;top:1rem;left:1rem;right:1rem}.camera-date-strip{bottom:calc(env(safe-area-inset-bottom) + 5.5rem);-webkit-backdrop-filter:blur(10px);color:#ffffffe6;z-index:5;background:#0000008c;border:1px solid #ffffff26;border-radius:14px;align-items:center;gap:.5rem;padding:.65rem .9rem;font-size:.82rem;display:flex;position:absolute;left:1rem;right:1rem}.camera-date-strip span{white-space:nowrap;flex:1}.camera-date-strip input[type=date]{color:#fff;cursor:pointer;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:#ffffff1f;border:1px solid #ffffff40;border-radius:8px;outline:none;padding:.3rem .5rem;font-size:.82rem}.camera-btn-discard{color:#fff;cursor:pointer;background:#0006;border:1.5px solid #ffffff4d;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;font-size:1.2rem;display:flex}.camera-btn-send{background:var(--color-primary);color:#fff;cursor:pointer;border:none;border-radius:100px;padding:.75rem 2rem;font-size:1rem;font-weight:600;transition:opacity .2s}.camera-btn-send:disabled{opacity:.6}.camera-multi-grid{padding-bottom:calc(env(safe-area-inset-bottom) + 5rem);flex:1;grid-template-columns:repeat(3,1fr);align-content:start;gap:2px;display:grid;overflow-y:auto}.camera-multi-thumb{aspect-ratio:1;background:#111;overflow:hidden}.camera-multi-media{object-fit:cover;width:100%;height:100%;display:block}.camera-upload-progress-wrap{bottom:calc(env(safe-area-inset-bottom) + 5.5rem);z-index:5;position:absolute;left:1.25rem;right:1.25rem}.camera-upload-progress-label{color:#ffffffe6;text-align:center;margin:0 0 .4rem;font-size:.85rem}.camera-upload-progress-track{background:#fff3;border-radius:2px;height:4px;overflow:hidden}.camera-upload-progress-fill{background:var(--color-primary);border-radius:2px;height:100%;transition:width .3s}.feed-root{background:var(--color-bg);padding-bottom:calc(env(safe-area-inset-bottom) + 1rem);flex:1;overflow-y:auto}.feed-grid{grid-template-columns:repeat(3,1fr);gap:2px;display:grid}.feed-cell{aspect-ratio:1;background:var(--color-overlay);cursor:pointer;border:none;padding:0;overflow:hidden}.feed-cell img,.feed-cell .feed-video-thumb{object-fit:cover;width:100%;height:100%;transition:transform .2s;display:block}.feed-cell:active img,.feed-cell:active .feed-video-thumb{transform:scale(.97)}.feed-video-badge{color:#ffffffe6;text-shadow:0 1px 4px #0009;pointer-events:none;font-size:1.1rem;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.feed-cell{position:relative}.feed-empty{height:50vh;color:var(--color-text-muted);text-align:center;justify-content:center;align-items:center;padding:2rem;font-size:.95rem;display:flex}.feed-lightbox{z-index:50;background:#000000eb;flex-direction:column;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.feed-lightbox img{object-fit:contain;border-radius:12px;max-width:100%;max-height:80dvh}.feed-lightbox-video{background:#000;border-radius:12px;max-width:100%;max-height:80dvh}.feed-lightbox-footer{justify-content:space-between;align-items:center;gap:1rem;width:100%;max-width:480px;margin-top:1rem;display:flex}.feed-lightbox-meta{color:#fff9;margin:0;font-size:.85rem}.feed-delete-btn{color:#fff9;cursor:pointer;white-space:nowrap;background:0 0;border:1.5px solid #ffffff40;border-radius:100px;flex-shrink:0;padding:.4rem .85rem;font-size:.82rem;transition:background .2s,border-color .2s,color .2s}.feed-delete-btn:hover{color:#ff7878e6;border-color:#ff505099}.feed-delete-btn.confirming{color:#fff;background:#c82828bf;border-color:#0000}.feed-delete-btn:disabled{opacity:.5;cursor:not-allowed}.comp-root{background:var(--color-bg);flex-direction:column;flex:1;display:flex;overflow-y:auto}.comp-tabs{border-bottom:1px solid var(--color-overlay);gap:.5rem;padding:1rem 1rem .5rem;display:flex}.comp-tab{border:1.5px solid var(--color-overlay);color:var(--color-text-muted);cursor:pointer;background:0 0;border-radius:100px;padding:.4rem 1rem;font-size:.875rem;transition:all .2s}.comp-tab.active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.comp-list{flex-direction:column;gap:.75rem;padding:.75rem 1rem;display:flex}.comp-item{background:var(--color-surface);cursor:pointer;text-align:left;border:none;border-radius:16px;align-items:center;gap:.75rem;padding:.75rem;transition:transform .15s;display:flex;box-shadow:0 1px 4px #0000000f}.comp-item:active{transform:scale(.98)}.comp-thumb-row{border-radius:8px;flex-shrink:0;gap:2px;display:flex;overflow:hidden}.comp-thumb-row img{object-fit:cover;width:48px;height:48px}.comp-info{flex-direction:column;flex:1;gap:.2rem;display:flex}.comp-item-label{color:var(--color-text);font-size:.95rem;font-weight:600}.comp-count{color:var(--color-text-muted);font-size:.8rem}.comp-play{color:var(--color-primary);flex-shrink:0;font-size:1rem}.comp-empty{text-align:center;color:var(--color-text-muted);padding:3rem 2rem;font-size:.95rem}.rel-card{cursor:pointer;text-align:left;background:linear-gradient(135deg,#ffd23c21,#ff8c2812);border:1px solid #ffc85038;border-radius:20px;justify-content:space-between;align-items:center;margin:.75rem 1rem .25rem;padding:.9rem 1rem .9rem .875rem;transition:transform .15s;display:flex}.rel-card:active{transform:scale(.98)}.rel-card-left{align-items:center;gap:.75rem;display:flex}.rel-card-heart{font-size:2rem;line-height:1}.rel-card-info{flex-direction:column;gap:.2rem;display:flex}.rel-card-title{color:var(--color-text);font-size:.95rem;font-weight:600}.rel-card-count{color:var(--color-text-muted);font-size:.8rem}.show-root{z-index:100;background:#000;width:100vw;height:100dvh;position:fixed;top:0;left:0;overflow:hidden}.show-slot{width:100%;height:100%;position:absolute;top:0;left:0}.show-slot--back{z-index:1}.show-slot--front{z-index:2}.show-slot img,.show-slot video{object-fit:contain;object-position:center center;width:100%;height:100%;display:block;position:absolute;top:0;left:0}.show-vignette{z-index:2;pointer-events:none;background:radial-gradient(#0000 40%,#0000008c 100%),linear-gradient(#00000040 0%,#0000 25% 65%,#00000080 100%);position:absolute;inset:0}.show-title-card{z-index:10;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:.5rem;animation:3.2s forwards title-card-anim;display:flex;position:absolute;inset:0}@keyframes title-card-anim{0%{opacity:0;transform:translateY(14px)}18%{opacity:1;transform:translateY(0)}72%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-8px)}}.show-title-eyebrow{color:#ffffff8c;letter-spacing:.35em;text-transform:uppercase;margin:0;font-size:.7rem;font-weight:400}.show-title-label{color:#fff;letter-spacing:.04em;text-align:center;text-shadow:0 2px 20px #00000080;margin:0;padding:0 2rem;font-size:clamp(1.8rem,8vw,2.8rem);font-weight:300}.show-progress{z-index:5;background:#ffffff26;height:2px;position:absolute;bottom:0;left:0;right:0}.show-progress-fill{background:#ffffffb3;height:100%;animation-name:progress-fill;animation-timing-function:linear;animation-fill-mode:forwards}@keyframes progress-fill{0%{width:0}to{width:100%}}.show-counter{bottom:calc(env(safe-area-inset-bottom) + .75rem);color:#ffffff73;letter-spacing:.05em;z-index:5;pointer-events:none;margin:0;font-size:.75rem;position:absolute;right:1.25rem}.show-video{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.comp-thumb-video{object-fit:cover;width:48px;height:48px}.show-close{top:calc(env(safe-area-inset-top) + 1rem);z-index:10;color:#ffffffd9;cursor:pointer;-webkit-backdrop-filter:blur(4px);background:#00000059;border:1px solid #fff3;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-size:.9rem;transition:background .2s;display:flex;position:absolute;right:1rem}.show-close:hover{background:#0000008c}.fnl-root{z-index:200;background:#111;position:fixed;inset:0;overflow:hidden}.fnl-stage{transition:opacity 1.2s;animation:3s cubic-bezier(.22,1,.36,1) forwards fnl-zoom-out;position:absolute;inset:0}.fnl-stage--fading,.fnl-stage--title{opacity:0}@keyframes fnl-zoom-out{0%{transform:scale(1.5)}to{transform:scale(1)}}.fnl-card{z-index:calc(var(--i) + 1);animation:fnl-float var(--float-dur,3.5s) ease-in-out calc(var(--i) * 30ms + .56s) infinite;position:absolute}@keyframes fnl-float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.fnl-card-inner{width:100%;transform:rotate(var(--rot,0deg));animation:fnl-pop .56s cubic-bezier(.34, 1.56, .64, 1) calc(var(--i) * 40ms) both;background:#f5f0eb;border-radius:4px;padding:4px 4px 20px;box-shadow:0 10px 32px #000000a6,0 2px 8px #00000059}@keyframes fnl-pop{0%{opacity:0;transform:rotate(var(--rot,0deg)) scale(.18)}to{opacity:1;transform:rotate(var(--rot,0deg)) scale(1)}}.fnl-photo-wrap{aspect-ratio:1;background:#ccc;border-radius:2px;overflow:hidden}.fnl-media{object-fit:cover;object-position:center 20%;width:100%;height:100%;display:block}.fnl-blackout{opacity:0;z-index:50;pointer-events:none;background:#000;transition:opacity 1.2s;position:absolute;inset:0}.fnl-blackout--in{opacity:1}.fnl-titlecard{z-index:60;opacity:0;pointer-events:none;justify-content:center;align-items:center;transition:opacity .9s;display:flex;position:absolute;inset:0}.fnl-titlecard--in{opacity:1}.fnl-period{color:#fff;letter-spacing:.02em;text-align:center;text-shadow:0 2px 32px #0009;margin:0;padding:0 2rem;font-family:Georgia,serif;font-size:clamp(2rem,9vw,3.2rem);font-weight:400}.music-root{background:var(--color-bg);flex-direction:column;flex:1;gap:1rem;padding:1.5rem 1rem;display:flex;overflow-y:auto}.music-header h2{color:var(--color-text);margin:0 0 .25rem;font-size:1.25rem}.music-header p{color:var(--color-text-muted);margin:0;font-size:.875rem}.music-upload-btn{background:var(--color-primary);color:#fff;cursor:pointer;border:none;border-radius:14px;padding:.875rem;font-size:1rem;font-weight:600;transition:opacity .2s}.music-upload-btn:disabled{opacity:.6}.music-list{flex-direction:column;gap:.5rem;display:flex}.music-item{background:var(--color-surface);border-radius:12px;align-items:center;gap:.75rem;padding:.75rem 1rem;display:flex;box-shadow:0 1px 4px #0000000f}.music-play{background:var(--color-overlay);cursor:pointer;width:36px;height:36px;color:var(--color-primary);border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.9rem;display:flex}.music-name{color:var(--color-text);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:.9rem;overflow:hidden}.music-delete{color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:.25rem;font-size:1rem}.music-empty{text-align:center;color:var(--color-text-muted);padding:2rem;font-size:.95rem}.navbar{background:var(--color-surface);border-top:1px solid var(--color-overlay);padding:.5rem 0 calc(env(safe-area-inset-bottom) + .5rem);flex-shrink:0;justify-content:space-around;align-items:center;display:flex}.nav-item{color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;border-radius:10px;flex-direction:column;align-items:center;gap:.2rem;padding:.4rem .75rem;font-size:.7rem;text-decoration:none;transition:color .2s;display:flex}.nav-item svg{width:22px;height:22px}.nav-item.active{color:var(--color-primary)}.nav-logout{color:var(--color-text-muted)}*,:before,:after{box-sizing:border-box}:root{--color-bg:#fdf6f0;--color-surface:#fff8f5;--color-primary:#e8a0b0;--color-primary-dark:#c97a90;--color-accent:#a8d5a2;--color-text:#4a3040;--color-text-muted:#9a7888;--color-overlay:#e8a0b026;-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}html,body,#root{height:100%;margin:0;padding:0;overflow:hidden}.app-shell{flex-direction:column;height:100dvh;display:flex;overflow:hidden}.app-shell>:first-child{flex:1;min-height:0}.app-loading{background:var(--color-bg);height:100dvh;color:var(--color-primary);justify-content:center;align-items:center;font-size:3rem;animation:1.5s ease-in-out infinite pulse;display:flex}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}
