:root{--ivory: #faf6f1;--ivory-deep: #f3ece3;--ink: #4a3f38;--ink-soft: #8a7c70;--rose: #a86878;--rose-deep: #8f5262;--gold: #b89a5e;--line: #e5dbcd;--shadow: 0 3px 18px rgba(74, 63, 56, .09);--radius: 14px;--font: "Montserrat", "Segoe UI", system-ui, sans-serif;--font-display: "Cormorant Garamond", "Georgia", serif}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{font-family:var(--font);background:radial-gradient(circle at 15% 0%,rgba(184,154,94,.07),transparent 45%),radial-gradient(circle at 90% 10%,rgba(168,104,120,.06),transparent 40%),var(--ivory);color:var(--ink);min-height:100vh}img{max-width:100%}button{font-family:inherit;cursor:pointer}.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.55rem 1.2rem;border-radius:999px;border:1px solid transparent;font-size:.92rem;letter-spacing:.03em;text-decoration:none;transition:background .15s ease,color .15s ease,border-color .15s ease}.btn-primary{background:var(--rose);color:#fff}.btn-primary:hover{background:var(--rose-deep)}.btn-primary:disabled{opacity:.5;cursor:default}.btn-outline{border-color:var(--gold);color:var(--ink);background:transparent}.btn-outline:hover{background:#b89a5e1f}.btn-danger{background:#a03030;color:#fff}.btn-danger:hover{background:#872525}.btn-danger:disabled,.btn:disabled{opacity:.55;cursor:default}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;border:none;background:#ffffff29;color:#fff;text-decoration:none;transition:background .15s ease}.icon-btn:hover{background:#ffffff52}.icon-btn-dark{background:var(--ivory-deep);color:var(--ink)}.icon-btn-dark:hover{background:var(--line)}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.7rem clamp(.8rem,3vw,2rem);background:#faf6f1eb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}.topbar-slogan{display:flex;align-items:center;gap:.55rem;color:var(--rose);min-width:0}.topbar-slogan h1{font-family:var(--font-display);font-size:clamp(1.35rem,3vw,1.85rem);font-style:italic;font-weight:500;letter-spacing:.02em;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-actions{display:flex;align-items:center;gap:.6rem;flex-shrink:0}.topbar-user{font-size:.88rem;color:var(--ink-soft);background:var(--ivory-deep);border:1px solid var(--line);border-radius:999px;padding:.35rem .85rem;max-width:9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (max-width: 480px){.topbar-user{max-width:5.5rem;font-size:.8rem}}@media (max-width: 640px){.btn-label{display:none}.topbar .btn{padding:.55rem .7rem}}.filterbar{display:flex;align-items:center;flex-wrap:wrap;gap:.9rem;padding:.8rem clamp(.8rem,3vw,2rem) 0;font-size:.92rem;color:var(--ink-soft)}.filterbar select{font-family:inherit;font-size:.92rem;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:8px;padding:.45rem .6rem;max-width:60vw}.filterbar-toggle{display:inline-flex;align-items:center;gap:.4rem;cursor:pointer;-webkit-user-select:none;user-select:none}.filterbar-toggle input{accent-color:var(--rose)}.gallery{padding:1rem clamp(.8rem,3vw,2rem) 4.5rem}.gallery-group-title{font-family:var(--font-display);font-style:italic;font-weight:500;font-size:1.55rem;letter-spacing:.02em;color:var(--rose);margin:1.8rem 0 .9rem;padding-bottom:.35rem;border-bottom:1px solid var(--gold)}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}@media (max-width: 480px){.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}}.tile{position:relative;aspect-ratio:1;border-radius:var(--radius);overflow:hidden;cursor:pointer;background:var(--ivory-deep);box-shadow:var(--shadow);border:1px solid rgba(184,154,94,.28)}.tile img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s ease}.tile:hover img{transform:scale(1.045)}.tile-overlay{position:absolute;inset:auto 0 0 0;display:flex;align-items:flex-end;justify-content:space-between;gap:.4rem;padding:.55rem .6rem;background:linear-gradient(transparent,#231914c7);color:#fff;opacity:0;transition:opacity .2s ease}.tile:hover .tile-overlay,.tile:focus-within .tile-overlay{opacity:1}@media (hover: none){.tile-overlay{opacity:1;background:linear-gradient(transparent,#23191499)}}.tile-select{position:absolute;top:8px;left:8px;z-index:2;width:26px;height:26px;border-radius:50%;border:2px solid rgba(255,255,255,.9);background:#23191459;color:#fff;display:inline-flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s ease,background .15s ease}.tile:hover .tile-select,.tile-select-on{opacity:1}@media (hover: none){.tile-select{opacity:.85}}.tile-select-on{background:var(--rose);border-color:#fff}.tile-selected{outline:3px solid var(--rose);outline-offset:-3px}.tile-selected img{transform:scale(.94);border-radius:var(--radius)}.tile-actions{display:flex;align-items:center;gap:.35rem;flex-shrink:0}.tile-meta{display:flex;flex-direction:column;min-width:0;line-height:1.3}.tile-name{font-size:.85rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tile-date{font-size:.72rem;opacity:.85}.tile .icon-btn{width:34px;height:34px;flex-shrink:0}.gallery-sentinel{height:1px}.gallery-empty{text-align:center;padding:5rem 1.5rem;color:var(--ink-soft);font-family:var(--font-display);font-style:italic;font-size:1.35rem;letter-spacing:.02em}.selection-bar{position:fixed;left:50%;transform:translate(-50%);bottom:max(.9rem,env(safe-area-inset-bottom));z-index:30;display:flex;align-items:center;gap:.6rem;background:#fff;border:1px solid var(--line);border-radius:999px;box-shadow:0 6px 24px #4a3f3838;padding:.45rem .6rem .45rem 1rem;max-width:94vw}.selection-count{font-size:.88rem;color:var(--ink-soft);white-space:nowrap}@media (max-width: 560px){.selection-bar .btn-label{display:none}}.gallery-counter{position:fixed;right:.9rem;bottom:.9rem;z-index:15;background:#4a3f38d9;color:#fff;font-size:.78rem;padding:.35rem .75rem;border-radius:999px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);pointer-events:none}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#18110ef2;display:flex;align-items:center;justify-content:center}.lightbox-image{max-width:100vw;max-height:100vh;object-fit:contain}.lightbox-close{position:absolute;top:max(.8rem,env(safe-area-inset-top));right:.8rem;z-index:2}.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:2;width:52px;height:52px}.lightbox-prev{left:max(.6rem,env(safe-area-inset-left))}.lightbox-next{right:max(.6rem,env(safe-area-inset-right))}.lightbox-info{position:absolute;left:50%;transform:translate(-50%);bottom:max(.9rem,env(safe-area-inset-bottom));z-index:2;display:flex;align-items:center;gap:.9rem;background:#231914b8;border-radius:999px;padding:.5rem .7rem .5rem 1.2rem;color:#fff;max-width:min(92vw,560px)}.lightbox-meta{display:flex;flex-direction:column;line-height:1.3;min-width:0}.lightbox-name{font-weight:600;font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lightbox-date{font-size:.78rem;opacity:.85}.gate{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1.2rem}.gate-card{background:#fff;border:1px solid rgba(184,154,94,.4);outline:1px solid rgba(184,154,94,.25);outline-offset:4px;border-radius:18px;box-shadow:var(--shadow);padding:2.6rem 2.2rem;max-width:440px;width:100%;text-align:center}.gate-ornament{color:var(--rose);margin-bottom:.8rem}.gate-card h1{font-family:var(--font-display);font-style:italic;font-weight:500;font-size:2.1rem;letter-spacing:.02em;margin-bottom:.7rem}.gate-card p{color:var(--ink-soft);margin-bottom:1.4rem;line-height:1.5}.gate-card form{display:flex;flex-direction:column;gap:.8rem}.gate-card input{font-family:inherit;font-size:1.05rem;text-align:center;padding:.7rem .9rem;border:1px solid var(--line);border-radius:10px;background:var(--ivory);color:var(--ink)}.gate-card input:focus{outline:2px solid var(--rose);outline-offset:1px;border-color:transparent}.gate-error{margin:0!important}.gate-card .btn{justify-content:center;font-size:1.02rem;padding:.7rem 1.1rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#23191480;display:flex;align-items:center;justify-content:center;padding:1rem}.modal{background:#fff;border-radius:18px;box-shadow:var(--shadow);width:100%;max-width:520px;padding:1.5rem}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.1rem}.modal-header h2{font-family:var(--font-display);font-style:italic;font-weight:500;font-size:1.7rem;letter-spacing:.02em}.dropzone{display:flex;flex-direction:column;align-items:center;gap:.7rem;text-align:center;padding:2.4rem 1.4rem;border:2px dashed var(--line);border-radius:var(--radius);color:var(--rose);cursor:pointer;transition:border-color .15s ease,background .15s ease}.dropzone p{color:var(--ink)}.dropzone:hover,.dropzone-active{border-color:var(--rose);background:#a868780d}.dropzone-hint{font-size:.85rem;color:var(--ink-soft)!important;line-height:1.45}.modal-error{margin-top:.9rem;color:#a03030;font-size:.9rem;line-height:1.45}.upload-progress{text-align:center;padding:1rem 0 .4rem}.upload-progress>p:first-child{margin-bottom:1rem}.progress-track{height:10px;border-radius:999px;background:var(--ivory-deep);overflow:hidden}.progress-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--rose),var(--gold));transition:width .2s ease}.progress-percent{margin:.6rem 0 .9rem;font-size:.95rem;color:var(--ink-soft)}.upload-done{text-align:center;padding:.6rem 0 .2rem;display:flex;flex-direction:column;gap:.8rem;align-items:center}.upload-done-headline{font-size:1.05rem;line-height:1.5}
