*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--cream:#f7f4ef;--ink:#1a1814;--mid:#8a8480;--rule:#dedad4}html,body{background:var(--cream);height:100%}.site{flex-direction:column;min-height:100vh;font-family:Georgia,serif;display:flex}nav{opacity:0;justify-content:flex-end;align-items:center;gap:2.5rem;padding:2rem 3rem;animation:.8s .8s forwards fadeUp;display:flex}nav a{letter-spacing:.15em;text-transform:uppercase;color:var(--mid);font-family:Arial,sans-serif;font-size:.78rem;font-weight:300;text-decoration:none;transition:color .2s}nav a:hover,nav a.active{color:var(--ink)}nav a.coming-soon{cursor:not-allowed}.nav-user{align-items:center;gap:.5rem;display:flex}.nav-email{letter-spacing:.08em;color:var(--mid);font-family:Arial,sans-serif;font-size:.78rem;font-weight:300}.nav-sep{color:var(--rule)}.nav-auth{letter-spacing:.15em;text-transform:uppercase;color:var(--mid);cursor:pointer;background:0 0;border:none;padding:0;font-family:Arial,sans-serif;font-size:.78rem;font-weight:300;transition:color .2s}.nav-auth:hover{color:var(--ink)}main{flex-direction:column;flex:1;justify-content:center;align-items:center;padding:2rem 2rem 4rem;display:flex}.portrait-wrap{opacity:0;width:min(340px,80vw);animation:1s .1s forwards fadeUp;position:relative}.portrait-wrap img{filter:grayscale(15%)contrast(1.05);width:100%;display:block}.portrait-wrap:after{content:"";background:radial-gradient(ellipse at center, transparent 55%, var(--cream) 100%);pointer-events:none;position:absolute;inset:0}.name{letter-spacing:.25em;text-transform:uppercase;color:var(--ink);text-align:center;opacity:0;margin-top:1.5rem;font-family:Georgia,serif;font-size:clamp(1.6rem,4vw,2.2rem);font-weight:300;animation:.8s .5s forwards fadeUp}.rule{background:var(--rule);opacity:0;width:40px;height:1px;margin:1.2rem auto 0;animation:.8s .7s forwards fadeUp}.dot{color:var(--rule)}.email:before{content:attr(data-u) "@" attr(data-d);letter-spacing:.08em;color:var(--mid);cursor:pointer;font-family:Arial,sans-serif;font-size:.85rem;transition:color .2s}.email:hover:before{color:var(--ink)}.email{text-align:center;margin-top:1rem;display:block}.social-links{opacity:0;align-items:center;gap:.75rem;margin-top:1rem;animation:.8s .9s forwards fadeUp;display:flex}main.about{justify-content:flex-start;padding-top:4rem}.about-content{width:100%;max-width:560px;padding:0 2rem}.about-content p{color:var(--ink);font-size:1rem;line-height:1.8}footer{text-align:center;letter-spacing:.08em;color:var(--mid);opacity:0;padding:1.5rem;font-family:Arial,sans-serif;font-size:.72rem;animation:.8s 1s forwards fadeUp}@keyframes fadeUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media (width<=480px){nav{gap:1.5rem;padding:1.5rem}}.react-photo-album{display:flex}.react-photo-album,.react-photo-album *{box-sizing:border-box}.react-photo-album--track{align-items:flex-start;display:flex}.react-photo-album--photo{padding:calc(var(--react-photo-album--padding) * 1px);position:relative}.react-photo-album--image{width:100%;height:auto;aspect-ratio:var(--react-photo-album--photo-width) / var(--react-photo-album--photo-height);display:block}.react-photo-album--button{cursor:pointer;border:initial;background:initial}.react-photo-album--masonry{justify-content:space-between}.react-photo-album--masonry .react-photo-album--track{justify-content:flex-start;row-gap:calc(var(--react-photo-album--spacing) * 1px);width:calc((100% - var(--react-photo-album--spacing) * 1px * (var(--react-photo-album--columns) - 1)) / var(--react-photo-album--columns));flex-direction:column}.react-photo-album--masonry .react-photo-album--photo{width:100%}.collage-section{opacity:0;width:min(1200px,96vw);margin-top:3rem;animation:.8s .2s forwards fadeUp}.collage-section [data-has-link=true]{cursor:pointer}.collage-controls{border-top:1px solid var(--rule);justify-content:center;align-items:center;gap:1rem;margin-top:1.5rem;padding-top:1.2rem;display:flex}.collage-controls-label{letter-spacing:.08em;color:var(--mid);align-items:center;gap:.5rem;font-family:Arial,sans-serif;font-size:.78rem;display:flex}.collage-controls-label input{border:none;border-bottom:1px solid var(--rule);letter-spacing:.08em;width:3.5rem;color:var(--ink);text-align:center;background:0 0;outline:none;padding:.2rem .3rem;font-family:Arial,sans-serif;font-size:.78rem;transition:border-color .2s}.collage-controls-label input:focus{border-bottom-color:var(--mid)}.collage-controls button{border:1px solid var(--rule);letter-spacing:.15em;text-transform:uppercase;color:var(--mid);cursor:pointer;background:0 0;padding:.4rem 1.2rem;font-family:Arial,sans-serif;font-size:.72rem;transition:color .2s,border-color .2s}.collage-controls button:hover{color:var(--ink);border-color:var(--mid)}main.login{justify-content:center;align-items:center}.login-box{opacity:0;width:min(360px,90vw);animation:.6s forwards fadeUp}.login-title{letter-spacing:.2em;text-transform:uppercase;color:var(--ink);text-align:center;margin-bottom:2rem;font-family:Georgia,serif;font-size:1.1rem;font-weight:300}.login-hint{color:var(--mid);text-align:center;letter-spacing:.04em;margin-bottom:1.5rem;font-family:Arial,sans-serif;font-size:.82rem}.login-form{flex-direction:column;gap:.75rem;display:flex}.password-wrap{align-items:center;display:flex;position:relative}.password-wrap input{flex:1;padding-right:3rem}.show-btn{letter-spacing:.08em;text-transform:uppercase;color:var(--mid);cursor:pointer;background:0 0;border:none;padding:0;font-family:Arial,sans-serif;font-size:.72rem;transition:color .2s;position:absolute;right:0}.show-btn:hover{color:var(--ink)}.login-form input{border:none;border-bottom:1px solid var(--rule);letter-spacing:.04em;color:var(--ink);background:0 0;outline:none;padding:.6rem 0;font-family:Arial,sans-serif;font-size:.85rem;transition:border-color .2s}.login-form input::placeholder{color:var(--mid)}.login-form input:focus{border-bottom-color:var(--mid)}.login-form button[type=submit]{background:var(--ink);color:var(--cream);letter-spacing:.15em;text-transform:uppercase;cursor:pointer;border:none;margin-top:1.25rem;padding:.65rem;font-family:Arial,sans-serif;font-size:.78rem;transition:opacity .2s}.login-form button[type=submit]:hover:not(:disabled){opacity:.8}.login-form button[type=submit]:disabled{opacity:.5;cursor:not-allowed}.login-error{color:#b04040;letter-spacing:.03em;font-family:Arial,sans-serif;font-size:.78rem}.login-switch{text-align:center;letter-spacing:.06em;color:var(--mid);margin-top:1.5rem;font-family:Arial,sans-serif;font-size:.78rem}.link-btn{font-family:inherit;font-size:inherit;letter-spacing:inherit;color:var(--ink);cursor:pointer;text-underline-offset:2px;background:0 0;border:none;padding:0;text-decoration:underline}.link-btn:hover{color:var(--mid)}main.admin-users{justify-content:flex-start;align-items:center;padding-top:3rem}.admin-title{letter-spacing:.2em;text-transform:uppercase;color:var(--ink);text-align:center;opacity:0;margin-bottom:2.5rem;font-family:Georgia,serif;font-size:1.1rem;font-weight:300;animation:.6s forwards fadeUp}.users-table{border-collapse:collapse;opacity:0;width:min(700px,92vw);animation:.6s .1s forwards fadeUp}.users-table th{letter-spacing:.15em;text-transform:uppercase;color:var(--mid);text-align:left;border-bottom:1px solid var(--rule);padding:0 1rem .75rem 0;font-family:Arial,sans-serif;font-size:.68rem;font-weight:400}.users-table td{letter-spacing:.03em;color:var(--ink);border-bottom:1px solid var(--rule);vertical-align:middle;padding:.75rem 1rem .75rem 0;font-family:Arial,sans-serif;font-size:.82rem}.status-ok{color:var(--mid)}.status-pending{color:#b08040}.admin-none{color:var(--rule)}.admin-loading,.admin-empty,.admin-error{letter-spacing:.06em;color:var(--mid);text-align:center;font-family:Arial,sans-serif;font-size:.82rem}.admin-error{color:#b04040}main.admin-collage{justify-content:flex-start;align-items:center;padding-top:2.5rem;padding-bottom:4rem}.ac-title{letter-spacing:.2em;text-transform:uppercase;color:var(--ink);text-align:center;opacity:0;margin-bottom:2.5rem;font-family:Georgia,serif;font-size:1.1rem;font-weight:300;animation:.6s forwards fadeUp}.ac-section-title{letter-spacing:.15em;text-transform:uppercase;color:var(--mid);margin-bottom:.75rem;font-family:Arial,sans-serif;font-size:.72rem;font-weight:400}.ac-upload{border-bottom:1px solid var(--rule);width:min(900px,94vw);margin-bottom:2rem;padding-bottom:2rem}.ac-upload-row{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.ac-file-input{color:var(--mid);cursor:pointer;font-family:Arial,sans-serif;font-size:.78rem}.ac-text-input{border:none;border-bottom:1px solid var(--rule);letter-spacing:.03em;min-width:140px;color:var(--ink);background:0 0;outline:none;flex:1;padding:.5rem 0;font-family:Arial,sans-serif;font-size:.82rem;transition:border-color .2s}.ac-text-input::placeholder{color:var(--mid)}.ac-text-input:focus{border-bottom-color:var(--mid)}.ac-btn-primary{background:var(--ink);color:var(--cream);letter-spacing:.15em;text-transform:uppercase;cursor:pointer;white-space:nowrap;border:none;padding:.5rem 1.5rem;font-family:Arial,sans-serif;font-size:.72rem;transition:opacity .2s}.ac-btn-primary:hover:not(:disabled){opacity:.8}.ac-btn-primary:disabled{opacity:.4;cursor:not-allowed}.ac-error{color:#b04040;margin-top:.5rem;font-family:Arial,sans-serif;font-size:.78rem}.ac-hint{color:var(--mid);letter-spacing:.04em;margin-top:.5rem;font-family:Arial,sans-serif;font-size:.78rem}.ac-sort-bar{flex-wrap:wrap;align-items:center;gap:.5rem;width:min(900px,94vw);margin-bottom:1rem;display:flex}.ac-sort-label{letter-spacing:.12em;text-transform:uppercase;color:var(--mid);margin-right:.25rem;font-family:Arial,sans-serif;font-size:.72rem}.sort-btn{border:1px solid var(--rule);letter-spacing:.1em;text-transform:uppercase;color:var(--mid);cursor:pointer;background:0 0;padding:.3rem .75rem;font-family:Arial,sans-serif;font-size:.72rem;transition:color .2s,border-color .2s}.sort-btn:hover,.sort-btn.sort-active{color:var(--ink);border-color:var(--mid)}.ac-table{border-collapse:collapse;width:min(900px,94vw)}.ac-table th{letter-spacing:.15em;text-transform:uppercase;color:var(--mid);text-align:left;border-bottom:1px solid var(--rule);padding:0 .75rem .6rem 0;font-family:Arial,sans-serif;font-size:.68rem;font-weight:400}.ac-table td{letter-spacing:.02em;color:var(--ink);border-bottom:1px solid var(--rule);vertical-align:middle;padding:.6rem .75rem .6rem 0;font-family:Arial,sans-serif;font-size:.82rem}.ac-thumb-cell{width:60px}.ac-thumb{object-fit:cover;width:52px;height:52px;display:block}.ac-text-cell{max-width:200px}.ac-link-cell{text-overflow:ellipsis;white-space:nowrap;max-width:200px;overflow:hidden}.ac-link-cell a{color:var(--mid);text-underline-offset:2px;font-size:.75rem;text-decoration:underline}.ac-link-cell a:hover{color:var(--ink)}.ac-none{color:var(--rule)}.ac-edit-input{border:none;border-bottom:1px solid var(--mid);width:100%;color:var(--ink);background:0 0;outline:none;padding:.3rem 0;font-family:Arial,sans-serif;font-size:.82rem}.ac-actions{white-space:nowrap;width:160px}.ac-actions button{letter-spacing:.1em;text-transform:uppercase;cursor:pointer;background:0 0;border:none;padding:.2rem .5rem;font-family:Arial,sans-serif;font-size:.72rem;transition:color .2s}.ac-btn-edit{color:var(--mid)}.ac-btn-edit:hover{color:var(--ink)}.ac-btn-delete{color:var(--mid)}.ac-btn-delete:hover,.ac-btn-confirm-delete{color:#b04040}.ac-btn-save{color:var(--ink)}.ac-btn-cancel{color:var(--mid)}.ac-empty,.ac-loading{letter-spacing:.06em;color:var(--mid);text-align:center;margin-top:2rem;font-family:Arial,sans-serif;font-size:.82rem}main.account{justify-content:center;align-items:center}.account-box{opacity:0;width:min(360px,90vw);animation:.6s forwards fadeUp}.account-title{letter-spacing:.2em;text-transform:uppercase;color:var(--ink);text-align:center;margin-bottom:2rem;font-family:Georgia,serif;font-size:1.1rem;font-weight:300}.account-form{flex-direction:column;gap:.75rem;display:flex}.account-label{letter-spacing:.12em;text-transform:uppercase;color:var(--mid);font-family:Arial,sans-serif;font-size:.72rem}.account-form input{border:none;border-bottom:1px solid var(--rule);letter-spacing:.04em;color:var(--ink);background:0 0;outline:none;padding:.6rem 0;font-family:Arial,sans-serif;font-size:.85rem;transition:border-color .2s}.account-form input:focus{border-bottom-color:var(--mid)}.account-form button[type=submit]{background:var(--ink);color:var(--cream);letter-spacing:.15em;text-transform:uppercase;cursor:pointer;border:none;margin-top:1.25rem;padding:.65rem;font-family:Arial,sans-serif;font-size:.78rem;transition:opacity .2s}.account-form button[type=submit]:hover:not(:disabled){opacity:.8}.account-form button[type=submit]:disabled{opacity:.5;cursor:not-allowed}.account-error{color:#b04040;letter-spacing:.03em;font-family:Arial,sans-serif;font-size:.78rem}.account-saved{letter-spacing:.08em;color:var(--mid);font-family:Arial,sans-serif;font-size:.78rem}
