@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,400;0,500;0,600;1,400&display=swap";:root{--bg: #f5f2ed;--fg: #1a1a1a;--fg-muted: #6b6b6b;--border: #d0ccc4;--accent: #c43d2e;--surface: #eae6df;--font-mono: "IBM Plex Mono", "SFMono-Regular", "Consolas", monospace;--max-width: 960px;--radius: 2px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:15px;-webkit-font-smoothing:antialiased}body{font-family:var(--font-mono);background-color:var(--bg);color:var(--fg);line-height:1.6;min-height:100dvh}body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:9999;opacity:.03;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E");background-repeat:repeat}h1,h2,h3{font-weight:600;letter-spacing:-.02em;line-height:1.3}h1{font-size:1.5rem}h2{font-size:1.15rem}h3{font-size:1rem}a{color:var(--fg);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;transition:color .15s}a:hover{color:var(--accent)}input,textarea,select{font-family:var(--font-mono);font-size:.9rem;padding:.5rem .6rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--fg);width:100%;outline:none;transition:border-color .15s}input:focus,textarea:focus,select:focus{border-color:var(--fg)}textarea{resize:vertical;min-height:80px}label{display:block;font-size:.8rem;font-weight:500;text-transform:lowercase;margin-bottom:1rem;color:var(--fg-muted)}label input,label textarea,label select{margin-top:.3rem;color:var(--fg)}button,.btn{font-family:var(--font-mono);font-size:.85rem;font-weight:500;padding:.5rem 1rem;border:1px solid var(--fg);border-radius:var(--radius);background:var(--fg);color:var(--bg);cursor:pointer;transition:all .15s;text-decoration:none;display:inline-block}button:hover,.btn:hover{background:transparent;color:var(--fg)}button:disabled{opacity:.4;cursor:not-allowed}button.secondary{background:transparent;color:var(--fg)}button.secondary:hover{background:var(--fg);color:var(--bg)}button.text-btn{border:none;background:none;color:var(--fg);padding:0;text-decoration:underline;text-underline-offset:2px}button.text-btn:hover{color:var(--accent)}.container{max-width:var(--max-width);margin:0 auto;padding:0 1.5rem}nav.top-nav{border-bottom:1px solid var(--border);padding:1rem 0;margin-bottom:2rem}nav.top-nav .nav-inner{max-width:var(--max-width);margin:0 auto;padding:0 1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}nav.top-nav .site-name{font-weight:600;font-size:1.1rem;text-decoration:none;letter-spacing:-.03em}nav.top-nav .nav-links{display:flex;align-items:center;gap:.3rem;font-size:.85rem}nav.top-nav .nav-links .sep{color:var(--border);-webkit-user-select:none;user-select:none}nav.top-nav .upload-btn{border:1px solid var(--fg);padding:.2rem .6rem;border-radius:var(--radius);text-decoration:none;font-weight:600;transition:all .15s}nav.top-nav .upload-btn:hover{background:var(--fg);color:var(--bg)}.auth-page{max-width:360px;margin:2rem auto;padding:0 1.5rem}.auth-page h1,.auth-page form{margin-bottom:1.5rem}.auth-page button[type=submit]{width:100%;margin-top:.5rem}.auth-page .alt-link{font-size:.8rem;color:var(--fg-muted)}.error{font-size:.8rem;color:var(--accent);margin-bottom:.5rem}.photo-grid{columns:2;column-gap:1.5rem}.photo-card{position:relative;overflow:hidden;border-radius:var(--radius);break-inside:avoid;margin-bottom:1.5rem}.photo-card img{width:100%;display:block;border-radius:var(--radius);filter:contrast(1.02) saturate(.95);transition:filter .3s}.photo-card:hover img{filter:contrast(1.05) saturate(1)}.photo-card .card-info{padding:.6rem 0;font-size:.8rem}.photo-card .card-info .caption{color:var(--fg);margin-bottom:.15rem}.photo-card .card-info .meta{color:var(--fg-muted);font-size:.75rem}.photo-detail{max-width:1200px;margin:0 auto;padding:0 1.5rem 3rem}.photo-detail .photo-main{margin:-2rem -1.5rem 1.5rem;padding:2rem 1.5rem;display:flex;flex-direction:column;align-items:center}.photo-detail .photo-main img{max-width:100%;max-height:80vh;object-fit:contain;display:block;border-radius:var(--radius)}.photo-detail .photo-caption{color:var(--fg);font-size:.95rem;margin-bottom:.4rem;line-height:1.5}.photo-detail .photo-byline{font-size:.8rem;color:var(--fg-muted);margin-bottom:1rem}.photo-detail .photo-byline a{font-weight:500;color:var(--fg)}.photo-detail .photo-byline .sep{margin:0 .3rem;color:var(--border)}.photo-detail .tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:1rem}.tag{font-size:.75rem;padding:.2rem .5rem;border:1px solid var(--border);border-radius:var(--radius);text-decoration:none;color:var(--fg-muted);transition:all .15s}.tag:hover{border-color:var(--fg);color:var(--fg)}.tag.active{background:var(--fg);color:var(--bg);border-color:var(--fg)}.filter-tags{margin-bottom:2.5rem;padding-bottom:2rem;border-bottom:1px solid var(--border)}.filter-group{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem;margin-bottom:.75rem}.filter-group:last-child{margin-bottom:0}.filter-label{font-size:.95rem;font-weight:600;letter-spacing:-.02em;color:var(--fg);min-width:5rem}.hashtag{font-size:.8rem;color:var(--fg-muted);text-decoration:none;transition:color .15s}.hashtag:hover{color:var(--fg)}.comments-section{border-top:1px solid var(--border);padding-top:1.5rem}.comments-section h2{margin-bottom:1rem}.comment{margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}.comment:last-child{border-bottom:none}.comment .comment-header{display:flex;align-items:center;gap:.5rem;font-size:.8rem;margin-bottom:.3rem}.comment .comment-header .author{font-weight:500}.comment .comment-header .date{color:var(--fg-muted)}.comment .comment-body{font-size:.85rem;line-height:1.5}.comment-form{margin-top:1rem}.comment-form textarea{margin-bottom:.5rem}.actions-bar{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem;font-size:.85rem}.like-btn{font-family:var(--font-mono);background:none;border:none;padding:0;cursor:pointer;font-size:.85rem;color:var(--fg);transition:color .15s}.like-btn:hover,.like-btn.liked{color:var(--accent)}.liked-by{font-size:.8rem;color:var(--fg-muted)}.profile-header{margin-bottom:2rem}.profile-top{display:flex;align-items:center;gap:1rem;margin-bottom:.25rem}.profile-avatar{width:72px;height:72px;border-radius:50%;object-fit:cover;flex-shrink:0;border:1px solid var(--border)}.profile-avatar-placeholder{width:72px;height:72px;border-radius:50%;background:var(--surface);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:1.5rem;font-weight:600;color:var(--fg-muted);text-transform:lowercase;flex-shrink:0}.profile-identity h1{margin-bottom:.1rem}.profile-stats{font-size:.75rem;color:var(--fg-muted)}.profile-bio{margin-top:.75rem;font-size:.9rem;line-height:1.6;color:var(--fg);max-width:520px;white-space:pre-line}.profile-socials{display:flex;gap:.75rem;margin-top:.75rem}.social-link{font-size:.8rem;color:var(--fg-muted);text-decoration:none;border:1px solid var(--border);padding:.2rem .5rem;border-radius:var(--radius);transition:all .15s}.social-link:hover{border-color:var(--fg);color:var(--fg)}.profile-edit{display:inline-block;margin-top:.75rem;font-size:.8rem;color:var(--fg-muted)}.social-fields{border:none;padding:0;margin:0 0 1rem}.social-fields legend{font-size:.85rem;font-weight:500;color:var(--fg-muted);text-transform:lowercase;margin-bottom:.75rem}.settings-section{margin-bottom:2rem}.settings-section h2{margin-bottom:1rem}.avatar-upload{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}.avatar-current .avatar-img{width:80px;height:80px;border-radius:50%;object-fit:cover;border:1px solid var(--border)}.avatar-current .avatar-placeholder{width:80px;height:80px;border-radius:50%;background:var(--surface);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:1.8rem;font-weight:600;color:var(--fg-muted);text-transform:lowercase}.avatar-controls{display:flex;flex-direction:column;gap:.25rem}.avatar-file-label{display:inline-block;font-size:.8rem;color:var(--fg);cursor:pointer;text-decoration:underline;text-underline-offset:2px;margin-bottom:0}.avatar-file-label:hover{color:var(--accent)}.avatar-hint{font-size:.7rem;color:var(--fg-muted)}.upload-page{max-width:520px;margin:0 auto;padding:0 1.5rem 3rem}.upload-page h1{margin-bottom:1.5rem}.file-input-wrapper{border:2px dashed var(--border);border-radius:var(--radius);padding:2rem;text-align:center;margin-bottom:1.5rem;cursor:pointer;transition:border-color .15s;position:relative;overflow:hidden}.file-input-wrapper:hover{border-color:var(--fg-muted)}.file-input-wrapper.has-preview{border-style:solid;padding:0}.file-input-wrapper.dragging{border-color:var(--fg);background:var(--surface)}.file-input-wrapper input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer;z-index:2}.file-input-wrapper .placeholder{font-size:.85rem;color:var(--fg-muted)}.file-input-wrapper .preview-img{width:100%;max-height:240px;object-fit:contain;display:block}.file-input-wrapper .change-hint{display:block;font-size:.75rem;color:var(--fg-muted);padding:.4rem 0;transition:color .15s}.file-input-wrapper:hover .change-hint{color:var(--fg)}.pagination{display:flex;justify-content:center;gap:1rem;margin-top:2rem;padding-bottom:2rem;font-size:.85rem}.empty{text-align:center;color:var(--fg-muted);font-size:.85rem;padding:3rem 1rem}.loading{color:var(--fg-muted);font-size:.85rem;text-align:center;padding:2rem 0}.scroll-sentinel{min-height:1px}.edit-form{margin-bottom:2rem;max-width:480px}.upload-status{font-size:.8rem;color:var(--fg-muted);margin-top:.5rem}@media(max-width:600px){html{font-size:14px}.photo-grid{columns:1}nav.top-nav .nav-inner{flex-direction:column;align-items:flex-start}}
