:root{--sand: #faf8f4;--sand-2: #e8e2d8;--teal: #0d9488;--teal-2: #0f766e;--ink: #1c1917;--ink-2: #78716c;--white: #ffffff;--radius: 10px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:DM Sans,system-ui,sans-serif;font-weight:400;background:var(--sand);color:var(--ink);-webkit-font-smoothing:antialiased;min-height:100vh}#root{min-height:100vh}.brand{font-family:Playfair Display,Georgia,serif;font-size:1.5rem;font-weight:500;color:var(--ink);letter-spacing:-.02em;text-decoration:none}.header{position:sticky;top:0;z-index:100;background:#faf8f4e0;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--sand-2);padding:0 1.5rem;height:54px;display:flex;align-items:center;justify-content:space-between}.header-actions{display:flex;align-items:center;gap:.5rem}@media(max-width:600px){.header{padding:0 1rem}.filter-bar{padding:.5rem 1rem}.hide-mobile{display:none}.show-mobile{display:inline-flex}}@media(min-width:601px){.show-mobile{display:none}}.btn{font-family:inherit;font-size:.875rem;font-weight:500;border:none;border-radius:99px;padding:.45rem 1.1rem;cursor:pointer;transition:background .15s,transform .1s,box-shadow .15s,color .15s;text-decoration:none;display:inline-flex;align-items:center;gap:.35rem;line-height:1}.btn:active{transform:scale(.97)}.btn-primary{background:var(--teal);color:#fff}.btn-primary:hover{background:var(--teal-2);box-shadow:0 2px 10px #0d94884d}.btn-ghost{background:transparent;color:var(--ink-2)}.btn-ghost:hover{background:var(--sand-2);color:var(--ink)}.btn-outline{background:transparent;color:var(--teal);border:1.5px solid currentColor}.btn-outline:hover{background:var(--teal);color:#fff}.photo-grid{columns:5 160px;column-gap:5px;padding:5px}.photo-card{break-inside:avoid;margin-bottom:5px;border-radius:var(--radius);overflow:hidden;cursor:zoom-in;position:relative;background:var(--sand-2)}.photo-card img{display:block;width:100%;height:auto;transition:transform .35s ease}.photo-card:hover img{transform:scale(1.04)}.photo-card-overlay{position:absolute;bottom:0;left:0;right:0;padding:1.5rem .75rem .6rem;background:linear-gradient(to top,rgba(0,0,0,.6) 0%,transparent 100%);color:#fff;font-size:.78rem;line-height:1.4;opacity:0;transition:opacity .2s}.photo-card:hover .photo-card-overlay{opacity:1}.photo-card-badge{position:absolute;top:.4rem;right:.4rem;background:#00000073;color:#fff;font-size:.62rem;padding:.15rem .5rem;border-radius:99px;letter-spacing:.06em;text-transform:uppercase}.photo-card-skeleton{break-inside:avoid;margin-bottom:5px;border-radius:var(--radius);aspect-ratio:3/4;background:linear-gradient(90deg,var(--sand-2) 25%,#ddd6ca 50%,var(--sand-2) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:8rem 2rem;color:var(--ink-2);text-align:center}.empty-icon{font-size:2.5rem;opacity:.3}.empty p{font-size:.95rem;font-weight:300}.upload-page{max-width:460px;margin:3rem auto;padding:0 1.5rem 4rem}.upload-dropzone{border:2px dashed var(--sand-2);border-radius:var(--radius);padding:2.5rem 2rem;text-align:center;cursor:pointer;transition:border-color .2s,background .2s,color .2s;background:var(--white);color:var(--ink-2);font-size:.9rem}.upload-dropzone:hover,.upload-dropzone.drag-over{border-color:var(--teal);background:#0d94880a;color:var(--teal)}.upload-dropzone-icon{font-size:2rem;margin-bottom:.5rem;opacity:.5}.upload-form{display:flex;flex-direction:column;gap:1.25rem;margin-top:1.5rem}.form-field{display:flex;flex-direction:column;gap:.35rem}.form-label{font-size:.75rem;font-weight:500;color:var(--ink-2);text-transform:uppercase;letter-spacing:.07em}.form-input{font-family:inherit;font-size:.95rem;padding:.6rem .85rem;border:1.5px solid var(--sand-2);border-radius:var(--radius);background:var(--white);color:var(--ink);outline:none;transition:border-color .15s}.form-input:focus{border-color:var(--teal)}.toggle-row{display:flex;align-items:center;justify-content:space-between;padding:.85rem 0;border-top:1px solid var(--sand-2);border-bottom:1px solid var(--sand-2)}.toggle-text .toggle-label{font-size:.9rem}.toggle-text .toggle-sub{font-size:.78rem;color:var(--ink-2);margin-top:.15rem}.toggle{position:relative;width:44px;height:26px;flex-shrink:0}.toggle input{opacity:0;width:0;height:0}.toggle-track{position:absolute;inset:0;background:var(--sand-2);border-radius:99px;cursor:pointer;transition:background .2s}.toggle input:checked+.toggle-track{background:var(--teal)}.toggle-track:after{content:"";position:absolute;left:3px;top:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 4px #0003;transition:transform .2s}.toggle input:checked+.toggle-track:after{transform:translate(18px)}.status-msg{font-size:.85rem;color:var(--teal);text-align:center;padding:.5rem}.login-screen{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem;background:linear-gradient(150deg,var(--sand) 55%,#cef0eb 100%)}.login-tagline{font-size:.95rem;color:var(--ink-2);font-weight:300;font-style:italic}.filter-bar{display:flex;align-items:center;gap:.4rem;padding:.6rem 1rem;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--sand-2);background:#faf8f4e0;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);position:sticky;top:54px;z-index:99}.filter-bar::-webkit-scrollbar{display:none}.filter-pill{font-family:inherit;font-size:.8rem;font-weight:500;white-space:nowrap;padding:.3rem .85rem;border-radius:99px;border:1.5px solid var(--sand-2);background:var(--white);color:var(--ink-2);cursor:pointer;transition:background .15s,border-color .15s,color .15s;line-height:1.4}.filter-pill:hover{border-color:var(--teal);color:var(--teal)}.filter-pill.active{background:var(--teal);border-color:var(--teal);color:#fff}.heart-btn{position:absolute;bottom:.45rem;right:.45rem;width:30px;height:30px;border-radius:7px;border:none;background:#00000059;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#ffffffb3;font-size:.9rem;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;opacity:0;transition:opacity .15s,background .15s,color .15s,transform .1s;line-height:1}.photo-card:hover .heart-btn{opacity:1}.heart-btn.liked{opacity:1;color:#f87171;background:#f8717140}.heart-btn:hover{transform:scale(1.1)}.heart-count{font-size:.55rem;line-height:1}.person-grid{display:flex;flex-wrap:wrap;gap:1rem}.person-card{display:flex;flex-direction:column;align-items:center;gap:.4rem;padding:1.25rem 1rem;border-radius:var(--radius);background:var(--white);border:1px solid var(--sand-2);text-decoration:none;color:var(--ink);width:120px;transition:box-shadow .15s,transform .15s}.person-card:hover{box-shadow:0 4px 16px #00000014;transform:translateY(-2px)}.person-avatar{width:56px;height:56px;border-radius:50%;background:var(--sand-2);display:flex;align-items:center;justify-content:center;font-family:Playfair Display,serif;font-size:1.4rem;color:var(--ink-2)}.person-name{font-size:.85rem;font-weight:500;text-align:center}.person-count{font-size:.72rem;color:var(--ink-2)}@keyframes fadeUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.fade-up{animation:fadeUp .25s ease both}
